Web services WSO2直通代理服务中的Lotus Domino Web服务

Web services WSO2直通代理服务中的Lotus Domino Web服务,web-services,wsdl,wso2,wso2esb,lotus-domino,Web Services,Wsdl,Wso2,Wso2esb,Lotus Domino,我在WSO2上为LotusDominoWeb服务创建了一个直通代理。 以下是该服务的WSDL: <?xml version="1.0" encoding="UTF-8"?> <definitions targetNamespace="urn:DefaultNamespace" xmlns="http://schemas.xmlsoap.org/wsdl/" xmlns:apachesoap="http://xml.apache.org/xml-soap"

我在WSO2上为LotusDominoWeb服务创建了一个直通代理。 以下是该服务的WSDL:

    <?xml version="1.0" encoding="UTF-8"?>
   <definitions targetNamespace="urn:DefaultNamespace"
    xmlns="http://schemas.xmlsoap.org/wsdl/" xmlns:apachesoap="http://xml.apache.org/xml-soap"
    xmlns:impl="urn:DefaultNamespace" xmlns:intf="urn:DefaultNamespace"
    xmlns:soapenc="http://schemas.xmlsoap.org/soap/encoding/" xmlns:wsdl="http://schemas.xmlsoap.org/wsdl/"
    xmlns:wsdlsoap="http://schemas.xmlsoap.org/wsdl/soap/" xmlns:xsd="http://www.w3.org/2001/XMLSchema">
    <wsdl:types>
        <schema targetNamespace="urn:DefaultNamespace" xmlns="http://www.w3.org/2001/XMLSchema">
            <element name="DODAJNAPIS">
                <complexType>
                    <sequence>
                        <element name="WST1INPUT1" type="impl:WST1INPUT" />
                    </sequence>
                </complexType>
            </element>
            <complexType name="WST1INPUT">
                <sequence>
                    <element name="INPUT1" nillable="true" type="xsd:string" />
                    <element name="INPUT2" nillable="true" type="xsd:string" />
                </sequence>
            </complexType>
            <element name="DODAJNAPISResponse">
                <complexType>
                    <sequence>
                        <element name="DODAJNAPISReturn" type="impl:WST1OUTPUT" />
                    </sequence>
                </complexType>
            </element>
            <complexType name="WST1OUTPUT">
                <sequence>
                    <element name="OUTPUT1" nillable="true" type="xsd:string" />
                    <element name="OUTPUT2" nillable="true" type="xsd:string" />
                </sequence>
            </complexType>
        </schema>
    </wsdl:types>
    <message name="DODAJNAPISResponse">
        <part element="impl:DODAJNAPISResponse" name="parameters" />
    </message>
    <message name="DODAJNAPISRequest">
        <part element="impl:DODAJNAPIS" name="parameters" />
    </message>
    <portType name="WSO2ProviderClass">
        <operation name="DODAJNAPIS">
            <input message="impl:DODAJNAPISRequest" name="DODAJNAPISRequest" />
            <output message="impl:DODAJNAPISResponse" name="DODAJNAPISResponse" />
        </operation>
    </portType>
    <binding name="DominoSoapBinding" type="impl:WSO2ProviderClass">
        <wsdlsoap:binding style="document"
            transport="http://schemas.xmlsoap.org/soap/http" />
        <operation name="DODAJNAPIS">
            <wsdlsoap:operation soapAction="DODAJNAPIS" />
            <input name="DODAJNAPISRequest">
                <wsdlsoap:body use="literal" />
            </input>
            <output name="DODAJNAPISResponse">
                <wsdlsoap:body use="literal" />
            </output>
        </operation>
    </binding>
    <service name="WSO2ProviderClassService">
        <port binding="impl:DominoSoapBinding" name="Domino">
            <wsdlsoap:address
                location="http://firmaa.mis.eu:80/firmaa/b2b/finanse.nsf/WST1?OpenWebService" />
        </port>
    </service>
</definitions>
我注意到dominowebservice没有收到任何请求(我根据请求记录输入值,而日志是空的)


我不知道问题出在哪里,也不知道如何解决它以使其正常工作。。。你知道该怎么做吗?

请检查在firmaa/b2b/finanse.nsf的ACL中允许匿名用户时,它是否有效。然后您需要解决身份验证问题


进一步看WSDL,我认为WS在Domino服务器上被定义为可读格式,看看如何将其更改为RPC/编码。

Domino Web服务无需任何身份验证即可访问(在SOAPUI中,我可以毫无问题地对其进行测试)。 我尝试使用RPC/编码的wsdl:

