Ошибка обработчика сообщений WSO2: система не может вывести информацию о транспорте из URL-адреса конечной точки - PullRequest
0 голосов
/ 18 марта 2020

Я новичок в WSO2. Я создал прокси-сервис, который получает сообщения, а затем сохраняет их в очереди сообщений jms в WSO2 Message Broker. Сообщения из очереди сообщений затем обрабатываются процессором сообщений, который направляет их в бэкэнд-сервис для обработки. Вся конфигурация выполняется в соответствии с документацией, предоставленной WSO2 по адресу https://docs.wso2.com/display/ESB481/Store+and+Forward+Using+JMS+Message+Stores

. Сообщение успешно сохраняется в очереди сообщений, и я вижу его из консоли управления брокером сообщений. Но когда обработчик сообщений читает сообщение для отправки его на сервер для обработки, я получаю следующую ошибку

ОШИБКА - Client Utils. Система не может определить, что система не может определить информацию о транспорте из services / test.testHttpSoap12Endpoint URL

Я искал дни, но не смог решить эту проблему.

Следующее мои настройки.

`

<?xml version="1.0" encoding="UTF-8"?>
<proxy xmlns="http://ws.apache.org/ns/synapse"
       name="abdtest"
       startOnLoad="true"
       statistics="disable"
       trace="disable"
       transports="http,https">
   <target>
      <inSequence>
         <property name="OUT_ONLY" value="false"/>
         <property name="FORCE_SC_ACCEPTED" scope="axis2" value="true"/>
         <store messageStore="testingstore"/>
      </inSequence>
   </target>
   <publishWSDL preservePolicy="true"
                uri="http://10.100.32.65:8280/services/GetDataDSS?wsdl"/>
   <description/>
</proxy>
      `

Настройки хранилища сообщений `

<messageStore name="testingstore" class="org.apache.synapse.message.store.impl.jms.JmsStore" xmlns="http://ws.apache.org/ns/synapse">
   <parameter name="java.naming.factory.initial">org.wso2.andes.jndi.PropertiesFileInitialContextFactory</parameter>
   <parameter name="java.naming.provider.url">conf/jndi.properties</parameter>
   <parameter name="store.jms.destination">testingstore</parameter>
   <parameter name="store.jms.JMSSpecVersion">1.1</parameter>
   <parameter name="store.producer.guaranteed.delivery.enable">false</parameter>
   <parameter name="store.failover.message.store.name">testingstore</parameter>
</messageStore>

**Message Processor Settings**

<messageProcessor name="Mb_MsgProcessor" class="org.apache.synapse.message.processor.impl.forwarder.ScheduledMessageForwardingProcessor" targetEndpoint="GetDataDSS" messageStore="testingstore" xmlns="http://ws.apache.org/ns/synapse">
   <parameter name="interval">1000</parameter>
   <parameter name="client.retry.interval">1000</parameter>
   <parameter name="max.delivery.attempts">1</parameter>
   <parameter name="max.store.connection.attempts">-1</parameter>
   <parameter name="store.connection.retry.interval">1000</parameter>
   <parameter name="message.processor.failMessagesStore">testingstore</parameter>
   <parameter name="is.active">true</parameter>
   <parameter name="max.delivery.drop">Disabled</parameter>
   <parameter name="member.count">1</parameter>
</messageProcessor> 

`

Конфигурация EndPoint `

<endpoint xmlns="http://ws.apache.org/ns/synapse" name="GetDataDSS">
   <wsdl uri="http://10.100.32.65:8280/services/GetDataDSS?wsdl" service="GetDataDSS" port="SOAP11Endpoint">
      <suspendOnFailure>
         <progressionFactor>1.0</progressionFactor>
      </suspendOnFailure>
      <markForSuspension>
         <retriesBeforeSuspension>0</retriesBeforeSuspension>
         <retryDelay>0</retryDelay>
      </markForSuspension>
   </wsdl>
</endpoint>
                `    

