cancel
Showing results for 
Search instead for 
Did you mean: 

Message Listener - Web Service

Former Member
0 Kudos

Hi All ,

I'm using MII 12.1 , and I'm trying to post messages from transaction to the message listener of same server .

I tried most of the options informed through so many blogs , but I'm getting the response as a FATAL ERROR and MESSAGE WAS NOT RECEIVED as a string response and the xml response is null .

The url :

http://<server Name>:<port>/XMII/Illuminator?service=WSMessageListener&mode=WSMessageListenerServer&NAME=<message name>&Content-Type=text/xml

and POST Data is an XML of a Tag Query.

Still , it is showing the above error.

Would anyone suggest a solution for it please.

Accepted Solutions (1)

Accepted Solutions (1)

Former Member
0 Kudos

Hi,

if you are using the HTTP Post action in your transaction to call the WSMessageListener webservice, have you set Encoding = UTF-8? I have also used Content-type "text/xml" in the Configuration of the action instead of adding it to the URL.

Are there any entries in the NetWeaver Logs when this error is displayed in your tran?

By the way, you can add "&Session=false" to you URL to avoid MII creating a session for every webservice call.

Michael

Edited by: Michael Otto on Sep 20, 2010 3:26 PM

Answers (7)

Answers (7)

Former Member
0 Kudos

Hi Everyone , Thanks for your Quick responses .

Former Member
0 Kudos

Hi Otto ,

I'm clear with message clean up rules .But , My actual Query is :

In real time scenario , suppose I'm receiving a message based on which I'm inserting data into an external database like Oracle. I have to delete these messages only after success fully Inserting data inti external database Server. If the connection is failed then the data buffering feature will store the data and retry based on the configuration we set in the Data server .Now if the messages are keep on adding and execcuting a transaction so that the data in buffer also gets added until the connection establishes(active) again.

In Such scenario the MII database , is it capable of handling entire data ?

How do we check and delete the data in Data buffer to update Messages using clean up rules in message services?

Former Member
0 Kudos

Hi,

if your MII internal database can hold all messages that come in or be buffered depends on the number and size of the messages, the number of messages being buffered and the available database space. If those basic conditions are ok, MII will most likely be able to handle the messages.

The cleanup of messages that caused entries in the data buffer is not quite clear to me, as we do not use data buffering. As an alternative, you can set messages that cause an error (e.g. because a database is down) to status failed (terminate the transaction that processes the message with error). Schedule a job that periodically reprocesses failed messages. This way the cleanup rule deletes only successful messages.

Michael

Former Member
0 Kudos

Thank you Otto , I got it now.

May I know where these messages are getting stored , like is it the same MII Database in which the Data Buffering Entries ,Under Data Services , are stored?

Is there any way to extend its capacity as in real time scenario very huge amount of data is to be stored and Processed. Like Customisation of the MII data base or something.

Former Member
0 Kudos

The incoming messages are stored in the internal MII (NetWeaver) database. You can set up the system to the size you need.

