0

WSO2 ESB 490 でカスタム プロキシ サービスを作成します。

<?xml version="1.0" encoding="UTF-8"?>
<proxy xmlns="http://ws.apache.org/ns/synapse"
       name="write_2_greg"
       transports="https,http"
       statistics="disable"
       trace="enable"
       startOnLoad="true">
   <target>
      <inSequence>
         <payloadFactory media-type="json">
            <format>
		{"name":"2rest_test","context":"/ressttest2","type":"restservice","version":"1.0.0"}
	</format>
            <args/>
         </payloadFactory>
         <property name="DISABLE_CHUNKING"
                   value="true"
                   scope="axis2"
                   type="STRING"/>
         <property name="Accept"
                   expression="$trp:Accept"
                   scope="default"
                   type="STRING"/>
         <property name="messageType"
                   value="application/json"
                   scope="axis2"
                   type="STRING"/>
         <property name="Authorization"
                   expression="fn:concat('Basic ',base64Encode('admin:admin'))"
                   scope="transport"
                   type="STRING"/>
         <call>
            <endpoint>
               <http trace="enable"
                     method="POST"
                     uri-template="https://localhost:9443/governance/restservices"/>
            </endpoint>
         </call>
         <property xmlns:ns="http://org.apache.synapse/xsd"
                   name="__Status"
                   expression="$axis2:HTTP_SC"
                   scope="default"
                   type="STRING"/>
         <enrich>
            <source type="body" clone="true"/>
            <target type="property" property="res_body"/>
         </enrich>
         <log level="custom">
            <property name="__Status" expression="$ctx:__Status"/>
            <property name="res_body--" expression="get-property('res_body')"/>
         </log>
      </inSequence>
      <outSequence/>
      <faultSequence/>
   </target>
   <description/>
</proxy>

この単純なプロキシは、GREG への新しい restservice を作成するだけで、GREG REST API を使用します。しかし、このプロキシ サービス、GREG 応答 500 ステータス コードを実行し、GREG ログを確認すると、Jackson エラーのようです。

Caused by: org.codehaus.jackson.map.JsonMappingException: Can not construct instance of org.wso2.carbon.governance.api.generic.dataobjects.GenericArtifact, problem: abstract types can only be instantiated with additional type information
 at [Source: org.apache.cxf.transport.http.AbstractHTTPDestination$1@4d4489c7; line: 1, column: 1]
	at org.codehaus.jackson.map.JsonMappingException.from(JsonMappingException.java:163)
	at org.codehaus.jackson.map.deser.StdDeserializationContext.instantiationException(StdDeserializationContext.java:212)
	at org.codehaus.jackson.map.deser.AbstractDeserializer.deserialize(AbstractDeserializer.java:97)
	at org.codehaus.jackson.map.ObjectMapper._readValue(ObjectMapper.java:2376)
	at org.codehaus.jackson.map.ObjectMapper.readValue(ObjectMapper.java:1166)
	at org.codehaus.jackson.jaxrs.JacksonJsonProvider.readFrom(JacksonJsonProvider.java:410)
	at org.apache.cxf.jaxrs.utils.JAXRSUtils.readFromMessageBodyReader(JAXRSUtils.java:1262)
	at org.apache.cxf.jaxrs.utils.JAXRSUtils.readFromMessageBody(JAXRSUtils.java:1209)
	at org.apache.cxf.jaxrs.utils.JAXRSUtils.processParameter(JAXRSUtils.java:757)
	at org.apache.cxf.jaxrs.utils.JAXRSUtils.processParameters(JAXRSUtils.java:716)
	at org.apache.cxf.jaxrs.interceptor.JAXRSInInterceptor.processRequest(JAXRSInInterceptor.java:253)
	... 40 more

しかし、「Advanced Rest Client Application」(Chrome プラグイン) で使用される新しい restservice を作成できます。 ここに画像の説明を入力

ところで、これを ESB 490 、 GREG 510 、および GREG 520 でテストします。ESB で使用されるこれを実現するにはどうすればよいですか?

4

1 に答える 1