Серверная служба, созданная In wso2 esb DSS `

<data enableBatchRequests="true" name="GetDataDSS" transports="http https">
   <config enableOData="false" id="Testing">
      <property name="driverClassName">com.microsoft.sqlserver.jdbc.SQLServerDriver</property>
      <property name="url">jdbc:sqlserver://10.XXXX.XX.57:1433;databaseName=Test</property>
      <property name="username">XXXXXXXX</property>
      <property name="password">XXXXXXXX</property>
   </config>
   <query id="GetDataForDSS" useConfig="Testing">
      <sql>SELECT UserID,UserName,Password,AdminCode&#xd;FROM [Test].[dbo].[tbl_User]</sql>
      <result element="Entries" rowName="Entry">
         <element column="UserID" name="UserID" xsdType="string"/>
         <element column="UserName" name="UserName" xsdType="string"/>
         <element column="Password" name="Password" xsdType="string"/>
         <element column="AdminCode" name="AdminCode" xsdType="string"/>
      </result>
   </query>
   <operation name="GetData">
      <call-query href="GetDataForDSS"/>
   </operation>
</data>

`

** Backend dataservice WSDL **`

<wsdl:definitions xmlns:wsdl="http://schemas.xmlsoap.org/wsdl/" xmlns:wsaw="http://www.w3.org/2006/05/addressing/wsdl" xmlns:mime="http://schemas.xmlsoap.org/wsdl/mime/" xmlns:http="http://schemas.xmlsoap.org/wsdl/http/" xmlns:ns0="http://ws.wso2.org/dataservice" xmlns:xs="http://www.w3.org/2001/XMLSchema" xmlns:soap12="http://schemas.xmlsoap.org/wsdl/soap12/" xmlns:soap="http://schemas.xmlsoap.org/wsdl/soap/" targetNamespace="http://ws.wso2.org/dataservice">
<wsdl:documentation/>
<wsdl:types>
<xs:schema attributeFormDefault="unqualified" elementFormDefault="qualified" targetNamespace="http://ws.wso2.org/dataservice">
<xs:element name="DataServiceFault">
<xs:complexType>
<xs:sequence>
<xs:element name="current_params" type="xs:string"/>
<xs:element name="current_request_name" type="xs:string"/>
<xs:element name="nested_exception" type="xs:string"/>
<xs:element name="source_data_service">
<xs:complexType>
<xs:sequence>
<xs:element name="location" type="xs:string"/>
<xs:element name="default_namespace" type="xs:string"/>
<xs:element name="description" type="xs:string"/>
<xs:element name="data_service_name" type="xs:string"/>
</xs:sequence>
</xs:complexType>
</xs:element>
<xs:element name="ds_code" type="xs:string"/>
</xs:sequence>
</xs:complexType>
</xs:element>
<xs:element name="REQUEST_STATUS" type="xs:string"/>
<xs:element name="DATA_SERVICE_RESPONSE">
<xs:complexType>
<xs:sequence>
<xs:any minOccurs="0"/>
</xs:sequence>
</xs:complexType>
</xs:element>
<xs:element name="GetData">
<xs:complexType>
<xs:sequence/>
</xs:complexType>
</xs:element>
<xs:element name="Entries" type="ns0:Entries"/>
<xs:complexType name="Entries">
<xs:sequence>
<xs:element maxOccurs="unbounded" minOccurs="0" name="Entry" type="ns0:Entry"/>
</xs:sequence>
</xs:complexType>
<xs:complexType name="Entry">
<xs:sequence>
<xs:element name="UserID" nillable="true" type="xs:string"/>
<xs:element name="UserName" nillable="true" type="xs:string"/>
<xs:element name="Password" nillable="true" type="xs:string"/>
<xs:element name="AdminCode" nillable="true" type="xs:string"/>
</xs:sequence>
</xs:complexType>
</xs:schema>
</wsdl:types>
<wsdl:message name="GetDataRequest">
<wsdl:part name="parameters" element="ns0:GetData"/>
</wsdl:message>
<wsdl:message name="GetDataResponse">
<wsdl:part name="parameters" element="ns0:Entries"/>
</wsdl:message>
<wsdl:message name="DataServiceFault">
<wsdl:part name="parameters" element="ns0:DataServiceFault"/>
</wsdl:message>
<wsdl:portType name="GetDataDSSPortType">
<wsdl:operation name="GetData">
<wsdl:documentation/>
<wsdl:input message="ns0:GetDataRequest" wsaw:Action="urn:GetData"/>
<wsdl:output message="ns0:GetDataResponse" wsaw:Action="urn:GetDataResponse"/>
<wsdl:fault message="ns0:DataServiceFault" name="DataServiceFault" wsaw:Action="urn:GetDataDataServiceFault"/>
</wsdl:operation>
</wsdl:portType>
<wsdl:binding name="GetDataDSSSOAP11Binding" type="ns0:GetDataDSSPortType">
<soap:binding transport="http://schemas.xmlsoap.org/soap/http" style="document"/>
<wsdl:operation name="GetData">
<soap:operation soapAction="urn:GetData" style="document"/>
<wsdl:input>
<soap:body use="literal"/>
</wsdl:input>
<wsdl:output>
<soap:body use="literal"/>
</wsdl:output>
<wsdl:fault name="DataServiceFault">
<soap:fault use="literal" name="DataServiceFault"/>
</wsdl:fault>
</wsdl:operation>
</wsdl:binding>
<wsdl:binding name="GetDataDSSSOAP12Binding" type="ns0:GetDataDSSPortType">
<soap12:binding transport="http://schemas.xmlsoap.org/soap/http" style="document"/>
<wsdl:operation name="GetData">
<soap12:operation soapAction="urn:GetData" style="document"/>
<wsdl:input>
<soap12:body use="literal"/>
</wsdl:input>
<wsdl:output>
<soap12:body use="literal"/>
</wsdl:output>
<wsdl:fault name="DataServiceFault">
<soap12:fault use="literal" name="DataServiceFault"/>
</wsdl:fault>
</wsdl:operation>
</wsdl:binding>
<wsdl:binding name="GetDataDSSHttpBinding" type="ns0:GetDataDSSPortType">
<http:binding verb="POST"/>
<wsdl:operation name="GetData">
<http:operation location="GetData"/>
<wsdl:input>
<mime:content type="text/xml" part="parameters"/>
</wsdl:input>
<wsdl:output>
<mime:content type="text/xml" part="parameters"/>
</wsdl:output>
</wsdl:operation>
</wsdl:binding>
<wsdl:service name="GetDataDSS">
<wsdl:port name="SecureSOAP11Endpoint" binding="ns0:GetDataDSSSOAP11Binding">
<soap:address location="https://XXXXXX:8243/services/GetDataDSS.SecureSOAP11Endpoint"/>
</wsdl:port>
<wsdl:port name="SOAP11Endpoint" binding="ns0:GetDataDSSSOAP11Binding">
<soap:address location="http://XXXXXX:8280/services/GetDataDSS.SOAP11Endpoint"/>
</wsdl:port>
<wsdl:port name="SecureSOAP12Endpoint" binding="ns0:GetDataDSSSOAP12Binding">
<soap12:address location="https://XXXXXX:8243/services/GetDataDSS.SecureSOAP12Endpoint"/>
</wsdl:port>
<wsdl:port name="SOAP12Endpoint" binding="ns0:GetDataDSSSOAP12Binding">
<soap12:address location="http://XXXXXX:8280/services/GetDataDSS.SOAP12Endpoint"/>
</wsdl:port>
<wsdl:port name="SecureHTTPEndpoint" binding="ns0:GetDataDSSHttpBinding">
<http:address location="https://XXXXXX:8243/services/GetDataDSS.SecureHTTPEndpoint"/>
</wsdl:port>
<wsdl:port name="HTTPEndpoint" binding="ns0:GetDataDSSHttpBinding">
<http:address location="http://XXXXXX:8280/services/GetDataDSS.HTTPEndpoint"/>
</wsdl:port>
</wsdl:service>
</wsdl:definitions>

`

Ответы [ 2 ]

0 голосов
/ 20 марта 2020

После опробования всех возможных решений на inte rnet. Я решил проблему, выполнив следующее:

1) Некоторые из них не учитывали свойства транспорта, поэтому я заменил конечную точку wsdl на конечную точку API.

2) Еще одна вещь, которую мне не хватало, это то, что я не написал последовательность ответов в обработчике сообщений, который обрабатывает ответ от бэкэнд-службы.

После внесения этих изменений он работал как прелесть!

0 голосов
/ 19 марта 2020

При анализе ошибки кажется, что это вызывает конечную точку, которая не определена в артефактах синапса.

ERROR- Client Utils. The system cannot infer the the system cannot infer the transport information from the services/test.testHttpSoap12Endpoint URL

Это может быть связано с добавлением контекста при добавлении сообщений в хранилище сообщений. , Чтобы удалить контекст, убедитесь, что вы добавили следующее свойство перед добавлением сообщений в хранилище сообщений.

<property name="REST_URL_POSTFIX" scope="axis2" action="remove"/>

Кроме того, поскольку вы вызываете SOAP бэкэнд, обязательно добавьте соответствующее действие SOAP при добавлении сообщений в хранилище сообщений

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...