JMS Sending asynchronously to a Queue
Edited by: Braistxu on Dec 3, 2008 10:09 AM
the asynch part of jms is the listener's behavior. once the message is sent to the queue, the sender isn't required to wait for it to finish. that's the important part, and that is certainly happening with your code.
in any case, it's insignificant compared to the processing time of the listener.
%
Similar Messages
-
JMS Sender Adapter Sharing Message Queue
Hi all.
I´ve some scenarios (request/replay) with JMS Adapter and MQ Series. All of them working againts the same queues.
In the sender side, each sender channel for each scenario must read from the same queue with a message selectors. The problem is that I have just one User to access the queue but the sender channel opens the connection in exclusive mode. So I can´t activate all sender channels at the same time (shared mode) without error.
Is it possible having more than one sender channel againts the same queue, with the same user?
Thanks a lot,
Gari.Sorry, it's solved. The queue was not well defined in MQ Series so I couldn't connect more than one channel to it.
Thanks.
Gari. -
JMS Sender Adapter EOIO with different messages in Queue to RFC
Dear Colleague,
In one of my scenarios i am using JMS Sender Adapter and Websphere MQ series.
In my MQ Series Queue i get different Messages with Different Structures.
for e.g in my MQ Series Queue Q1 i have M1, M2, M3 coming in Order.
Now i need to doa Mapping of M1 to a Standard BAPI B1 call through RFC at the reciever side.
Now i need to doa Mapping of M2 to a Standard BAPI B2 call through RFC at the reciever side.
Now i need to doa Mapping of M3 to a Standard BAPI B3 call through RFC at the reciever side.
We are aware that on Receiver side we can have multiple Recievr Determinations.so i can send it to 3 different BAPIs.
Question:
But how do i split the Messges which are coming out of MQ series Q from JMS to 3 different Mapping Structures as we knwo that we do not 'Multiple Sender Interface Determinations' from Determined based on the Message which is coming in.
Hope i have been clear in making myself understand about the problem given above.
I have alos given below the same in a bit Graphical Form.
MQ Series --> M3, M2, M1(Messages) --> JMS Adapte(EOIO) --> M1(Message) -> RFC -> B1(Bapi)
--> JMS Adapte(EOIO) --> M2(Message) -> RFC -> B2(Bapi)
--> JMS Adapte(EOIO) --> M3(Message) -> RFC -> B3(Bapi)
Is it possible to achieve the above result. Answers fo the solution are most welcome. These can be also from the new Netweaver Release Versions. If we have the solution to these in New version we will implment the New Netweaver Releases.
Thanks & Warm Regards
VenugopalDear Kai,
if i have 3 MQ series Queues then how are we going to maintain the flow of the Messages in the same order in which has come into MQ series queues.
this mesans to say that all the Message come in Parallel out from JMS or MQ side and will be mapped onto Reciever side.
But in my case i wil need to have M1 first M2 second and M3 third.
This means to say that M1 recived and acknowledged then M2 should come and acknowledged and then M3 should be acknowledged.
How this will be possible with your solution of making 3 MQ series Queues.
Please do let me know.
Thanks
Venugopal -
How to send message to a queue using JMS adapter
Hi,
I need to send messages to the default queue(demoQueue) available in the server using a JMS adapter in a BPEL process.
I tried doing the same by using an invoke activity that invokes the JMS adapter service to send the message to the queue. I deployed this process in the server and gave an input to send it to the queue. The prcoess executed without any errors in the BPEL console.
I am also using Hermes v1.0 to monitor the queue but it says that it dint receive any messages in the queue to read.
I am sorry that i have restrictions from the client that i can't post the code here. Please let me know if anyone has got any solution or if you know any other way of doing the same.
Thank you
Message was edited by: prince
the_princeYou can use the following procedure :
DBMS_AQ.ENQUEUE (
queue_name IN VARCHAR2,
enqueue_options IN enqueue_options_t,
message_properties IN message_properties_t,
payload IN "<ADT_1>",
msgid OUT RAW); -
2 JMS Sender Communication Channels polling 1 MQ Queue
Hi Experts,
I have a situation where 2 JMS sender communication channels are polling 2 different message type data (via content conversion in JMS) from 1 MQ queue. However adapters are having problem polling the right message from the queue.
Is this something that is not possible?
I know that we can possibly use 2 MQ queues - one for JMS 1 with message type 1 and the other for JMS 2 with message type 2
OR
1 JMS with 1 common message type with 1 MQ queue.
But I want to confirm whether my current situation is suppose to work or not.
Thanks,
Jay>
Jung Sun Ko wrote:
> Hi Experts,
>
> I have a situation where 2 JMS sender communication channels are polling 2 different message type data (via content conversion in JMS) from 1 MQ queue. However adapters are having problem polling the right message from the queue.
> Is this something that is not possible?
Maintain different queues for different message types.
The adapters else will just pick the message that comes to the queue first based on the polling time irrespective of the message type. It is not intelligent enough
>
> I know that we can possibly use 2 MQ queues - one for JMS 1 with message type 1 and the other for JMS 2 with message type 2
> OR
> 1 JMS with 1 common message type with 1 MQ queue.
>
> But I want to confirm whether my current situation is suppose to work or not.
>
> Thanks,
>
> Jay
Hope the above replies answers your question -
hi
I am in PI 731 single stack.
my scenario is JMS to RFC.
JMS sender will send request to RFC request message.
RFC response need to be sent to JMS receiver.
I have link for dual stack -
http://wiki.scn.sap.com/wiki/display/XI/JMS+Webservice+JMS
Is it possible now in single stack too ?Hi,
yes, JMS supports asynchronous communication only. However, a request/response model similar to synchronous communication can be implemented using a reply queue mechanism and JMS Correlation ID/JMS Message ID.
check the below link.
http://www.sdn.sap.com/irj/scn/go/portal/prtroot/docs/library/uuid/904db720-042f-3010-b6ba-e62a4192bd3c?overridelayout=true
http://help.sap.com/saphelp_nw73ehp1/helpdata/en/a4/abaf04916b45438f436357810a27c8/content.htm?frameset=/en/03/f9286f7b284928b1c41025d4ba1cf4/frameset.htm
http://scn.sap.com/people/bhavesh.kantilal/blog/2006/07/03/jdbc-receiver-adapter--synchronous-select-step-by-step
http://wiki.sdn.sap.com/wiki/display/XI/JMS
http://help.sap.com/saphelp_nw04/helpdata/en/45/20cc5dc2180733e10000000a155369/content.htm
http://www.stechno.net/sap-notes.html?view=sapnote&id=856346
http://help.sap.com/saphelp_nwpi71/helpdata/EN/f4/2d6189f0e27a4894ad517961762db7/content.htm
Regards
srinivas -
JMS Send Transaction Failing, due to resources could not be assigned
I am trying to get a transaction of a JMS send to work where the origination of the send occurs in domain A and the message queue is hosted in domain B. I have been able to get this to work; however, this issue has shown up in recent tests. I haven't changed anything other than the version of the Oracle database client that is being used. I don't see any relationship between that and the persistent store.
Both domains are hosted on the same computer and both domains are simple development domains. Trust is established between the domains using 'global trust'.
I'm running Weblogic Server 10.3.4..
I'm not sure how to get around this issue. I can't find any documentation...
My suspicion is that there needs to be some special configuration for the transaction, since I'm using the default persistence store. The warnings seem to indicate the problem. The AdminServer is hosted on domain A and the AuditAdminServer on domain B...
Any assistance will be greatly appreciated!
Thanks in advance...
Here is the stacktrace:
<Apr 11, 2013 11:17:05 AM MDT> <Warning> <JTA> <BEA-110405> <Resource WLStore_audit_domain__WLS_AuditAdminServer was not assigned to any of these servers: AdminServer AuditAdminServer >
<Apr 11, 2013 11:17:25 AM MDT> <Warning> <JTA> <BEA-110405> <Resource WLStore_audit_domain__WLS_AuditAdminServer was not assigned to any of these servers: AdminServer AuditAdminServer >
<Apr 11, 2013 11:19:47 AM MDT> <Error> <EJB> <BEA-010026> <Exception occurred during commit of transaction Name=[EJB gov.va.med.datasharing.core.ServiceBusImpl.processInbound(java.lang.String,java.lang.Object)],Xid=BEA1-003FA101855115C0DB45(13340960),Status=Rolling Back. [Reason=javax.transaction.SystemException: Aborting prepare because the following resources could not be assigned: WLStore_audit_domain__WLS_AuditAdminServer],numRepliesOwedMe=0,numRepliesOwedOthers=0,seconds since begin=183,seconds left=22,XAServerResourceInfo[DefaultXADataSource_vhie_domain]=(ServerResourceInfo[DefaultXADataSource_vhie_domain]=(state=rolledback,assigned=AdminServer),xar=DefaultXADataSource,re-Registered = false),XAServerResourceInfo[WLStore_audit_domain__WLS_AuditAdminServer]=(ServerResourceInfo[WLStore_audit_domain__WLS_AuditAdminServer]=(state=new,assigned=none),xar=null,re-Registered = false),XAServerResourceInfo[WLStore_vhie_domain_VhieFileStore]=(ServerResourceInfo[WLStore_vhie_domain_VhieFileStore]=(state=rolledback,assigned=AdminServer),xar=WLStore_vhie_domain_VhieFileStore1316539,re-Registered = false),SCInfo[vhie_domain+AdminServer]=(state=rolledback),SCInfo[audit_domain+AuditAdminServer]=(state=rolling-back),properties=({weblogic.transaction.name=[EJB gov.va.med.datasharing.core.ServiceBusImpl.processInbound(java.lang.String,java.lang.Object)]}),local properties=({weblogic.jdbc.jta.DefaultXADataSource=[ No XAConnection is attached to this TxInfo ]}),OwnerTransactionManager=ServerTM[ServerCoordinatorDescriptor=(CoordinatorURL=AdminServer+192.168.1.120:7001+vhie_domain+t3+, XAResources={WLStore_vhie_domain_VhieFileStore, SDSDataSource_vhie_domain, DefaultXADataSource_vhie_domain, eis/jms/WLSConnectionFactoryJNDIXA, WSATGatewayRM_AdminServer_vhie_domain},NonXAResources={})],CoordinatorURL=AdminServer+192.168.1.120:7001+vhie_domain+t3+): weblogic.transaction.RollbackException: Aborting prepare because the following resources could not be assigned: WLStore_audit_domain__WLS_AuditAdminServer
at weblogic.transaction.internal.TransactionImpl.throwRollbackException(TransactionImpl.java:1881)
at weblogic.transaction.internal.ServerTransactionImpl.internalCommit(ServerTransactionImpl.java:345)
at weblogic.transaction.internal.ServerTransactionImpl.commit(ServerTransactionImpl.java:239)
at weblogic.ejb.container.internal.BaseRemoteObject.postInvoke1(BaseRemoteObject.java:625)
at weblogic.ejb.container.internal.StatelessRemoteObject.postInvoke1(StatelessRemoteObject.java:49)
at weblogic.ejb.container.internal.BaseRemoteObject.__WL_postInvokeTxRetry(BaseRemoteObject.java:444)
at weblogic.ejb.container.internal.SessionRemoteMethodInvoker.invoke(SessionRemoteMethodInvoker.java:53)
at gov.va.med.datasharing.core.ServiceBus_r6xnti_ServiceBusImpl.processInbound(Unknown Source)
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
at java.lang.reflect.Method.invoke(Method.java:597)
at weblogic.ejb.container.internal.RemoteBusinessIntfProxy.invoke(RemoteBusinessIntfProxy.java:85)
at $Proxy89.processInbound(Unknown Source)
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
at java.lang.reflect.Method.invoke(Method.java:597)
at org.springframework.aop.support.AopUtils.invokeJoinpointUsingReflection(AopUtils.java:317)
at org.springframework.aop.framework.JdkDynamicAopProxy.invoke(JdkDynamicAopProxy.java:198)
at $Proxy91.processInbound(Unknown Source)
at gov.va.med.datasharing.web.ServiceBusDelegate.processInbound(ServiceBusDelegate.java:43)
at gov.va.med.datasharing.web.adc.PatientServiceImpl.changeADCStatus(PatientServiceImpl.java:58)
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
at java.lang.reflect.Method.invoke(Method.java:597)
at org.springframework.expression.spel.support.ReflectiveMethodExecutor.execute(ReflectiveMethodExecutor.java:69)
at org.springframework.expression.spel.ast.MethodReference$MethodValueRef.getValue(MethodReference.java:97)
at org.springframework.expression.spel.ast.CompoundExpression.getValueInternal(CompoundExpression.java:81)
at org.springframework.expression.spel.ast.SpelNodeImpl.getTypedValue(SpelNodeImpl.java:102)
at org.springframework.expression.spel.standard.SpelExpression.getValue(SpelExpression.java:98)
at org.springframework.binding.expression.spel.SpringELExpression.getValue(SpringELExpression.java:84)
at org.springframework.webflow.action.EvaluateAction.doExecute(EvaluateAction.java:75)
at org.springframework.webflow.action.AbstractAction.execute(AbstractAction.java:188)
at org.springframework.webflow.execution.AnnotatedAction.execute(AnnotatedAction.java:145)
at org.springframework.webflow.execution.ActionExecutor.execute(ActionExecutor.java:51)
at org.springframework.webflow.engine.support.ActionTransitionCriteria.test(ActionTransitionCriteria.java:82)
at org.springframework.webflow.engine.support.TransitionCriteriaChain.test(TransitionCriteriaChain.java:71)
at org.springframework.webflow.engine.Transition.canExecute(Transition.java:195)
at org.springframework.webflow.engine.Transition.execute(Transition.java:211)
at org.springframework.webflow.engine.impl.FlowExecutionImpl.execute(FlowExecutionImpl.java:393)
at org.springframework.webflow.engine.impl.RequestControlContextImpl.execute(RequestControlContextImpl.java:214)
at org.springframework.webflow.engine.TransitionableState.handleEvent(TransitionableState.java:119)
at org.springframework.webflow.engine.Flow.handleEvent(Flow.java:555)
at org.springframework.webflow.engine.impl.FlowExecutionImpl.handleEvent(FlowExecutionImpl.java:388)
at org.springframework.webflow.engine.impl.RequestControlContextImpl.handleEvent(RequestControlContextImpl.java:210)
at org.springframework.webflow.engine.ViewState.handleEvent(ViewState.java:232)
at org.springframework.webflow.engine.ViewState.resume(ViewState.java:196)
at org.springframework.webflow.engine.Flow.resume(Flow.java:545)
at org.springframework.webflow.engine.impl.FlowExecutionImpl.resume(FlowExecutionImpl.java:258)
at org.springframework.webflow.executor.FlowExecutorImpl.resumeExecution(FlowExecutorImpl.java:169)
at org.springframework.webflow.mvc.servlet.FlowHandlerAdapter.handle(FlowHandlerAdapter.java:183)
at org.springframework.webflow.mvc.servlet.FlowController.handleRequest(FlowController.java:174)
at org.springframework.web.servlet.mvc.SimpleControllerHandlerAdapter.handle(SimpleControllerHandlerAdapter.java:48)
at org.springframework.web.servlet.DispatcherServlet.doDispatch(DispatcherServlet.java:925)
at org.springframework.web.servlet.DispatcherServlet.doService(DispatcherServlet.java:856)
at org.springframework.web.servlet.FrameworkServlet.processRequest(FrameworkServlet.java:915)
at org.springframework.web.servlet.FrameworkServlet.doPost(FrameworkServlet.java:822)
at javax.servlet.http.HttpServlet.service(HttpServlet.java:727)
at org.springframework.web.servlet.FrameworkServlet.service(FrameworkServlet.java:796)
at javax.servlet.http.HttpServlet.service(HttpServlet.java:820)
at weblogic.servlet.internal.StubSecurityHelper$ServletServiceAction.run(StubSecurityHelper.java:227)
at weblogic.servlet.internal.StubSecurityHelper.invokeServlet(StubSecurityHelper.java:125)
at weblogic.servlet.internal.ServletStubImpl.execute(ServletStubImpl.java:300)
at weblogic.servlet.internal.TailFilter.doFilter(TailFilter.java:26)
at weblogic.servlet.internal.FilterChainImpl.doFilter(FilterChainImpl.java:56)
at org.springframework.orm.jpa.support.OpenEntityManagerInViewFilter.doFilterInternal(OpenEntityManagerInViewFilter.java:180)
at org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:107)
at weblogic.servlet.internal.FilterChainImpl.doFilter(FilterChainImpl.java:56)
at weblogic.servlet.internal.WebAppServletContext$ServletInvocationAction.wrapRun(WebAppServletContext.java:3715)
at weblogic.servlet.internal.WebAppServletContext$ServletInvocationAction.run(WebAppServletContext.java:3681)
at weblogic.security.acl.internal.AuthenticatedSubject.doAs(AuthenticatedSubject.java:321)
at weblogic.security.service.SecurityManager.runAs(SecurityManager.java:120)
at weblogic.servlet.internal.WebAppServletContext.securedExecute(WebAppServletContext.java:2277)
at weblogic.servlet.internal.WebAppServletContext.execute(WebAppServletContext.java:2183)
at weblogic.servlet.internal.ServletRequestImpl.run(ServletRequestImpl.java:1454)
at weblogic.work.ExecuteThread.execute(ExecuteThread.java:207)
at weblogic.work.ExecuteThread.run(ExecuteThread.java:176)
Caused by: javax.transaction.SystemException: Aborting prepare because the following resources could not be assigned: WLStore_audit_domain__WLS_AuditAdminServer
at weblogic.transaction.internal.TransactionImpl.abort(TransactionImpl.java:1153)
at weblogic.transaction.internal.ServerTransactionImpl.globalPrepare(ServerTransactionImpl.java:2200)
at weblogic.transaction.internal.ServerTransactionImpl.internalCommit(ServerTransactionImpl.java:279)
... 77 more
.>It turns out that those packages are, indeed, in extra.
I didn't think to look there, since I assumed that everything needed by base would be in [core].
I assumed wrong. -
Salut,
i am envisaged with a nasty problem calling a message-send operation from
a method (transaction-type="required") inside a session bean (transaction-type="container").
This problem occured in OC4J 10.1.3.1 and may fail also in 10.1.3.0. The same
code run under OC4J 10.1.2.x without any problems.
The adressed JMS type is a OEMS JMS and fails to work regardless if the JMS ressource
is using a file-persistence or is running in-memory. Anyway the factory is a
jms/XAQueueConnectionFactory, so the created queue must support XA transactions.
Another test with an advanced-queue JMS provider succeeded.
As a consequence of this, i believe that the OEMS provider shall cause the problem.
The original code is quite unspectaculary:
* The non-surprising thing is, that the QueueConnectionFactory
* is a XAQueueConnectionFactory.
QueueConnectionFactory qcf = (QueueConnectionFactory) (jndiContext.lookup(MY_QFAC));
Queue q = (Queue) (new InitialContext().lookup(MY_QUE));
c = qcf.createQueueConnection() ;
QueueSession s = c.createQueueSession(false, Session.AUTO_ACKNOWLEDGE);
[... create a message ]
QueueSender qs = s.createSender(q)
qs.send(m);
qs.close()
s.close();
c.close()
The funny thing is, that the queue-session behaves as it is working outside
of a transaction context. Inside the JMX-Console you will notice the
arrival of a message and ... a cancellation of it. This would not surprise
me, if this code sequence would have been called outside of
a Session bean, cause the absence of a queue-session.commit does not
fix the send message in the jms ressource.
As a matter of fact the code is executed inside a Session bean and
the connection.createQueueSession will notice this and forget both
given parameters, and let the covering transaction take over of the
JMS ressource. But this does not happen (completly).
The acknowledge-mode has been modified (SESSION_TRANSACTED)
but the code still does not work!
After i recognized that the enlist-ment did not work, i
decided to enfore the use of XA transaction by using the
XA classes and methods of JMS.
I startet to cast the jndi-references and:
XAQueueConnectionFactory qcf = (XAQueueConnectionFactory) (jndiContext.lookup(MY_QFAC));
Queue q = (Queue) (new InitialContext().lookup(MY_QUE));
XAQueueConnection c = qcf.createXAQueueConnection() ;
XAQueueSession s = c.createXAQueueSession();
[... create a message ]
QueueSender qs = s.createSender(q)
qs.send(m);
qs.close()
s.close();
c.close()
The funny thing is ... the code worked without any problem until
the send operation, where i received an JMSException, containing
the text:
Oc4jJMS.Session.hpcl057.4e9c06e4:1112674930d:-7fff.41,true,SESSION_TRANSACTED]: An attempt was made to perform work in a XA-backed session without being enlisted. Either the session must be enlisted (using the JMS Connector or JMS Adapter) to participate in the global transaction, or a non-XA connection and a non-XA session should be used to not participate in the global transaction.
How bizarre, i thought the enlistment has been taken place by invoking
the c.createXAQueueSession or c.createQueueSession(false, Session.AUTO_ACKNOWLEDGE);
How bizarre how bizarre
any clues ????OC4J JMS was changed to not auto-enlist in XA transactions.
In releases prior to 10.1.3 XA usage was not actually supported. (It did not meet all of the XA requirements when used with OC4J.)
Auto-enlisting by the JMS provider was also a spec violation, which was causing trouble for people who needed to do out-of-transaction work and had no way to do it.
In 10.1.3 XA usage is fully supported, but only when you use the JMS Connector. You can find the JMS Connector ("Oracle's Generic JMS Resource Adapter") demos here:
http://www.oracle.com/technology/tech/java/oc4j/1013/how_to/index.html#JMS
The JMS Connector is documented in the OC4J Services Guide, OEMS/JMS chapter.
-Jeff -
Need help about setting up a JMS sender channel
I just started to play with PI for a few weeks and I'm trying to setup a simple JMS sender channel to read stuff from a WebSphere MQ.
I've someone installed JMS adaptor for me, but we never know it is correctly installed or not. First question is "Is there any way we can verify JMS adapter is correctly installed or not?"
In the Design: integration builder, I've a very defined a very simple data type(src_dt) which is a string and a message type(src_mt) which uses resp_dt. Finally I created a message interface (test_mia_out) that contains src_mt. At this point of time, I don't need message mapping so I didn't configurate this section.
Then I went to Configuration: Integration builder and created a new communcation channel with the following setting:
Parameter section:
Adapter Type: JMS
Transport Protocol: WebSphereMQ (Non-JMS) <- if i don't use this option, i can't enter MQ connection detail in the Source section.
Message Protocol: JMS 1.x
Adapter Engine: Integration Server
Source section:
QueueConnectionFactory Java Class: com.ibm.mq.jms.MQQueueConnectionFactory
Queue Java Class: com.ibm.mq.jms.MQQueue
...MQ connection detail...(IP, Port, Queue Manager, Channel and Queue Name )
Transport Protocol: TCP/IP <- this is consists to server side setting
JMS-Compliant: JMS-Compliant
Since I only want a very simple working sample, again I didn't change the content in receiver determination, interface determaintion and sender agreement.
Now when I active this change and I saw the following error in the channel monitor:
Short Log - Channel has internal error
Admin Info - Exception: Channel with Status Unknown or Not Registered
I did stop and start the service, refresh CPA cache and even restart the entire PI server, I always see this message and cannot find any more detail description about what is causing this problem.
My PI Server version is 7.0 and MQ version is 5.3
There's very limited resource about how to setup to read MQ message in PI and I'm stuck now. Therefore, I need a help from some experienced people to tell me if I have did something wrong or missed some steps?
And if possible, could people mind to post a step by step go through how you setup it up?
Edited by: Robert Fu on Jan 10, 2008 6:51 AMBefore you use the JMS, you need to deploy some drivers related to specific MQseries, Kindly ensure that proper driver are deployed....
If you use MQSeries 53x.xxx, you must enter the following JAR files in aii_af_jmsproviderlib.sda.
com.ibm.mq.jar, com.ibm.mqbind.jar, com.ibm.mqjms.jar, connector.jar (use the JAR file from the J2EE client directory)
check this link it will give you more inofmration
http://help.sap.com/saphelp_nw04/helpdata/en/cd/d85a9d6fab7d4dbb7ae421f710626c/content.htm
check this to get the condifuration the JMS
How to use conversion modules in JMS - https://www.sdn.sap.com/irj/servlet/prt/portal/prtroot/docs/library/uuid/f02d12a7-0201-0010-5780-8bfc7d12f891
Ref How To Use the Content Conversion Module in JMS Adapter - https://websmp106.sap-ag.de/~form/sapnet?_SHORTKEY=01100035870000582377& -
JMS Sender Communication Channel problem
Hi XI gurus!!
I have a JMS Sender Communication Channel that cannot get information from JMS TIBCO queue.
In defaultTrace.XX.trc I see the following information and errors:
#1.#00144F249F1500C70000087D00002D8300044A22A193A198#1207412506993#com.sap.aii.adapter.jms.core.connector.ConnectorImpl#sap.com/com.sap.xi.mdt#com.sap.aii.adapter.jms.core.connector.ConnectorImpl.buildConnection()#EFFIGUEIREDO#7191##sappix02_X02_21291150#XIAPPLUSER#81664000032811ddaadc00144f249f15#SAPEngine_Application_Thread[impl:3]_52##0#0#Path##Plain###Exiting method#
#1.#00144F249F1500C70000087E00002D8300044A22A193A201#1207412506993#com.sap.aii.adapter.jms.core.connector.ConnectorImpl#sap.com/com.sap.xi.mdt#com.sap.aii.adapter.jms.core.connector.ConnectorImpl.buildSessions()#EFFIGUEIREDO#7191##sappix02_X02_21291150#XIAPPLUSER#81664000032811ddaadc00144f249f15#SAPEngine_Application_Thread[impl:3]_52##0#0#Path##Plain###Entering method#
#1.#00144F249F1500C70000087F00002D8300044A22A193A552#1207412506993#System.err#sap.com/com.sap.xi.mdt#System.err#EFFIGUEIREDO#7191##sappix02_X02_21291150#XIAPPLUSER#81664000032811ddaadc00144f249f15#SAPEngine_Application_Thread[impl:3]_52##0#0#Error##Plain###2008-04-05 17:21:46 [161906789 SAPEngine_Application_Thread[impl:3]_52] [TIBCO EMS]: createQueueSession qsess=198151 qconn=45502 tran=true ackmode=1#
#1.#00144F249F1500C70000088000002D8300044A22A193A670#1207412506994#com.sap.aii.adapter.jms.core.connector.ConnectorImpl#sap.com/com.sap.xi.mdt#com.sap.aii.adapter.jms.core.connector.ConnectorImpl.buildSessions()#EFFIGUEIREDO#7191##sappix02_X02_21291150#XIAPPLUSER#81664000032811ddaadc00144f249f15#SAPEngine_Application_Thread[impl:3]_52##0#0#Info##Java###Sucessfully created session {0} for profile {1}#2#com.tibco.tibjms.TibjmsQueueSession@3a5f233#
{GenericConnectionProfileImpl
{Description=ConnectionProfile of channel: JMS_Sender_loginCheckReq_001on node: 21291150 having object id: 7e7ee107bc2031d2bc79fa2fce15bbed,
JmsMessageSelector=,
ConnectionFactoryConstructor=null,
ConnectionFactoryFactoryInvocation=null,
ConnectionFactoryInvocations=[],
DestinationConstructor=
{ConstructorInvocation
{className=null,
invokeParams=[]
DestinationInvocations=[],
MessageInvocations=[],
DestinationName=null,
User=,
Password=,
isJmsSessionTransacted=true,
InitialContextEnvironment={java.naming.provider.url=190.10.0.133:9222, java.naming.factory.initial=com.tibco.tibjms.naming.TibjmsInitialContextFactory},
LookupConnectionFactory=QueueConnectionFactory,
LookupDestination=GALP.PRD.TIGERC.LOGIN.REQ,
SerializedConnectionFactoryPath=null,
SerializedDestinationPath=null,
Flags=0000000000000000000000000000000000000000000000000000100000000010
#1.#00144F249F1500C70000088100002D8300044A22A193A7EE#1207412506994#com.sap.aii.adapter.jms.core.connector.ConnectorImpl#sap.com/com.sap.xi.mdt#com.sap.aii.adapter.jms.core.connector.ConnectorImpl.buildSessions()#EFFIGUEIREDO#7191##sappix02_X02_21291150#XIAPPLUSER#81664000032811ddaadc00144f249f15#SAPEngine_Application_Thread[impl:3]_52##0#0#Path##Plain###Exiting method#
#1.#00144F249F1500C70000088200002D8300044A22A193A85F#1207412506994#com.sap.aii.adapter.jms.core.connector.JndiConnectorImpl#sap.com/com.sap.xi.mdt#com.sap.aii.adapter.jms.core.connector.JndiConnectorImpl.createDestination()#EFFIGUEIREDO#7191##sappix02_X02_21291150#XIAPPLUSER#81664000032811ddaadc00144f249f15#SAPEngine_Application_Thread[impl:3]_52##0#0#Path##Plain###Entering method#
#1.#00144F249F1500C70000088300002D8300044A22A193B153#1207412506997#System.err#sap.com/com.sap.xi.mdt#System.err#EFFIGUEIREDO#7191##sappix02_X02_21291150#XIAPPLUSER#81664000032811ddaadc00144f249f15#SAPEngine_Application_Thread[impl:3]_52##0#0#Error##Plain###2008-04-05 17:21:46 [161906789 SAPEngine_Application_Thread[impl:3]_52] [TIBCO EMS]: createQueueConnection qconn=45503 qconfac=QueueConnectionFactory[url=tcp://190.10.0.133:9222;clientID=null;Properties={}] user=null#
#1.#00144F249F1500C70000088400002D8300044A22A193E3CF#1207412507009#com.sap.aii.adapter.jms.core.connector.JndiConnectorImpl#sap.com/com.sap.xi.mdt#com.sap.aii.adapter.jms.core.connector.JndiConnectorImpl.createDestination()#EFFIGUEIREDO#7191##sappix02_X02_21291150#XIAPPLUSER#81664000032811ddaadc00144f249f15#SAPEngine_Application_Thread[impl:3]_52##0#0#Path##Plain###Exiting method#
#1.#00144F249F1500C70000088500002D8300044A22A193E571#1207412507010#com.sap.aii.adapter.jms.core.connector.ConnectorImpl#sap.com/com.sap.xi.mdt#com.sap.aii.adapter.jms.core.connector.ConnectorImpl.executeDestinationInvocations#EFFIGUEIREDO#7191##sappix02_X02_21291150#XIAPPLUSER#81664000032811ddaadc00144f249f15#SAPEngine_Application_Thread[impl:3]_52##0#0#Path##Plain###Entering method#
#1.#00144F249F1500C70000088600002D8300044A22A193E64B#1207412507010#com.sap.aii.adapter.jms.core.connector.ConnectorImpl#sap.com/com.sap.xi.mdt#com.sap.aii.adapter.jms.core.connector.ConnectorImpl.executeDestinationInvocations#EFFIGUEIREDO#7191##sappix02_X02_21291150#XIAPPLUSER#81664000032811ddaadc00144f249f15#SAPEngine_Application_Thread[impl:3]_52##0#0#Path##Plain###Exiting method#
#1.#00144F249F1500C70000088700002D8300044A22A193E714#1207412507010#com.sap.aii.adapter.jms.core.connector.ConnectorImpl#sap.com/com.sap.xi.mdt#com.sap.aii.adapter.jms.core.connector.ConnectorImpl.buildMessageProducers()#EFFIGUEIREDO#7191##sappix02_X02_21291150#XIAPPLUSER#81664000032811ddaadc00144f249f15#SAPEngine_Application_Thread[impl:3]_52##0#0#Path##Plain###Entering method#
#1.#00144F249F1508770000000000002D8300044A22A83A6308#1207412618584#System.err#sap.com/com.sap.xi.mdt#System.err#EFFIGUEIREDO#7191##sappix02_X02_21291150#XIAPPLUSER#81664000032811ddaadc00144f249f15#Thread[TIBCO EMS TCPLink Reader (45502),5,SAPEngine_Application_Thread[impl:3]_Group]##0#0#Error##Plain###2008-04-05 17:23:38 [2092826462 TIBCO EMS TCPLink Reader (45502)] [TIBCO EMS]: received msg from daemon conn=45502 seqid=40664365 msgid=ID:EMS-SERVER.91446ECB042B480:12545#
#1.#00144F249F1508770000000100002D8300044A22A83A650C#1207412618585#System.err#sap.com/com.sap.xi.mdt#System.err#EFFIGUEIREDO#7191##sappix02_X02_21291150#XIAPPLUSER#81664000032811ddaadc00144f249f15#Thread[TIBCO EMS TCPLink Reader (45502),5,SAPEngine_Application_Thread[impl:3]_Group]##0#0#Error##Plain###2008-04-05 17:23:38 [2092826462 TIBCO EMS TCPLink Reader (45502)] [TIBCO EMS]: post msg to session sess=198151 cons=261547 seqid=40664365 msgid=ID:EMS-SERVER.91446ECB042B480:12545#
In the last two lines we can see that SAP XI do a connection to TIBCO and is getting an unknown error, even in debug (note 856346) I cannot get any information.
Actually we are running SAP XI 3.0 SP21, but this was working fine in SAP XI 3.0 SP17. We have more than 100 Communication Channels working fine and only is having this strange behavior.
BTW if we put manually information in TIBCO QUEUE it works fine, but automatically doesn't pick the message.
ThanksHI,
As per the trace details given please consider few of the below options....
What do u see in adapter monitoring tool for JMS adapter?
http://hostname:5XX00/mdt/amtServlet
Did you follow the document on correlation of JMS messages?
In communication channel You have to set
Correlation ID -> XI conversationID
XI message ID->GUID
XI Conversation ID -> JMS correlation ID.
Now in the custom J2EE application you should set
jmscorrelationid of message before sending in to queue to jms correlation id of message before receiving from the queue.
This thread deals with the issue..
JMS Queue monitoring
Check if the JMS Sender adapter EOIO is with serialized messages
Thanks
Swarup -
JMS (Sender Communication Channel) and MQ in Mainframe (Legacy) System
Hi All,
Can we use JMS Sender Communication Channel in XI that runs on Windows 2003 server to DIRECTLY poll messages from MQ in Mainframe (Legacy) system??
I understand that we can install MQ on XI server and have mainframe push the messages to XI MQ so that JMS can poll but wanted to see if there is a way to do this without having MQ on XI server.
If you know of any documentation regarding this, can you please post it?
Thanks,
JayJung,
Are you looking for this help:
/people/william.li/blog/2006/11/13/how-to-use-saps-webas-j2ees-jms-queue-in-exchange-infrastructure
Also check this sap help:
http://help.sap.com/saphelp_nw04/helpdata/en/cd/d85a9d6fab7d4dbb7ae421f710626c/content.htm
http://help.sap.com/saphelp_nw04/helpdata/en/f4/2d6189f0e27a4894ad517961762db7/content.htm
---Satish -
Hi All,
I am trying to Pick two different XML types of Messages from a Single Queue.
For Example :- Despatch Advice and Replishment Proposal.
Queue Name is : - JMS_XI_Sender
SAP XI is not allowing me to create two different sender agreements for the same communication channel.
Service :- BS_JMS
Interface : - Despatch_Advice_OB
CC :- JMS_SENDER
and
Service :- BS_JMS
Interface : - Replishment_Proposal_OB
CC :- JMS_SENDER
Can any one tell how can SAP XI will differentiate these two messages and sends to two different receivers.Hi Rama,
I am using XML Despatch Advice and Replishment Proposal types .
Basically I do have one sender which will post Two types of XML messages in to one single MQ Queue.
SAP XI/PI has to pick that message and then needs to check what is the Value in the "Message Type" Tag .
I do also have two different Interfaces and Mappings and Two different Receivers.
Depending on the value in Message Type SAP XI/PI has to check for the Particular Interface and Mapping, finally needs post the message to Particular Receiver
You need to have defined two different sender agreements with two different Communication channels.
In the JMS adapter Sender configuration you can mention the Queue name to pick the message . After picking the message the JMS sender adapter need to map it to the correct message type - it is defined by message interface defined in the sender agreement .
Please let us know if you need any further calrification.
Regards,
kishore -
JMS sender adapter is not picking up message from MQ
Hi Experts,
I have configured the JMS sender adapter for getting message from Websphere MQ. In RWB the adapter and the communicaiton channel all looking good. The trace file tells me the connection to the queue has been established.
But the problem is this JMS sender adapter is not picking up message from the Queue defined on the MQ site.
Any Idea what could be wrong?
Thanks!
Jason
JasonHi,
1) Can you activate the JMS adapter again ( edit save and activate it )
2) Check whether the right Queue is addressed.
Regards
Agasthuri Doss -
Content conversion at JMS sender communication channel
Hi friends,
I have to convert fixed length flat structure to xml message.Therefor i have to do content conversion at the JMS sender comm channel.Can someone please explainthe procedure?
data in the queue would be like as follows.
9999000000124646q12233appej500rc11147822zordHi Manikandan,
The structure conversion can handle files containing rows with different structures. In
each row there is a key field to identify the structure. The rows with identical key fields of
course have identical structures.
Let us assume that we have a sample file with four rows. Each row has a two-byte key
field; the first row has a second field with ten bytes; the structure of the second and third
rows is the same and comprises two additional fields with three bytes each; the last row
has a second field with five bytes:
AA1234567890
BBABCABC
BBXYZXYZ
CC12345
The configuration for the conversion could look like this:
Module Configuration
Module Key Parameter Name Parameter Value
Plain2XML Transform.Class com.sap.aii.messaging.adapter.Conversion
Plain2XML Transform.ContentType text/xml;charset=utf-8
Plain2XML xml.conversionType StructPlain2XML
Plain2XML xml.processFieldNames fromConfiguration
Plain2XML xml.documentName MyDocument
Plain2XML xml.documentNamespace http://xi.com/test
Plain2XML xml.recordsetName MyRecordset
Plain2XML xml.recordsetStructure NameA,1,NameB,*,NameC,1
Plain2XML xml.keyFieldName MyKey
Plain2XML xml.keyFieldType CaseSensitiveString
Plain2XML xml.NameA.fieldNames MyKey,field-nameA
Plain2XML xml.NameA.fieldFixedLengths 2,10
Plain2XML xml.NameA.keyFieldValue AA
Plain2XML xml.NameB.fieldNames MyKey,field-nameB1,field-nameB2
Plain2XML xml.NameB.fieldFixedLengths 2,3,3
Plain2XML xml.NameB.keyFieldValue BB
Plain2XML xml.NameC.fieldNames MyKey,field-nameC
Plain2XML xml.NameC.fieldFixedLengths 2,5
Plain2XML xml.NameC.keyFieldValue CC
In xml.recordsetStructure, you add a name for each different structure followed by the
number of occurrences or an asterisk for unbounded occurrences. For each structure
name, you configure the structure separately in a separate namespace such as
xml.NameA.fieldNames and so on.
If your source file is a CSV file, replace each xml.XXX.fieldFixedLengths with
xml.XXX.fieldSeparator.
the result of this conversion looks like this:
<ns:MyDocument xmlns:ns="http://xi.com/test">
<MyRecordset>
<NameA>
<MyKey>AA</MyKey>
<field-nameA>1234567890</field-nameA>
</NameA>
<NameB>
<MyKey>BB</MyKey>
<field-nameB1>ABC</field-nameB1>
<field-nameB2>ABC</field-nameB2>
</NameB>
<NameB>
<MyKey>BB</MyKey>
<field-nameB1>XYZ</field-nameB1>
<field-nameB2>XYZ</field-nameB2>
</NameB>
<NameC>
<MyKey>CC</MyKey>
<field-nameC>12345</field-nameC>
</NameC>
</MyRecordset>
</ns:MyDocument>
Regards,
Vinod. -
EOIO JMS Sender Channel in Error
Hi All,
We have a error on JMS sender channels in Pre-Production environment.
Let me explain you the problem.
On Dev and QA there is no cluster environment. On Pre-production we have 3 clusters. We tested this Sender JMS channel on Dev and QA without giving a Cluster ID and it worked.
Now on Pre prod, we had not mentioned the cluster ID and when messages were picked from the Queue, the channel went into a error mode stating the " Channel is locked due to EOIO".
Then when we added the cluster ID to the channel, in RWB the channel goes into inactive mode. The status is " The EOIO channel has been made inactive on Node 206485150"
The node mentioned in channel is 251902150. This means that the other node has been made inactive. That sounds logical as it is not supposed to process the message.
But the node which is mentioned in the channel has also gone into error mode.
" Error creating JMS connection. failed to create MQManager for ' Hostname:Channel name'". An MQException occured: Completion code 2, Reason 2009
MQJE016: MQ queue managerclosed channel immediatly during connect. Closure reason= 2009, and erro code as MQJMS2005
After this all other sender JMS channels have gone into the same error mode on this node.
We have stopped the JMS service and started it. We also restarted the XI server but no change was encountered.
Please let us know whether JMS sender with EOIO works with cluster ID as I'm not able to find any document which says that JMS with EOIO works succesfully.
Please also let us know how to overcome the error on this node.
Thank you.
Regards,
Sarvesh DesaiCheck if there is any unprocessed message stuck in the queue:
/people/stefan.grube/blog/2006/04/27/how-to-deal-with-stuck-eoio-messages-in-the-xi-30-adapter-framework
Maybe you are looking for
-
How to get CC on my new computer
Hello so my computer crashed last week and i need to get my CC on this new computer, I have a subscription through my school
-
Install Lightroom and Photoshop on 2 Mac's
Have purchased a copy of lightroom and photoshop and they are installed in my Mac. Understand that the license permits installing these on my new laptop also. Is this correct? If so, how do I get a copy for my laptop?
-
Basic question related to EKKO and EKPO
Hi experts, I have invoice document header and line item data in an internal table(From RBKP and RSEG). From RSEG I have PO number(EBELN) and PO line item(EBELP). I want to find out the corresponding WBS element, costcenter and GL account of the PO n
-
Where is my iTunes Setup file?
After clicking Save on the Download prompt, it just disappeared. I can't find any downloaded file. Multiple repeats on two different computers have the same result. Have it been downloaded? Where can I find it to click on to install iTunes?
-
How do I remove ICloud as my email server
How can I remove ICloud as my mail server?