<?xml version="1.0" encoding="UTF-8"?>
<definitions targetNamespace="urn:DefaultNamespace"
    xmlns="http://schemas.xmlsoap.org/wsdl/" xmlns:apachesoap="http://xml.apache.org/xml-soap"
    xmlns:impl="urn:DefaultNamespace" xmlns:intf="urn:DefaultNamespace"
    xmlns:soapenc="http://schemas.xmlsoap.org/soap/encoding/" xmlns:wsdl="http://schemas.xmlsoap.org/wsdl/"
    xmlns:wsdlsoap="http://schemas.xmlsoap.org/wsdl/soap/" xmlns:xsd="http://www.w3.org/2001/XMLSchema">
    <wsdl:types>
        <schema targetNamespace="urn:DefaultNamespace" xmlns="http://www.w3.org/2001/XMLSchema">
            <import namespace="http://schemas.xmlsoap.org/soap/encoding/" />
            <complexType name="WST1INPUT">
                <sequence>
                    <element name="INPUT1" nillable="true" type="xsd:string" />
                    <element name="INPUT2" nillable="true" type="xsd:string" />
                </sequence>
            </complexType>
            <complexType name="WST1OUTPUT">
                <sequence>
                    <element name="OUTPUT1" nillable="true" type="xsd:string" />
                    <element name="OUTPUT2" nillable="true" type="xsd:string" />
                </sequence>
            </complexType>
        </schema>
    </wsdl:types>
    <message name="DODAJNAPISResponse">
        <part name="DODAJNAPISReturn" type="impl:WST1OUTPUT" />
    </message>
    <message name="DODAJNAPISRequest">
        <part name="WST1INPUT1" type="impl:WST1INPUT" />
    </message>
    <portType name="WSO2ProviderClass">
        <operation name="DODAJNAPIS" parameterOrder="WST1INPUT1">
            <input message="impl:DODAJNAPISRequest" name="DODAJNAPISRequest" />
            <output message="impl:DODAJNAPISResponse" name="DODAJNAPISResponse" />
        </operation>
    </portType>
    <binding name="DominoSoapBinding" type="impl:WSO2ProviderClass">
        <wsdlsoap:binding style="rpc"
            transport="http://schemas.xmlsoap.org/soap/http" />
        <operation name="DODAJNAPIS">
            <wsdlsoap:operation soapAction="DODAJNAPIS" />
            <input name="DODAJNAPISRequest">
                <wsdlsoap:body encodingStyle="http://schemas.xmlsoap.org/soap/encoding/"
                    namespace="urn:DefaultNamespace" use="encoded" />
            </input>
            <output name="DODAJNAPISResponse">
                <wsdlsoap:body encodingStyle="http://schemas.xmlsoap.org/soap/encoding/"
                    namespace="urn:DefaultNamespace" use="encoded" />
            </output>
        </operation>
    </binding>
    <service name="WSO2ProviderClassService">
        <port binding="impl:DominoSoapBinding" name="Domino">
            <wsdlsoap:address
                location="http://firmaa.mis.eu:80/firmaa/b2b/finanse.nsf/WST1?OpenWebService" />
        </port>
    </service>
</definitions>

但获得相同的SAXParserException:文件过早结束。 在WSO2控制台上,与之前相同的警告和错误。

我为这个Domino Web服务编写了一些java“包装器”服务。我发现,我必须设置

options.setProperty(HTTPConstants.CHUNKED, "false");

让这个包装器很好地工作。在我得到同样的SAXParserException之前。是否有任何WSO2属性将HTTPConstants.CHUNKED设置为false?

已解决。我创建了自定义代理(不是Passthrough!),其属性为inSequence:

<inSequence>
         <property name="FORCE_HTTP_1.0" value="true" scope="axis2"/>
      </inSequence>

然后一切正常:)

<soapenv:Fault xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/">
   <faultcode>soapenv:Server.generalException</faultcode>
   <faultstring>org.xml.sax.SAXParseException: Premature end of file.</faultstring>
   <detail/>