Our experience with huge messages (over 1MB) is good. You should set up [cleanup rules|http://help.sap.com/saphelp_mii121/helpdata/en/43/e80b59ad40719ae10000000a1553f6/frameset.htm] to delete successfully processed messages so your database will not run into a shortage.

Michael

Former Member
0 Kudos

Hi All ,

thanks for your suggestions. I found something Crazy that It worked now even though I violated all suggestions except removing the default Content Type. I don't know why it wasn't working.

I have a doubt : I thought the message Name should be Unique , but it is accepting Multiple Messages with same Name . Is there any Procedure to validate this ?

Former Member
0 Kudos

You can consider the message name of the WSMessageListener as a "queue" that accepts a payload. The handling of the contents is up to you.

If you want to send different types of messages, you should use different names, one for each message type.

As an alternative, you can use the same name for all types of messages and define a Processing Rule that calls a BLT that sorts out the different message types. But I guess this may lead to misunderstandings.

Michael

Former Member
0 Kudos

Thanks everyone for your immediate response.

Otto : I tried Encoding = UTF-8 , "&Session=false"

Good : I included IllumLoginName and IllumLoginPassword in the URL

Schrampf : I tried "text/xml" in place of "application/x-www-form-urlencoded" in Content Type Input

But still I'm getting the following Error Log in NWA :

Message was not received

[EXCEPTION]

com.sap.xmii.Illuminator.logging.LHException: Message was not received

at com.sap.xmii.Illuminator.services.handlers.WSMessageListener.getPayload(WSMessageListener.java:161)

at com.sap.xmii.Illuminator.services.handlers.WSMessageListener.processRequest(WSMessageListener.java:76)

at com.sap.xmii.Illuminator.services.ServiceManager.run(ServiceManager.java:68)

at com.sap.xmii.servlet.Illuminator.service(Illuminator.java:68)

at javax.servlet.http.HttpServlet.service(HttpServlet.java:820)

at com.sap.engine.services.servlets_jsp.server.runtime.FilterChainImpl.runServlet(FilterChainImpl.java:162)

at com.sap.engine.services.servlets_jsp.server.runtime.FilterChainImpl.doFilter(FilterChainImpl.java:81)

at com.sap.xmii.system.SecurityFilter.doFilter(SecurityFilter.java:96)

at com.sap.engine.services.servlets_jsp.server.runtime.FilterChainImpl.doFilter(FilterChainImpl.java:73)

at com.sap.engine.services.servlets_jsp.server.HttpHandlerImpl.runServlet(HttpHandlerImpl.java:461)

at com.sap.engine.services.servlets_jsp.server.HttpHandlerImpl.handleRequest(HttpHandlerImpl.java:298)

at com.sap.engine.services.httpserver.server.RequestAnalizer.startServlet(RequestAnalizer.java:396)

at com.sap.engine.services.httpserver.server.RequestAnalizer.startServlet(RequestAnalizer.java:385)

at com.sap.engine.services.servlets_jsp.filters.DSRWebContainerFilter.process(DSRWebContainerFilter.java:48)

at com.sap.engine.services.httpserver.chain.AbstractChain.process(AbstractChain.java:78)

at com.sap.engine.services.servlets_jsp.filters.ServletSelector.process(ServletSelector.java:76)

at com.sap.engine.services.httpserver.chain.AbstractChain.process(AbstractChain.java:78)

at com.sap.engine.services.servlets_jsp.filters.ApplicationSelector.process(ApplicationSelector.java:243)

at com.sap.engine.services.httpserver.chain.AbstractChain.process(AbstractChain.java:78)

at com.sap.engine.services.httpserver.filters.WebContainerInvoker.process(WebContainerInvoker.java:78)

at com.sap.engine.services.httpserver.chain.HostFilter.process(HostFilter.java:9)

at com.sap.engine.services.httpserver.chain.AbstractChain.process(AbstractChain.java:78)

at com.sap.engine.services.httpserver.filters.ResponseLogWriter.process(ResponseLogWriter.java:60)

at com.sap.engine.services.httpserver.chain.HostFilter.process(HostFilter.java:9)

at com.sap.engine.services.httpserver.chain.AbstractChain.process(AbstractChain.java:78)

at com.sap.engine.services.httpserver.filters.DefineHostFilter.process(DefineHostFilter.java:27)

at com.sap.engine.services.httpserver.chain.ServerFilter.process(ServerFilter.java:12)

at com.sap.engine.services.httpserver.chain.AbstractChain.process(AbstractChain.java:78)

at com.sap.engine.services.httpserver.filters.MonitoringFilter.process(MonitoringFilter.java:29)

at com.sap.engine.services.httpserver.chain.ServerFilter.process(ServerFilter.java:12)

at com.sap.engine.services.httpserver.chain.AbstractChain.process(AbstractChain.java:78)

at com.sap.engine.services.httpserver.filters.MemoryStatisticFilter.process(MemoryStatisticFilter.java:43)

at com.sap.engine.services.httpserver.chain.ServerFilter.process(ServerFilter.java:12)

at com.sap.engine.services.httpserver.chain.AbstractChain.process(AbstractChain.java:78)

at com.sap.engine.services.httpserver.filters.DSRHttpFilter.process(DSRHttpFilter.java:42)

at com.sap.engine.services.httpserver.chain.ServerFilter.process(ServerFilter.java:12)

at com.sap.engine.services.httpserver.chain.AbstractChain.process(AbstractChain.java:78)

at com.sap.engine.services.httpserver.server.Processor.chainedRequest(Processor.java:428)

at com.sap.engine.services.httpserver.server.Processor$FCAProcessorThread.process(Processor.java:247)

at com.sap.engine.services.httpserver.server.rcm.RequestProcessorThread.run(RequestProcessorThread.java:45)

at com.sap.engine.core.thread.execution.Executable.run(Executable.java:115)

at com.sap.engine.core.thread.execution.Executable.run(Executable.java:96)

at com.sap.engine.core.thread.execution.CentralExecutor$SingleThread.run(CentralExecutor.java:314)

If you find out the problem , then please provide me the solution and the details of the problem.

Former Member
0 Kudos

One thought:

In the Error message, the top "at" entry is "getPayload". The PostData property of the HTTP Post action is of type Text. Did you assign the XML output directly to it? What happens if you save the XML output of the Tag query in a local text property and assign this local to the PostData? Maybe there is a problem with the Post payload.

Michael

erik_schrampf
Active Participant
0 Kudos

I was receiving a similar error and what fixed it for me was adding "text/xml" to the Content Type input for the HTTP Post action's Configuration option. This is what Mike stated as well. I also tried attaching it to the URL as you did and it worked. But make sure that you take the default value of "application/x-www-form-urlencoded" out of the HTTP Post action's configuration menu. If this is left in and you attach ContentType=text/xml to the URL you will still receive this error.

IllumLoginName and IllumLoginPassword are not needed if you are passing this information using the Credential Alias field.

Edited by: Erik Schrampf on Sep 20, 2010 1:57 PM

jcgood25
Active Contributor
0 Kudos

How are you authenticating? Have you tried including IllumLoginName and IllumLoginPassword in the URL?