cancel
Showing results for 
Search instead for 
Did you mean: 

Set qos dynamically

Former Member
0 Kudos

Hello Experts,

I have a requirement where i have 3 different operations in a single interface. Two operations are async and the other one is sync. I have to use same soap channel to trigger all the three interfaces.

If i use BE as qos in soap channel, the sync one will work..the other two will not. If i use EO as qos its vice versa.

I am using AAE for configuartion purpose.

Is it possible to change the qos dynamically using adapter module in soap channel? or is any other posible solution for this.?

Please suggest.

Thanks & Regards,

Swetha.

Accepted Solutions (0)

Answers (1)

Answers (1)

former_member200962
Active Contributor
0 Kudos

No need of using any module....just add the parameter &QualityOfService to the URL which invokes the Sender SOAP channel and have the appropriate value in the above parameter (ExactlyOnce, ExactlyOnceInOrder, BestEffort)...now your sender application should populate this parameter accordingly before sending message to XI/ PI

Regards,

Abhishek.

Former Member
0 Kudos

Hi Abhishek,

Thanks for ur reply.

I have already tried that option with the below URL.

http://hydhtc165182d:50000/XISOAPAdapter/MessageServlet?channel=:BC_CusRequest_New:OUT_SOAP_CusReq&Q...

But it didnt work...!! When i try this, i am not even getting any audit log in sender soap channel to monitor.

It would be of great help if you can throw some light on this..!!

former_member200962
Active Contributor
0 Kudos

Do not mention EO, EOIO, BE ......use ExactlyOnce, ExactlyOnceInOrder, BestEffort ..... no shortcuts!

Former Member
0 Kudos

Hi Abhishek,

I have tried with this

http://hydhtc165182d:50000/XISOAPAdapter/MessageServlet?channel=:BC_CusRequest_New:OUT_SOAP_CusReq&q...

Its not working..its giving error in soap client as

<?xml version='1.0'?>

<!-- see the documentation -->

<SOAP:Envelope xmlns:SOAP='http://schemas.xmlsoap.org/soap/envelope/'>

<SOAP:Body>

<SOAP:Fault>

<faultcode>SOAP:Server</faultcode>

<faultstring>Server Error</faultstring>

<detail>

<s:SystemError xmlns:s='http://sap.com/xi/WebService/xi2.0'>

<context>XIAdapter</context>

<code>ADAPTER.JAVA_EXCEPTION</code>