</soapenv:Fault>
07:46:13,071 [-] [PassThroughMessageProcessor-46] INFO Proxy Service WSO2DominoWrappedTest received a new message from : 192.168.7.247
07:46:13,071 [-] [PassThroughMessageProcessor-46] INFO Message To: /services/WSO2DominoWrappedTest.WSO2DominoWrappedTestHttpSoap11Endpoint
07:46:13,071 [-] [PassThroughMessageProcessor-46] INFO SOAPAction: DODAJNAPIS
07:46:13,071 [-] [PassThroughMessageProcessor-46] INFO WSA-Action: DODAJNAPIS
07:46:13,071 [-] [PassThroughMessageProcessor-46] INFO Forwarding the message to the anonymous endpoint of the proxy service
07:46:13,071 [-] [PassThroughMessageProcessor-46] INFO Sending message through endpoint : null resolving to address = http://firmaa.mis.eu/firmaa/b2b/finanse.nsf/WST1?OpenWebService
07:46:13,071 [-] [PassThroughMessageProcessor-46] INFO SOAPAction: DODAJNAPIS
07:46:13,071 [-] [PassThroughMessageProcessor-46] INFO WSA-Action: DODAJNAPIS
07:46:13,133 [-] [PassThroughMessageProcessor-48] INFO Start : Sequence <anonymous>
07:46:13,133 [-] [PassThroughMessageProcessor-48] INFO Sequence <SequenceMediator> :: mediate()
07:46:13,133 [-] [PassThroughMessageProcessor-48] INFO Mediation started from mediator position : 0
07:46:13,133 [-] [PassThroughMessageProcessor-48] INFO Start : Send mediator
07:46:13,133 [-] [PassThroughMessageProcessor-48] INFO Sending response message using implicit message properties.. Sending To: http://www.w3.org/2005/08/addressing/anonymous SOAPAction:
07:46:13,133 [-] [PassThroughMessageProcessor-48] INFO End : Send mediator
07:46:13,133 [-] [PassThroughMessageProcessor-48] INFO End : Sequence <anonymous>
[2015-05-13 07:40:21,024]  WARN - TargetHandler http-outgoing-128: Receiving res
ponse while the handler is in an inconsistent state REQUEST_READY
[2015-05-13 07:40:21,024] ERROR - TargetHandler Unexpected error.
[2015-05-13 07:40:21,024]  WARN - SynapseCallbackReceiver Synapse received a res
ponse for the request with message Id : urn:uuid:b1275096-2ad4-4d2d-92f4-cca5499
027c8 But a callback is not registered (anymore) to process this response
<?xml version="1.0" encoding="UTF-8"?>
<definitions targetNamespace="urn:DefaultNamespace"
    xmlns="http://schemas.xmlsoap.org/wsdl/" xmlns:apachesoap="http://xml.apache.org/xml-soap"
    xmlns:impl="urn:DefaultNamespace" xmlns:intf="urn:DefaultNamespace"
    xmlns:soapenc="http://schemas.xmlsoap.org/soap/encoding/" xmlns:wsdl="http://schemas.xmlsoap.org/wsdl/"
    xmlns:wsdlsoap="http://schemas.xmlsoap.org/wsdl/soap/" xmlns:xsd="http://www.w3.org/2001/XMLSchema">
    <wsdl:types>
        <schema targetNamespace="urn:DefaultNamespace" xmlns="http://www.w3.org/2001/XMLSchema">
            <import namespace="http://schemas.xmlsoap.org/soap/encoding/" />
            <complexType name="WST1INPUT">
                <sequence>
                    <element name="INPUT1" nillable="true" type="xsd:string" />
                    <element name="INPUT2" nillable="true" type="xsd:string" />
                </sequence>
            </complexType>
            <complexType name="WST1OUTPUT">
                <sequence>
                    <element name="OUTPUT1" nillable="true" type="xsd:string" />
                    <element name="OUTPUT2" nillable="true" type="xsd:string" />
                </sequence>
            </complexType>
        </schema>
    </wsdl:types>
    <message name="DODAJNAPISResponse">
        <part name="DODAJNAPISReturn" type="impl:WST1OUTPUT" />
    </message>
    <message name="DODAJNAPISRequest">
        <part name="WST1INPUT1" type="impl:WST1INPUT" />
    </message>
    <portType name="WSO2ProviderClass">
        <operation name="DODAJNAPIS" parameterOrder="WST1INPUT1">
            <input message="impl:DODAJNAPISRequest" name="DODAJNAPISRequest" />
            <output message="impl:DODAJNAPISResponse" name="DODAJNAPISResponse" />
        </operation>
    </portType>
    <binding name="DominoSoapBinding" type="impl:WSO2ProviderClass">
        <wsdlsoap:binding style="rpc"
            transport="http://schemas.xmlsoap.org/soap/http" />
        <operation name="DODAJNAPIS">
            <wsdlsoap:operation soapAction="DODAJNAPIS" />
            <input name="DODAJNAPISRequest">
                <wsdlsoap:body encodingStyle="http://schemas.xmlsoap.org/soap/encoding/"
                    namespace="urn:DefaultNamespace" use="encoded" />
            </input>
            <output name="DODAJNAPISResponse">
                <wsdlsoap:body encodingStyle="http://schemas.xmlsoap.org/soap/encoding/"
                    namespace="urn:DefaultNamespace" use="encoded" />
            </output>
        </operation>
    </binding>
    <service name="WSO2ProviderClassService">
        <port binding="impl:DominoSoapBinding" name="Domino">
            <wsdlsoap:address
                location="http://firmaa.mis.eu:80/firmaa/b2b/finanse.nsf/WST1?OpenWebService" />
        </port>
    </service>
</definitions>
options.setProperty(HTTPConstants.CHUNKED, "false");
<inSequence>
         <property name="FORCE_HTTP_1.0" value="true" scope="axis2"/>
      </inSequence>