on 01-13-2005 11:00 AM
Hello everybody,
I was trying to setup the SOAP connection to XI 3.0 with use of Apache AXIS client. After a day spent on it it still doesn't work. The XI engine doesn't receive any messages.
I tried both an integrated adapter engine and a local one. Both without success.
With local adapter engine, the adapter log looks like follows:
<i>11:43:19 (3835): Request transport message received at 4444:/myservice/ws
11:43:19 (3836): Request message parsed
11:43:19 (3840): Error occurred during processing: com.sap.aii.messaging.srt.BubbleException: Can't call the endpoint; Exception raised by com.sap.aii.messaging.net.TransportException: Content-Type not set</i>
It seems to that the message was parsed successfully by the adapter, but there is a problem to pass it on. The 'Content-Type not set' message looks like the adapter didn't set it correctly. I tried to force it in the configuration with XMB.ContentType=text/xml setting but it didn't help.
The adapter configuration is now as follows:
<i>XMB.TargetURL=http://xihost:8000/sap/xi/engine?type=entry&version=3.0
XMB.User=*******
XMB.Password=*********
XMBWS.WSPort=4444
XMBWS.WSPath=/myservice/ws
XMB.SenderBusinessSystem=soapSender
XMB.SenderInterfaceNamespace=http://sap.com/xi/xidemo
XMB.SenderInterfaceName=senderInterface
XMB.QualityOfService=BE
XMB.ContentType=text/xml</i>
Then I tried the AXIS client with the integrated adapter engine. I used URL <i>http://xihost:50000/XISOAPAdapter/MessageServlet?channel=TNO:SOAPTNO:SOAP_TNO&version=3.0</i>. Here I get an exception as follows:
<i>com.sap.aii.af.mp.module.ModuleException
at com.sap.aii.af.mp.soap.ejb.XISOAPAdapterBean.process(XISOAPAdapterBean.java:697)
at com.sap.aii.af.mp.module.ModuleLocalLocalObjectImpl3.process(ModuleLocalLocalObjectImpl3.java:103)
at com.sap.aii.af.mp.ejb.ModuleProcessorBean.process(ModuleProcessorBean.java:221)
at com.sap.aii.af.mp.processor.ModuleProcessorLocalLocalObjectImpl0.process(ModuleProcessorLocalLocalObjectImpl0.java:103)
at com.sap.aii.af.mp.soap.web.MessageServlet.doPost(MessageServlet.java:513)
at javax.servlet.http.HttpServlet.service(HttpServlet.java:760)
at javax.servlet.http.HttpServlet.service(HttpServlet.java:853)
at com.sap.engine.services.servlets_jsp.server.HttpHandlerImpl.runServlet(HttpHandlerImpl.java:385)
at com.sap.engine.services.servlets_jsp.server.HttpHandlerImpl.handleRequest(HttpHandlerImpl.java:263)
at com.sap.engine.services.httpserver.server.RequestAnalizer.startServlet(RequestAnalizer.java:340)
at com.sap.engine.services.httpserver.server.RequestAnalizer.startServlet(RequestAnalizer.java:318)
at com.sap.engine.services.httpserver.server.RequestAnalizer.invokeWebContainer(RequestAnalizer.java:821)
at com.sap.engine.services.httpserver.server.RequestAnalizer.handle(RequestAnalizer.java:239)
at com.sap.engine.services.httpserver.server.Client.handle(Client.java:92)
at com.sap.engine.services.httpserver.server.Processor.request(Processor.java:147)
at com.sap.engine.core.service630.context.cluster.session.ApplicationSessionMessageListener.process(ApplicationSessionMessageListener.java:37)
at com.sap.engine.core.cluster.impl6.session.UnorderedChannel$MessageRunner.run(UnorderedChannel.java:71)
at com.sap.engine.core.thread.impl3.ActionObject.run(ActionObject.java:37)
at java.security.AccessController.doPrivileged(Native Method)
at com.sap.engine.core.thread.impl3.SingleThread.execute(SingleThread.java:94)
at com.sap.engine.core.thread.impl3.SingleThread.run(SingleThread.java:162)</i>
When I try to call the MessageServlet with my browser I get:
<i>Message Servlet is in Status OK
Status information:
Servlet com.sap.aii.af.mp.soap.web.MessageServlet (Version $Id: //tc/aii/30_REL/src/_adapters/_soap/java/com/sap/aii/af/mp/soap/web/MessageServlet.java#5 $) bound to /MessageServlet
Classname ModuleProcessor: null
Lookupname for localModuleProcessorLookupName: localejbs/ModuleProcessorBean
Lookupname for remoteModuleProcessorLookupName: null
ModuleProcessorClass not instantiated
ModuleProcessorLocal is Instance of com.sap.aii.af.mp.processor.ModuleProcessorLocalLocalObjectImpl0
ModuleProcessorRemote not instantiated</i>
I'm running out of ideas now. Could anybody put some light on this?
The XI server is patched so SP9 level.
The local adapter has just been extracted from the CD.
Best regards,
Rafal
hello friends.
Rafal, as you solved the problem "The multiRef elements are missing.", i have the same problem.
I'm used the messages types referenced into the wsdl.
Regards
Sergio Gómiz
You must be a registered user to add a comment. If you've already registered, sign in. Otherwise, register and sign in.
Hi Sergio,
One possibility, I got to know, is to influence the sender to do not use multirefs. In case of an Axis server you can edit the global server configuration in the server-config.wsdd.
<globalConfiguration>
<parameter name="sendMultiRefs" value="false"></parameter>
</globalConfiguration>
See Axis reference for more: http://ws.apache.org/axis/java/reference.html#GlobalAxisConfiguration
Regards,
Dennis
Edited by: Dennis Stark on Mar 5, 2008 8:18 AM
Hi Rafal,
You can use the messages too in the message mapping, in principle you do not want to define the datatypes yourself if you can easily select them by selecting the datatypes in the external definition created from the WSDL.
It works super for us! We use the scenario: XML file to BPM to a synchronous webservice call using the SOAP adapter.
Greetz,
Paul
You must be a registered user to add a comment. If you've already registered, sign in. Otherwise, register and sign in.
> You can use the messages too in the message mapping,
> in principle you do not want to define the datatypes
> yourself if you can easily select them by selecting
> the datatypes in the external definition created from
> the WSDL.
Excellent! This I was missing
I like it more and more.
Thanks a lot,
Rafal
If you have a J2SE adapter framework just extracted from CD, you need to apply the newest patch from service marketplace for this.
In your configuration the client of the Integration Server is missing, SenderBusinessSystem has changed to SenderService
XI.TargetURL=http://xihost:8000/sap/xi/engine?type=entry
XI.User=YourUser
XI.Password=YourPassword
XI.Client=YourClient
XMBWS.WSPort=4444
XMBWS.WSPath=/myservice/ws
XI.SenderService=soapSender
XI.SenderInterfaceNamespace=http://sap.com/xi/xidemo
XI.SenderInterfaceName=senderInterface
XI.QualityOfService=BE
XI.ContentType=text/xml
Regards
Stefan
You must be a registered user to add a comment. If you've already registered, sign in. Otherwise, register and sign in.
Thank you Stefan. Patching and updating the configuration helped.
BTW, the SenderParty property key is not XMB.SenderParty, but XI.SenderParty. Strange as all the other attributes still accept the XMB prefix...
Now I have another problem. Part of my message is stripped out. Important part because it contains operation attributes. As far as I could discover this is done by the adapter.
The message I send from AXIS client is:
<i><soapenv:Envelope
xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/"
xmlns:xsd="http://www.w3.org/2001/XMLSchema"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
>
<soapenv:Body>
<ns1:add
soapenv:encodingStyle="http://schemas.xmlsoap.org/soap/encoding/"
xmlns:ns1="urn:Calculator"
>
<i1 href="#id0"/>
<i2 href="#id1"/>
</ns1:add>
<multiRef id="id1" soapenc:root="0" xsi:type="xsd:int"
soapenv:encodingStyle="http://schemas.xmlsoap.org/soap/encoding/"
xmlns:soapenc="http://schemas.xmlsoap.org/soap/encoding/"
>
20
</multiRef>
<multiRef id="id0" soapenc:root="0" xsi:type="xsd:int"
soapenv:encodingStyle="http://schemas.xmlsoap.org/soap/encoding/"
xmlns:soapenc="http://schemas.xmlsoap.org/soap/encoding/"
>
10
</multiRef>
</soapenv:Body>
</soapenv:Envelope></i>
And the payload in the monitoring looks like:
<i><?xml version="1.0" encoding="UTF-8" standalone="yes" ?>
<!-- Receiver Identification -->
<ns1:add
xmlns:ns1="urn:Calculator"
xmlns:SOAP="http://schemas.xmlsoap.org/soap/envelope/"
xmlns:xsd="http://www.w3.org/2001/XMLSchema"
xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
>
<i1 href="#id0" />
<i2 href="#id1" />
</ns1:add></i>
The multiRef elements are missing.
As far as I understand, these are attachments.
I set XMBWS.KeepAttachments=true to preserve them but with no luck.
I also set XMBWS.KeepHeaders=true just for a case, but this didn't help either.
Is there anything else I'm missing?
Regards,
Rafal
Hi Rafal,
Did you use the generated WSDL documents of the webservice as external definition in XI? The WSDL needs to be used in defining the message interfaces in XI!
Cheers,
Paul
You must be a registered user to add a comment. If you've already registered, sign in. Otherwise, register and sign in.
Hello Paul,
I hadn't. I expected that it wasn't necessary at this stage. First of all I wanted to see the message reaching XI engine. And after applying Stefan's advices I did. At least with the local adapter.
Now I have imported it. But I'm not sure what is the use of it. I know that I can use messages extracted from the WSDL in MessageInterface definition. Is that all or is there any further use of it?
BTW, if I want to define mapping for my message I have to define a corresponding data type manually. Is this correct?
With best regards,
Rafal
User | Count |
---|---|
89 | |
10 | |
9 | |
9 | |
9 | |
6 | |
6 | |
5 | |
5 | |
4 |
You must be a registered user to add a comment. If you've already registered, sign in. Otherwise, register and sign in.