<text><![CDATA[

com.sap.engine.interfaces.messaging.api.exception.MessagingException: com.sap.engine.interfaces.messaging.api.exception.MessagingException: Received HTTP response code 500 : Error during parsing of SOAP header

at com.sap.aii.adapter.soap.ejb.XISOAPAdapterBean.process(XISOAPAdapterBean.java:955)

at sun.reflect.GeneratedMethodAccessor1139.invoke(Unknown Source)

at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)

at java.lang.reflect.Method.invoke(Method.java:585)

at com.sap.engine.services.ejb3.runtime.impl.RequestInvocationContext.proceedFinal(RequestInvocationContext.java:43)

at com.sap.engine.services.ejb3.runtime.impl.AbstractInvocationContext.proceed(AbstractInvocationContext.java:166)

at com.sap.engine.services.ejb3.runtime.impl.Interceptors_StatesTransition.invoke(Interceptors_StatesTransition.java:19)

at com.sap.engine.services.ejb3.runtime.impl.AbstractInvocationContext.proceed(AbstractInvocationContext.java:177)

at com.sap.engine.services.ejb3.runtime.impl.Interceptors_Resource.invoke(Interceptors_Resource.java:71)

at com.sap.engine.services.ejb3.runtime.impl.AbstractInvocationContext.proceed(AbstractInvocationContext.java:177)

at com.sap.engine.services.ejb3.runtime.impl.Interceptors_Transaction.doWorkWithAttribute(Interceptors_Transaction.java:38)

at com.sap.engine.services.ejb3.runtime.impl.Interceptors_Transaction.invoke(Interceptors_Transaction.java:22)

at com.sap.engine.services.ejb3.runtime.impl.AbstractInvocationContext.proceed(AbstractInvocationContext.java:177)

at com.sap.engine.services.ejb3.runtime.impl.AbstractInvocationContext.proceed(AbstractInvocationContext.java:189)

at com.sap.engine.services.ejb3.runtime.impl.Interceptors_StatelessInstanceGetter.invoke(Interceptors_StatelessInstanceGetter.java:16)

at com.sap.engine.services.ejb3.runtime.impl.AbstractInvocationContext.proceed(AbstractInvocationContext.java:177)

at com.sap.engine.services.ejb3.runtime.impl.Interceptors_SecurityCheck.invoke(Interceptors_SecurityCheck.java:21)

at com.sap.engine.services.ejb3.runtime.impl.AbstractInvocationContext.proceed(AbstractInvocationContext.java:177)

at com.sap.engine.services.ejb3.runtime.impl.Interceptors_ExceptionTracer.invoke(Interceptors_ExceptionTracer.java:16)

at com.sap.engine.services.ejb3.runtime.impl.AbstractInvocationContext.proceed(AbstractInvocationContext.java:177)

at com.sap.engine.services.ejb3.runtime.impl.DefaultInvocationChainsManager.startChain(DefaultInvocationChainsManager.java:133)

at com.sap.engine.services.ejb3.runtime.impl.DefaultEJBProxyInvocationHandler.invoke(DefaultEJBProxyInvocationHandler.java:164)

at $Proxy3000.process(Unknown Source)

at com.sap.aii.af.app.mp.ejb.ModuleProcessorBean.process(ModuleProcessorBean.java:249)

at sun.reflect.GeneratedMethodAccessor310.invoke(Unknown Source)

at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)

at java.lang.reflect.Method.invoke(Method.java:585)

at com.sap.engine.services.ejb3.runtime.impl.RequestInvocationContext.proceedFinal(RequestInvocationContext.java:43)

at com.sap.engine.services.ejb3.runtime.impl.AbstractInvocationContext.proceed(AbstractInvocationContext.java:166)

at com.sap.engine.services.ejb3.runtime.impl.Interceptors_StatesTransition.invoke(Interceptors_StatesTransition.java:19)

at com.sap.engine.services.ejb3.runtime.impl.AbstractInvocationContext.proceed(AbstractInvocationContext.java:177)

at com.sap.engine.services.ejb3.runtime.impl.Interceptors_Resource.invoke(Interceptors_Resource.java:71)

at com.sap.engine.services.ejb3.runtime.impl.AbstractInvocationContext.proceed(AbstractInvocationContext.java:177)

at com.sap.engine.services.ejb3.runtime.impl.Interceptors_Transaction.doWorkWithAttribute(Interceptors_Transaction.java:38)

at com.sap.engine.services.ejb3.runtime.impl.Interceptors_Transaction.invoke(Interceptors_Transaction.java:22)

at com.sap.engine.services.ejb3.runtime.impl.AbstractInvocationContext.proceed(AbstractInvocationContext.java:177)

at com.sap.engine.services.ejb3.runtime.impl.AbstractInvocationContext.proceed(AbstractInvocationContext.java:189)

at com.sap.engine.services.ejb3.runtime.impl.Interceptors_StatelessInstanceGetter.invoke(Interceptors_StatelessInstanceGetter.java:16)

at com.sap.engine.services.ejb3.runtime.impl.AbstractInvocationContext.proceed(AbstractInvocationContext.java:177)

at com.sap.engine.services.ejb3.runtime.impl.Interceptors_SecurityCheck.invoke(Interceptors_SecurityCheck.java:21)

at com.sap.engine.services.ejb3.runtime.impl.AbstractInvocationContext.proceed(AbstractInvocationContext.java:177)

at com.sap.engine.services.ejb3.runtime.impl.Interceptors_ExceptionTracer.invoke(Interceptors_ExceptionTracer.java:16)

