on 01-18-2006 3:49 PM
Hello.
I am trying to send an asynchronous message from R/3 to a web service using a soap adapter. I am using XI 2.0, with the ModuleBubbleHelperXMBWSImpl. These are the parameters I have entered:
Bubble adapter java class
classname=com.sap.aii.messaging.adapter.ModuleBubble
#
This adapter instantiates a bubble bag for supporting
a xmb web service gateway. A bubble bag is a collection of Bubble
instances that form some processing chain of message objects.
#
Below parameter Bubble.Helper specifies the helper class that implements
the ModuleBubbleHelper interface. This class is used to instantiate
a bubble bag for this adapter.
#
#
Sets the bubble module helper that can instantiate your bubble bag
Bubble.Helper=com.sap.aii.messaging.adapter.ModuleBubbleHelperXMBWSImpl
#$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$
Below this line are the parameters specific to the ModuleBubbleHelperXMBWSImpl
#$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$
The configuration of this helper class is divided in two parts. The first part
specifies the adapter configuration for Web-Service clients communicating with an
XMB server. The second part specifies the configuration for XMB clients
communicating with a WebService server. Either one or both parts can be configured
in a single configuration file. Or you may separate the configuration in two files:
one for Web-Service clients communicating with an XMB server (by using only
part 0 and part 1), and the other for XMB clients communicating with a Web-Service
server (by using only part 0 and part 2).
Part 0 (FromWS and ToWS) : common part ######
Keeps the XMB headers in web service messages. Unless you need XMB header
information in your web service client/server, you should set this value to false.
XMBWS.KeepHeaders=false
Keeps the attachments in web service messages.
XMBWS.KeepAttachments=false
Encodes the xmb headers into the special HTTP header string named x-xmb_ws_encoded.
Unless you need XMB header information in your web service client/server, you
should set this value to false.
XMBWS.UseEncoded=true
Encodes the value of x-xmb_ws_encoded (see UseEncoded) in the request query string
Note: To include the encoded xmb headers in the query string, both UseEncoded and
UseQueryString must be set true. When this option is set true, make sure that
the request URL is in an appropriate form so that the attached string does not
violate the syntax for URL.
XMBWS.UseQueryString=true
Uses the specified xml encoding for serializing the soap envelope. If unspecified,
the default encoding utf-8 is assumed.
XMBWS.XMLEncoding=iso-8859-1
Part 2 (ToWS): XMB clients to WS server ######
The target URL for the web service, to which the adapter sends web service messages.
XMBWS.TargetURL=http://wpg-apps-30/engsys/distapps/RMSDev/RMSPublic.asmx?wsdl
Uses a proxy server for calling XMBWS.TargetURL
#XMBWS.ProxyHost=proxy
#XMBWS.ProxyPort=8080
Uses user-authentication for calling XMBWS.TargetURL
#XMBWS.User=anonymous
#XMBWS.Password=anonymous
The port and path where the adapter waits for XMB messages from clients.
XMBWS.XMBPort=8210
XMBWS.XMBPath=/file/receiver
The default SOAPAction HTTP request header to the web Service server
XMBWS.DefaultSOAPAction="xmbws"
END
I keep getting this message:
09:46:25 (3835): Request transport message received at 8210/file/receiver
09:46:25 (3836): Request message parsed
09:46:25 (3840): Error occurred during processing: com.sap.aii.messaging.srt.BubbleException: com.sap.aii.messaging.mo.MalformedMessageException: Fatal Error: com.inqmy.lib.xml.parser.ParserException: Bad PUBLIC declaration (:main:, row:1, col:55);
I think my problem is that the XML is being created without an envelope, but I don't know how to fix this.
Can anyone help, please?
Thanks.
Nicole
Hi Nicole,
when you have an RFC call, are there any special letters, like French accents or German Umlauts?
Maybe you post the xml from the SXMB_MONI after the mapping to let us check it.
No, you need not create a SOAP envelope, that is the task of the SOAP adapter.
When you have XI 2.0, make sure that your Adapter Framework is as well XI 2.0 and look if you have applied the newest patch.
In your configuration you should set all parameters to false, in your case:
XMBWS.UseEncoded=false
XMBWS.UseQueryString=false
Hope that helps
Stefan
You must be a registered user to add a comment. If you've already registered, sign in. Otherwise, register and sign in.
Hi. No, no special letters, I believe I'm running the same version Framework, and I tried setting those parameters back to false...Still not working.
Here's my XML:
<?xml version="1.0" encoding="UTF-8" ?>
- <ns0:ClassData xmlns:ns0="ns_Class">
- <Equip_Data>
<EQUNR>000000000010006226</EQUNR>
<EQKTX>TRANSF 300KVA PM 12470V LFCL- 600/347V</EQKTX>
<HERST>ASEA</HERST>
<SERNR>JOHN1</SERNR>
<TYPBZ />
<MATNR>000000000000813097</MATNR>
</Equip_Data>
</ns0:ClassData>
Thank you.
Hi Nicole,
finally I got a new idea: Your URL is:
XMBWS.TargetURL=http://wpg-apps-30/engsys/distapps/RMSDev/RMSPublic.asmx?wsdl
You have not applied any port. Please add the standard HTTP port number 80 to your URL:
XMBWS.TargetURL=http://wpg-apps-30<b>:80</b>/engsys/distapps/RMSDev/RMSPublic.asmx?wsdl
Regards
Stefan
Hi Nicole,
I am sorry that I have only the chance to guess, as I do not know your scenario and your web service. You wrote that your web service can be called from Visual Basic, so I need to assume that your URL and your parameter for <i>soap action</i> are correct, but they look strange to me and I think they might be incorrect.
Do you have a WSDL for your web service? Can you post it here? You can send me an email, when you do not want to post it in the forum.
Regards
Stefan
The URL and the SOAP action are part of the WSDL definition.
Look at this example:
...
<operation name="doGoogleSearch">
<b><soap:operation soapAction="urn:GoogleSearchAction" /></b>
<input>
<soap:body use="encoded" namespace="urn:GoogleSearch" encodingStyle="http://schemas.xmlsoap.org/soap/encoding/" />
</input>
<output>
<soap:body use="encoded" namespace="urn:GoogleSearch" encodingStyle="http://schemas.xmlsoap.org/soap/encoding/" />
</output>
</operation>
</binding>
<service name="GoogleSearchService">
<port name="GoogleSearchPort" binding="typens:GoogleSearchBinding">
<b><soap:address location="http://api.google.com/search/beta2" /></b>
</port>
</service>
</definitions>
As soap action take the value of attribut <i>soapAction</i> of the node <i>soap:operation</i>
As URL take the value of the attribut <i>location</i> of the tag <i>soap:address</i>.
Regards
Stefan
User | Count |
---|---|
86 | |
10 | |
10 | |
10 | |
7 | |
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.