at com.sap.engine.services.ejb3.runtime.impl.AbstractInvocationContext.proceed(AbstractInvocationContext.java:177)

at com.sap.engine.services.ejb3.runtime.impl.DefaultInvocationChainsManager.startChain(DefaultInvocationChainsManager.java:133)

at com.sap.engine.services.ejb3.runtime.impl.DefaultEJBProxyInvocationHandler.invoke(DefaultEJBProxyInvocationHandler.java:164)

at $Proxy101.process(Unknown Source)

at com.sap.aii.adapter.soap.web.MessageServlet.callModuleProcessor(MessageServlet.java:169)

at com.sap.aii.adapter.soap.web.MessageServlet.doPost(MessageServlet.java:440)

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

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

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

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

at com.sap.engine.services.servlets_jsp.server.servlet.AuthenticationFilter.doFilter(AuthenticationFilter.java:124)

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

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

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

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

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

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

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

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

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

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

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

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

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:71)

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:71)

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:71)

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

at com.sap.engine.services.httpserver.server.Processor$FCAProcessorThread.run(Processor.java:222)

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:152)

at com.sap.engine.core.thread.impl3.SingleThread.run(SingleThread.java:247)

]]></text>

</s:SystemError>

</detail>

</SOAP:Fault>

</SOAP:Body>

</SOAP:Envelope>

i have tried giving ExactlyOnce also...

Edited by: Swetha Reddy on Dec 9, 2009 7:38 AM

Former Member
0 Kudos

Hi Abhishek,

The problem is solved.

I have used the URL mentioned above, with the two parameters "UseQueryString" and "UseEncodedHeaders" checked in the sender soap channel.

Thanks for your suggestion.

Thanks,

Swetha.

Former Member
0 Kudos

Hi Swetha,

I have the same requirement using one single sender soap adapter with different quality of services.

And I also want to run my scenario within the AAE as an integrated scenario in PI 7.11.

I tried several URL for sending messages to the sender soap channel, but the specified qos in the URL is always ignored.

The qos defined in the channel is used for the message processing.

Here are the URLs I already tried:

fix URL part

http://server:javaport/XISOAPAdapter/MessageServlet?channel=:BusinessService_XYZ:SOAP_SND_BusinessSe...

different qos specifications

&qualityOfService=BestEffort

&qos=BestEffort

&QualityOfService=BestEffort

&qualityOfService=BE

&qos=BE

I also checked the options Use Encoded Headers and Use Query String in the sender channel. The option Keep Headers is not used at the moment.

Could you please tell me which URL (qos specification) works?

Thanks in advance

Kind regards

Jochen

Former Member
0 Kudos

Hi @ll,

I also checked the SOAP Sender FAQ SAP note 856597 unfortunately this was not very helpful in this case.

I also tried by using the new URL mentioned in the FAQs

http://server:javaport/XISOAPAdapter/MessageServlet?senderParty=&senderService=BusinessService_XYZ&i...

Also read this [HowTo |http://www.sdn.sap.com/irj/scn/go/portal/prtroot/docs/library/uuid/d23cbe11-0d01-0010-5287-873a22024f79?quicklink=index&overridelayout=true]looking for some input to solve this issue, but all mentioned alternatives are not recognized by the adapter

It seems that all options I provide via URL are ignored by the channel.

Any suggestions on this?

Kind regards

Jochen

Former Member
0 Kudos

Hi,

searching a solution I came across the possibility to send the soap message directly to the ABAP pipeline by using following URL

http://server:abapport/sap/xi/engine?type=entry&version=3.0&Sender.Service=BusinessService_XYZ&Inter...

In this case the option &QualityOfService=ExactlyOnce works and the qos could be specified dynamically.

For performance reason I want to bypass the ABAP stack and run the scenario as an integrated configuration.

So I´m still looking for a solution specifying the qos dynamically via URL while using the SOAP sender channel.

Hopefully someone could give an advice.

We are using PI 7.1 with Ehp 1 (7.11)

Kind regards

Jochen

Edited by: Jochen Gugel on May 12, 2010 1:36 PM