Get MDB to subscribe to JMS topic deployed on different server instance
Can you do this?
I have 2 servers.
I want to Have the MDB deployed to one server subscribe to the JMS topic deployed on the second server.
This seems like it should be possible. Is it?
Hi, I have the similar situation.
On the OC4J1 I have topic (jms/MojTopic) and factory (jms/MojTopicFactory), and my client (on the same OC4J) send some messages on that topic.
I used this solution because the client can always send messages, regardless of network failure...
On the OC4J2 I have MDB that is setup like this (orion-ejb-jar.xml):
<?xml version = '1.0' encoding = 'UTF-8'?>
<orion-ejb-jar>
<enterprise-beans>
<message-driven-deployment name="LogBean"
destination-location="jms/MojTopic"
connection-factory-location="jms/MojTopicFactory">
</message-driven-deployment>
</enterprise-beans>
</orion-ejb-jar>
I configured jms/MojTopicFactory to the host of OC4J1, but still don't understand why I have to set up jms/MojTopic?
Ok, this way I can send messages to OC4J1 and OC4J2 pick up that messages, BUT, when I disconnect OC4J2 from the network I get the following error (application.log from OC4J2):
06/12/27 11:48:35.171 10.1.3.1.0 Started
06/12/27 11:51:34.687 Error in MessageDrivenBean 'LogBean': javax.jms.JMSException: deqMessage
javax.jms.JMSException: deqMessage
at com.evermind.server.jms.JMSUtils.make(JMSUtils.java:1072)
at com.evermind.server.jms.JMSUtils.toJMSException(JMSUtils.java:1152)
at com.evermind.server.jms.TCPJMSRemoteServer.shutdownForce(TCPJMSRemoteServer.java:295)
at com.evermind.server.jms.TCPJMSRemoteServer.execute(TCPJMSRemoteServer.java:202)
at com.evermind.server.jms.JMSRemoteServer.deqMessage(JMSRemoteServer.java:575)
at com.evermind.server.jms.EvermindSession.receive(EvermindSession.java:1254)
at com.evermind.server.jms.EvermindSession.getOneMessage(EvermindSession.java:1151)
at com.evermind.server.jms.EvermindMessageConsumer.getOneMessage(EvermindMessageConsumer.java:444)
at com.evermind.server.jms.EvermindMessageConsumer.receive(EvermindMessageConsumer.java:192)
at com.evermind.server.ejb.MessageDrivenConsumer.receiveMessage(MessageDrivenConsumer.java:424)
at com.evermind.server.ejb.MessageDrivenConsumer.processMessages(MessageDrivenConsumer.java:213)
at com.evermind.server.ejb.MessageDrivenConsumer.run(MessageDrivenConsumer.java:169)
at com.evermind.util.ReleasableResourcePooledExecutor$MyWorker.run(ReleasableResourcePooledExecutor.java:303)
at java.lang.Thread.run(Thread.java:595)
Caused by: java.net.SocketException: Connection reset
at java.net.SocketInputStream.read(SocketInputStream.java:168)
at java.io.BufferedInputStream.fill(BufferedInputStream.java:218)
at java.io.BufferedInputStream.read(BufferedInputStream.java:235)
at java.io.DataInputStream.readInt(DataInputStream.java:353)
at com.evermind.server.jms.JMSRemoteServer.processFlag(JMSRemoteServer.java:612)
at com.evermind.server.jms.JMSRemoteServer.getMessage(JMSRemoteServer.java:632)
at com.evermind.server.jms.JMSRemoteServer.access$300(JMSRemoteServer.java:72)
at com.evermind.server.jms.JMSRemoteServer$19.getReply(JMSRemoteServer.java:592)
at com.evermind.server.jms.JMSRemoteServer.readResponse(JMSRemoteServer.java:648)
at com.evermind.server.jms.TCPJMSRemoteServer.execute(TCPJMSRemoteServer.java:189)
... 10 more
When I connect OC4J2 again, the MDB doesn't pick up those messages, so my mission of 100% sure sending of messages fails :(
Any help?
Thanx,
Vanja
Similar Messages
-
Get back the Message from JMS Topic
Hi,
I want to Process message came to the JMS topic (say for past 10 days) in PRODUCTION environment . Is there any way i can get those messages from Persistent Store(File/JDBC).Any sugesstions????
thanks in advance...As far as I think you can not directly read messages from persistence store without putting the message integrity at stake.
Also, do you know if the messages are actually in the persistence store? Messages will persisted by the Topic only if there is any durable subscriber is there which has not read those messages. If there are no durable subscribers or if all durable subscribers have read their copy of the message from Topic the messages will be removed from persistence storage. -
Getting portal server name using webdynpro deployed in different server.
Hi All,
I have a question on accessing the servername where my portal is running which has an iview created for a webdynpro which is deployed in other server.I have J2ee server1 on which portal is installed and running, now i have developed webdynpro with authentication and deployed to another J2ee server2. In server1 i want to create the iview through which i can access the webdynpro deployed in server2, now in my webdynpro i used NavigationTarget with LinkToURL element where user can navigate to the one of portal page which requires the servername of portal, so how can i get the servername where portal is running(server1) if my webdynpro is deployed in server2.please provide what are the steps rerquired to get this scenario running and also for i used the target propery of linktourl to _self and _top but its opening in new browser, i want link to open in same window.Please give your valuable suggestions.
Thanks,
Pkv.Hi..
try {
InetAddress ina = InetAddress.getLocalHost();
wdComponentAPI.getMessageManager().reportSuccess("Host name is "ina.getHostName()"..Host address "ina.getHostAddress()"...CanonicalHostName "ina.getCanonicalHostName()"...by name "+ina.getByName(ina.getHostName()));
} catch (UnknownHostException e) {
// TODO Auto-generated catch block
wdComponentAPI.getMessageManager().reportSuccess(""+e);
this is the small peice of to know and tell me ur requirment is on Development Server or Production,for development above code is enough if not than need to do more
Regards
Rajesh -
How to create iView for WDPApplication deployed in another server instance?
hi experts,
I am in the Enterprise Portal (Server01), need to create iViews for deployed WDP applications (Server02).
When creating a new iViews, i can only get WDP applications deployed in Server01 as in [this screen|http://img98.imageshack.us/img98/6361/newiview.png].
My question is, is it possible for me to create iViews in Server01 for WDP applications deployed in Server02? How??
Thanks in advance.
Regards,
kityeinHi,
You can either go with an [url|http://help.sap.com/saphelp_nw70/helpdata/en/4c/eee2bedf3b4082b14a933e5ee63472/frameset.htm] iView or might want to check with [federating|http://help.sap.com/saphelp_nw70/helpdata/en/67/7e70424edcc553e10000000a1550b0/frameset.htm] your portals.
Kind Regards,
Mrityunjay. -
Deployment in different server
Hi,
Can anyone tell me how to deploy an application that is created in our workspace in another server,ie., if i develop an application how will i make it viewable to a different user in a another server different from mine.
please let me know.
Thanks.Chapter 11 in the HTML DB Users Guide would be a good place to start.
-
Flex with JMS Topic/Queue for Asynchronous messaging
I have been working on Flex and JMS integration using Data
Services for Asynchronous messaging. I am able to do this
successfuly. Now I am in need to do the same without using the Data
Services piece.
For doing this I have done the following ......
I have created a JMS Webservice in the Oracle JDeveloper 10G
along with Webservice Client.I am able to Listen to JMS Topic/Queue
( this has been created in the Oracle AS ) using this Webservice
and receive the messages from this JMS Topic/Queue
Asynchronously.....
But If I need to use the Flex Client , I am not able to
Communicate with this Webservice to listen to the JMS Topic/Queue.
Did any one in this forum tried to communicate with JMS
Topic/Queue without using Flex Data Service.If so please share your
inputs.Here is my confusion (I'm using J2EESDK1.3).
On a local server I did the following
j2eeadmin -addJmsFactory jms/RemoteTCF topic -props url=corbaname:iiop:mars#mars
In the app client running on the local server I had the code
ic = new InitialContext();
// JNDI lookup. The resource factory ref points to the
// Remote Connection Factory I registered
tcf = (TopicConnectionFactory)ic.lookup("java:comp/env/jms/TopicConnectionFactory");
// The env ref points to jms/Topic of the local server
pTopic = (Topic)ic.lookup("java:comp/env/jms/PTopic");
So I'm assuming that I'm using a connection factory that connect to mars and a Topic on the local box.
On remote server mars, I deployed a MDB which use
jms/TopicConnectionFactory and jms/Topic. But I'm thinking this jms/Topic and the one I used on the local box are not the same one. Right? Then how could the app client and the MDB share messages?
Some of my explanation I don't if it makes sense or not.
ConnectionFactory is a way to tell what kind of connection it could generate (Queue, Topic, Durable etc) and Where the connection would go to (local or remote).'
As for as destination, I'm not sure. How could two server share one Topic? -
Bea 9.2 : deployment to managed server failed (J2EE:160149)
Hi,
I am trying to deploy portal application to managed server instance. When i am deploying it to an admin server, deployment is fine but when i am deploying to managed server instance, it fails with following error:
********* log start ************
[J2EE:160149]Error while processing library references. Unresolved application library references, defined in weblogic-application.xml: [Extension-Name: wlp-groupspace-app-lib, Specification-Version: 9.2, Implementation-Version: 9.2.1, exact-match: false], [Extension-Name: wlp-collab-portlets-app-lib, Specification-Version: 9.2, Implementation-Version: 9.2.1, exact-match: false], [Extension-Name: wlp-framework-full-app-lib, Specification-Version: 9.2, Implementation-Version: 9.2.1, exact-match: false], [Extension-Name: wlp-commerce-tools-support-app-lib, Specification-Version: 9.2, Implementation-Version: 9.2.1, exact-match: false], [Extension-Name: wlp-tools-support-app-lib, Specification-Version: 9.2, Implementation-Version: 9.2.1, exact-match: false], [Extension-Name: wlp-webdav-app-lib, Specification-Version: 9.2, Implementation-Version: 9.2.1, exact-match: false], [Extension-Name: wlp-tools-admin-app-lib, Specification-Version: 9.2, Implementation
********* log end **************
Can you note that the it was fine when deployment was done to admin server.
I am not sure whether i have set up the managed server instance in the proper way. This is what i did to set up managed server instance before deployment
(1) create weblogic domain
(2) create managed server listening at port 8001. (admin is at 7001)
(3) created machine and in the node manager added the managed server to the machine just created.
(4) started node manager through script, started admin server and started managed server by
startManagedWebLogic.cmd managedserver admin_url
=> No errors so far. but now when i try to deploy portal application to managed server instance, it fails.
Any pointers???
(ps : can a moderator help me to move this message to the portal forum instead of here..thanx)
Edited by tamugrg13 at 03/25/2007 8:09 PMdon't worry about this. i have resolved this by deploying into a cluster. looks like BEA doesn't support non-clustered deployment to managed server instances.
-
Deploy MDBs in Different WL Instances Subscribed to Same Topic
Let's say I have MDBs X, Y, and Z, each needing to be deployed to a different Weblogic
server. All need to subscribe to the same Topic. How is this done? Specifically,
how is the Topic configured and how are the MBDs deployed?
Thanks,
Jim Goodwin
For your reading enjoyment, I'm posting some of my
internal notes on durable subscriber MDB's. This consolidates
newsgroup information in one place.
Jim Goodwin wrote:
> "Jim Goodwin" <[email protected]> wrote:
>
>>Let's say I have MDBs X, Y, and Z, each needing to be deployed to a different
>>Weblogic
>>server. All need to subscribe to the same Topic. How is this done? Specifically,
>>how is the Topic configured and how are the MBDs deployed?
>>
>>Thanks,
>>
>>Jim Goodwin
>
>
> Bah! Nevermind. I found the information I was looking for in other threads.
A durable topic subscriber MDB uses its name to generate its client-id.
Since JMS enforces uniqueness on this client-id, this means that if a durable
subscriber MDB is deployed to multiple servers only one server will be able
to connect. Some applications want a different behavior where
each MDB pool on each server gets its own durable subscription.
The MDB durable subscription id, which must be unique on its topic, comes from:
1) <jms-client-id>MyClientID</jms-client-id>
(the weblogic dtd)
2) if (1) is not set then the client-id
comes from the ejb name.
The durable subscription is uniquely identified within a cluster by a
combination of "connection-id" and "subscription-id". Only one active
connection may use a particular "connection-id" within a WebLogic cluster.
The connection id comes from:
1) The "ClientId" attribute configured on the WebLogic connection factory.
This defaults to null. Note that if the ClientId is set on a connection
factory, only one connection created by the factory
may be active at a time.
2) If (1) is not set, then, as with the subscriber-id,
the connection-id is derived from jms-client-id descriptor attribute:
<jms-client-id>MyClientID</jms-client-id>
(the weblogic dtd)
3) If (1) and (2) are not set, then, as with the subscriber-id,
the connection-id is derived from the ejb name.
Work-around:
A) Create a custom connection-factory for each server:
1) configure "JNDIName" to the same value across all servers
("myMDBCF" in this example)
2) configure "ClientId" to a unique value per server
3) enable "UserTransactionsEnabled"
4) enable "XAConnectionFactoryEnabled"
5) set "AcknowledgePolicy" to "ACKNOWLEDGE_PREVIOUS"
6) target the CF at a single WebLogic server
(Number 5 is required for non-transactional topic MDBs)
B) In the MDB's weblogic-ejb-jar.xml descriptor, set the MDB's connection
factory to the JNDI name of the custom connection factories configured in
(A). Optionally, also specify the subscriber-id via the jms-client-id
attribute.
<weblogic-ejb-jar>
<weblogic-enterprise-bean>
<ejb-name>exampleBean</ejb-name>
<message-driven-descriptor>
<connection-factory-jndi-name>myMDBCF</connection-factory-jndi-name>
<jms-client-id>myClientID</jms-client-id>
</message-driven-descriptor>
</weblogic-enterprise-bean>
</weblogic-ejb-jar>
C) Target the application at the same servers that have the custom connection
factories targeted at them.
Notes/Limitations:
1) If the MDB is moved from one server to another, the MDB's corresponding
connection-factory must be moved with it.
2) This work-around will not work if the destination is not in the same
cluster as the MDB. (The MDB can not use the local connection factory, which
contains the connection-id, as connection factories do not work unless they
are in the same cluster as the destination.)
3) This work-around will not work for non-WebLogic JMS topics.
-
Getting DOM Parsing Exception in translator while Dequeuing the message from JMS topic
Hi All,
Hope you all doing good.
I have an issue.
I am running on 11.1.1.5 SOA suite version on Linux.
In my aplication I have 4 projects which are connected by with topic/queue.
But in one of the communication, the JMS topic throws me the below error in the log, but dequeue happend perfectly fine and the application runs smoothly.
[ERROR] [] [oracle.soa.adapter] [tid: weblogic.work.j2ee.J2EEWorkManager$WorkWithListener@530c530c] [userId: <anonymous>
] [ecid: 5552564bd7cf9140:-117a2347:142149c715a:-8000-00000000069dd133,0] [APP: soa-infra] JMSAdapter <project1>
JmsConsumer_sendInboundMessage:[des
tination = <TOPIC NAME> subscriber = <Consumer project name>
Error (DOM Parsing Exception in translator.[[
DOM parsing exception in inbound XSD translator while parsing InputStream.
Please make sure that the xml data is valid.
) while preparing to send XMLRecord JmsXMLRecord
[ERROR] [] [oracle.soa.adapter] [tid: weblogic.work.j2ee.J2EEWorkManager$WorkWithListener@530c530c] [userId: <anonymous>
] [ecid: 5552564bd7cf9140:-117a2347:142149c715a:-8000-00000000069dd133,0] [APP: soa-infra] JMSAdapter <project name>
java.lang.Exception: DOM Parsing Exception in translator.
DOM parsing exception in inbound XSD translator while parsing InputStream.
Please make sure that the xml data is valid.
at oracle.tip.adapter.jms.inbound.JmsConsumer.translateFromNative(JmsConsumer.java:603)
at oracle.tip.adapter.jms.inbound.JmsConsumer.sendInboundMessage(JmsConsumer.java:403)
at oracle.tip.adapter.jms.inbound.JmsConsumer.send(JmsConsumer.java:1161)
at oracle.tip.adapter.jms.inbound.JmsConsumer.run(JmsConsumer.java:1048)
at oracle.integration.platform.blocks.executor.WorkManagerExecutor$1.run(WorkManagerExecutor.java:120)
at weblogic.work.j2ee.J2EEWorkManager$WorkWithListener.run(J2EEWorkManager.java:184)
at weblogic.work.DaemonWorkThread.run(DaemonWorkThread.java:30)
But when I try putting the archived data on this topic, it throws me the same error but even dequeuing doesnt happen.
I have extracted the payload and validated against the xsd, it looks fine and even the validator doesnt throw me any error.
But I guess I am missing something, which I am immediately not getting.
Please let me know, if I am soemthing here which is causing this erro.
Thanks,
ChandruI searched about this error, but no luck.
First time when the message dequeues, the consumer can consume the message but throws the error in the log.
But when I put the message back into queue from archive directory, the consumer doesnt consume message and throws me the same error.
Does anyone faced this sort of issue.
I checked my xsd throughly, and validated it externally. but didnt fine any error.
if anyone knows, suggest me how to resolve this issue.
thanks & regards
Chandru -
Topic subscriber in JMS cluster
I have clustered 2 JMS servers, A and B. The subscriber is listening to the topic
. The subscriber used the cluster ip address in the intial context to connect to
the server t3://A,B:7010 and listen to the topic . FYI The connection factory is
deployed to the cluster.
The subscriber receives the message sent by the publisher.
But when say server A fails , the Publisher still can publish messages to server
B (failover works) , but the subscriber stops receiving the messages.
I thought in clustered environment the subscriber would still receive messages if
it connects to the topic using the connection factory deployed on the cluster.
Can somebody throw an insight!!
Thanks
Ashok
I assume you're on 6.0?
Which server did you target your topic? If that server fails, then no, you will not be able to
subscribe to anything...
Gene
"ashok shamnani" <[email protected]> wrote in message news:3a880141$[email protected]..
>
> I have clustered 2 JMS servers, A and B. The subscriber is listening to the topic
> The subscriber used the cluster ip address in the intial context to connect to
> the server t3://A,B:7010 and listen to the topic . FYI The connection factory is
> deployed to the cluster.
>
> The subscriber receives the message sent by the publisher.
> But when say server A fails , the Publisher still can publish messages to server
> B (failover works) , but the subscriber stops receiving the messages.
>
> I thought in clustered environment the subscriber would still receive messages if
> it connects to the topic using the connection factory deployed on the cluster.
>
> Can somebody throw an insight!!
>
> Thanks
> Ashok
-
Problem having a MDB connect to a remote JMS Topic
Hi, I am having problem making an MDB listen to a remote JMS Topic. Here's the
scenario:
Two Weblogic servers (6.1 sp3) running on the same machine (W2K) - they arenot part of a cluster......both are independent servers
One WLS is listening on port 7001 (Domain=WLSDomain1; Target=Server1) and thesecond one on 8001 (Domain=WLSDomain2; Target=Server1 {This is not a typo, the
target is Server1})
In WLSDomain1/Server1, I have a JMS Topic defined as follows (in its config.xmlfile):
<JMSServer Name="EventServicesJMSServer"
Store="ESJMSServerFileStore" Targets="Server1">
<JMSTopic JNDIName="jms/EventServicesTopic7001"
Name="jms/EventServicesTopic7001" StoreEnabled="true"/>
</JMSServer>
In WLSDomain2/Server1, I have a JMS Topic defined as follows (in config.xmlfile):
<JMSServer Name="EventServicesJMSServer"
Store="ESJMSServerFileStore" Targets="Server1">
<JMSTopic JNDIName="jms/EventServicesTopic8001"
Name="jms/EventServicesTopic8001" StoreEnabled="true"/>
</JMSServer>
An MDB is deployed on WLSDomain1/Server1 with the following elements in itsweblogic-jar.xml file (I haven't included the entire weblogic-jar.xml file, only
the relevant info):
<message-driven-descriptor>
<pool>
<max-beans-in-free-pool>1</max-beans-in-free-pool>
<initial-beans-in-free-pool>0</initial-beans-in-free-pool>
</pool>
<!-- This MDB is defined to listen to a Topic in another WLS Server running
on port 8001 -->
<destination-jndi-name>jms/EventServicesTopic8001</destination-jndi-name>
<initial-context-factory>weblogic.jndi.WLInitialContextFactory</initial-context-factory>
<provider-url>t3://localhost:8001</provider-url>
<connection-factory-jndi-name>weblogic/jms/ConnectionFactory</connection-factory-jndi-name>
</message-driven-descriptor>
An MDB is deployed on WLSDomain2/Server1 with the following elements in itsweblogic-jar.xml file (I haven't included the entire weblogic-jar.xml file, only
the relevant info):
<message-driven-descriptor>
<pool>
<max-beans-in-free-pool>1</max-beans-in-free-pool>
<initial-beans-in-free-pool>0</initial-beans-in-free-pool>
</pool>
<!-- This MDB is defined to listen to a Topic in another WLS Server running
on port 7001 -->
<destination-jndi-name>jms/EventServicesTopic7001</destination-jndi-name>
<initial-context-factory>weblogic.jndi.WLInitialContextFactory</initial-context-factory>
<provider-url>t3://localhost:7001</provider-url>
<connection-factory-jndi-name>weblogic/jms/ConnectionFactory</connection-factory-jndi-name>
</message-driven-descriptor>
After starting both the WLS servers, I've verified that they have made connectionsto each other; the Topics are defined in the JNDI tree of the respective servers;
and the MDBs have been deployed in their respective servers. But the MDBs can't
see/connect to their respective JMS destination. Here's the error message and
stack trace from one the WLS server's trace file:
<Apr 17, 2003 4:58:25 PM GMT> <Warning> <EJB> <The Message-Driven EJB: com.manu.
common.server.objectServices.CSMEventListenerMDB_8001 is unable to connect to
the JMS destination: jms/EventServicesTopic8001. The EJB container will automatically
attempt to
re-establish the connection with the JMS server. This warning may occur during
WebLogic Cluster start-up if the JMS destination is located on another server.
When the JMS server connection is re-established, the Message-Driven EJB will
again receive JMS messages.
The Error was:
weblogic.jms.common.JMSException: Connection not found
at weblogic.jms.dispatcher.InvocableManager.invocableFind(InvocableManager.java:121)
at weblogic.jms.dispatcher.Request.wrappedFiniteStateMachine(Request.java:509)
at weblogic.jms.dispatcher.DispatcherImpl.dispatchSync(DispatcherImpl.java:272)
at weblogic.jms.client.JMSConnection.sessionCreate(JMSConnection.java:268)
at weblogic.jms.client.JMSConnection.createTopicSession(JMSConnection.java:245)
at weblogic.ejb20.internal.JMSConnectionPoller.createJMSConnection(JMSConnectionPoller.java:522)
at weblogic.ejb20.internal.JMSConnectionPoller.connectToJMS(JMSConnectionPoller.java:418)
at weblogic.ejb20.internal.JMSConnectionPoller.trigger(JMSConnectionPoller.java:348)
at weblogic.time.common.internal.ScheduledTrigger.executeLocally(ScheduledTrigger.java:238)
at weblogic.time.common.internal.ScheduledTrigger.execute(ScheduledTrigger.java:229)
at weblogic.time.server.ScheduledTrigger.execute(ScheduledTrigger.java:6
9)
at weblogic.kernel.ExecuteThread.execute(ExecuteThread.java:139)
at weblogic.kernel.ExecuteThread.run(ExecuteThread.java:120)
Have you run into a similar problem? Any suggestion?
Thanks,
FarookHi, I am having problem making an MDB listen to a remote JMS Topic. Here's the
scenario:
Two Weblogic servers (6.1 sp3) running on the same machine (W2K) - they arenot part of a cluster......both are independent servers
One WLS is listening on port 7001 (Domain=WLSDomain1; Target=Server1) and thesecond one on 8001 (Domain=WLSDomain2; Target=Server1 {This is not a typo, the
target is Server1})
In WLSDomain1/Server1, I have a JMS Topic defined as follows (in its config.xmlfile):
<JMSServer Name="EventServicesJMSServer"
Store="ESJMSServerFileStore" Targets="Server1">
<JMSTopic JNDIName="jms/EventServicesTopic7001"
Name="jms/EventServicesTopic7001" StoreEnabled="true"/>
</JMSServer>
In WLSDomain2/Server1, I have a JMS Topic defined as follows (in config.xmlfile):
<JMSServer Name="EventServicesJMSServer"
Store="ESJMSServerFileStore" Targets="Server1">
<JMSTopic JNDIName="jms/EventServicesTopic8001"
Name="jms/EventServicesTopic8001" StoreEnabled="true"/>
</JMSServer>
An MDB is deployed on WLSDomain1/Server1 with the following elements in itsweblogic-jar.xml file (I haven't included the entire weblogic-jar.xml file, only
the relevant info):
<message-driven-descriptor>
<pool>
<max-beans-in-free-pool>1</max-beans-in-free-pool>
<initial-beans-in-free-pool>0</initial-beans-in-free-pool>
</pool>
<!-- This MDB is defined to listen to a Topic in another WLS Server running
on port 8001 -->
<destination-jndi-name>jms/EventServicesTopic8001</destination-jndi-name>
<initial-context-factory>weblogic.jndi.WLInitialContextFactory</initial-context-factory>
<provider-url>t3://localhost:8001</provider-url>
<connection-factory-jndi-name>weblogic/jms/ConnectionFactory</connection-factory-jndi-name>
</message-driven-descriptor>
An MDB is deployed on WLSDomain2/Server1 with the following elements in itsweblogic-jar.xml file (I haven't included the entire weblogic-jar.xml file, only
the relevant info):
<message-driven-descriptor>
<pool>
<max-beans-in-free-pool>1</max-beans-in-free-pool>
<initial-beans-in-free-pool>0</initial-beans-in-free-pool>
</pool>
<!-- This MDB is defined to listen to a Topic in another WLS Server running
on port 7001 -->
<destination-jndi-name>jms/EventServicesTopic7001</destination-jndi-name>
<initial-context-factory>weblogic.jndi.WLInitialContextFactory</initial-context-factory>
<provider-url>t3://localhost:7001</provider-url>
<connection-factory-jndi-name>weblogic/jms/ConnectionFactory</connection-factory-jndi-name>
</message-driven-descriptor>
After starting both the WLS servers, I've verified that they have made connectionsto each other; the Topics are defined in the JNDI tree of the respective servers;
and the MDBs have been deployed in their respective servers. But the MDBs can't
see/connect to their respective JMS destination. Here's the error message and
stack trace from one the WLS server's trace file:
<Apr 17, 2003 4:58:25 PM GMT> <Warning> <EJB> <The Message-Driven EJB: com.manu.
common.server.objectServices.CSMEventListenerMDB_8001 is unable to connect to
the JMS destination: jms/EventServicesTopic8001. The EJB container will automatically
attempt to
re-establish the connection with the JMS server. This warning may occur during
WebLogic Cluster start-up if the JMS destination is located on another server.
When the JMS server connection is re-established, the Message-Driven EJB will
again receive JMS messages.
The Error was:
weblogic.jms.common.JMSException: Connection not found
at weblogic.jms.dispatcher.InvocableManager.invocableFind(InvocableManager.java:121)
at weblogic.jms.dispatcher.Request.wrappedFiniteStateMachine(Request.java:509)
at weblogic.jms.dispatcher.DispatcherImpl.dispatchSync(DispatcherImpl.java:272)
at weblogic.jms.client.JMSConnection.sessionCreate(JMSConnection.java:268)
at weblogic.jms.client.JMSConnection.createTopicSession(JMSConnection.java:245)
at weblogic.ejb20.internal.JMSConnectionPoller.createJMSConnection(JMSConnectionPoller.java:522)
at weblogic.ejb20.internal.JMSConnectionPoller.connectToJMS(JMSConnectionPoller.java:418)
at weblogic.ejb20.internal.JMSConnectionPoller.trigger(JMSConnectionPoller.java:348)
at weblogic.time.common.internal.ScheduledTrigger.executeLocally(ScheduledTrigger.java:238)
at weblogic.time.common.internal.ScheduledTrigger.execute(ScheduledTrigger.java:229)
at weblogic.time.server.ScheduledTrigger.execute(ScheduledTrigger.java:6
9)
at weblogic.kernel.ExecuteThread.execute(ExecuteThread.java:139)
at weblogic.kernel.ExecuteThread.run(ExecuteThread.java:120)
Have you run into a similar problem? Any suggestion?
Thanks,
Farook -
Problem having a MDB connect to a remote JMS Topic (WLS 6.1 sp3)
Hi, I am having problem making an MDB listen to a remote JMS Topic. Here's the
scenario:
> Two Weblogic servers (6.1 sp3) running on the same machine (W2K) - they are
not part of a cluster......both are independent servers
> One WLS is listening on port 7001 (Domain=WLSDomain1; Target=Server1) and the
second one on 8001 (Domain=WLSDomain2; Target=Server1 {This is not a typo, the
target is Server1})
> In WLSDomain1/Server1, I have a JMS Topic defined as follows (in its config.xml
file):
<JMSServer Name="EventServicesJMSServer"
Store="ESJMSServerFileStore" Targets="Server1">
<JMSTopic JNDIName="jms/EventServicesTopic7001"
Name="jms/EventServicesTopic7001" StoreEnabled="true"/>
</JMSServer>
> In WLSDomain2/Server1, I have a JMS Topic defined as follows (in config.xml
file):
<JMSServer Name="EventServicesJMSServer"
Store="ESJMSServerFileStore" Targets="Server1">
<JMSTopic JNDIName="jms/EventServicesTopic8001"
Name="jms/EventServicesTopic8001" StoreEnabled="true"/>
</JMSServer>
> An MDB is deployed on WLSDomain1/Server1 with the following elements in its
weblogic-jar.xml file (I haven't included the entire weblogic-jar.xml file, only
the relevant info):
<message-driven-descriptor>
<pool>
<max-beans-in-free-pool>1</max-beans-in-free-pool>
<initial-beans-in-free-pool>0</initial-beans-in-free-pool>
</pool>
<!-- This MDB is defined to listen to a Topic in another WLS Server running
on port 8001 -->
<destination-jndi-name>jms/EventServicesTopic8001</destination-jndi-name>
<initial-context-factory>weblogic.jndi.WLInitialContextFactory</initial-context-factory>
<provider-url>t3://localhost:8001</provider-url>
<connection-factory-jndi-name>weblogic/jms/ConnectionFactory</connection-factory-jndi-name>
</message-driven-descriptor>
> An MDB is deployed on WLSDomain2/Server1 with the following elements in its
weblogic-jar.xml file (I haven't included the entire weblogic-jar.xml file, only
the relevant info):
<message-driven-descriptor>
<pool>
<max-beans-in-free-pool>1</max-beans-in-free-pool>
<initial-beans-in-free-pool>0</initial-beans-in-free-pool>
</pool>
<!-- This MDB is defined to listen to a Topic in another WLS Server running
on port 7001 -->
<destination-jndi-name>jms/EventServicesTopic7001</destination-jndi-name>
<initial-context-factory>weblogic.jndi.WLInitialContextFactory</initial-context-factory>
<provider-url>t3://localhost:7001</provider-url>
<connection-factory-jndi-name>weblogic/jms/ConnectionFactory</connection-factory-jndi-name>
</message-driven-descriptor>
> After starting both the WLS servers, I've verified that they have made connections
to each other; the Topics are defined in the JNDI tree of the respective servers;
and the MDBs have been deployed in their respective servers. But the MDBs can't
see/connect to their respective JMS destination. Here's the error message and
stack trace from one the WLS server's trace file:
<Apr 17, 2003 4:58:25 PM GMT> <Warning> <EJB> <The Message-Driven EJB: com.manu.
common.server.objectServices.CSMEventListenerMDB_8001 is unable to connect to
the JMS destination: jms/EventServicesTopic8001. The EJB container will automatically
attempt to
re-establish the connection with the JMS server. This warning may occur during
WebLogic Cluster start-up if the JMS destination is located on another server.
When the JMS server connection is re-established, the Message-Driven EJB will
again receive JMS messages.
The Error was:
weblogic.jms.common.JMSException: Connection not found
at weblogic.jms.dispatcher.InvocableManager.invocableFind(InvocableManager.java:121)
at weblogic.jms.dispatcher.Request.wrappedFiniteStateMachine(Request.java:509)
at weblogic.jms.dispatcher.DispatcherImpl.dispatchSync(DispatcherImpl.java:272)
at weblogic.jms.client.JMSConnection.sessionCreate(JMSConnection.java:268)
at weblogic.jms.client.JMSConnection.createTopicSession(JMSConnection.java:245)
at weblogic.ejb20.internal.JMSConnectionPoller.createJMSConnection(JMSConnectionPoller.java:522)
at weblogic.ejb20.internal.JMSConnectionPoller.connectToJMS(JMSConnectionPoller.java:418)
at weblogic.ejb20.internal.JMSConnectionPoller.trigger(JMSConnectionPoller.java:348)
at weblogic.time.common.internal.ScheduledTrigger.executeLocally(ScheduledTrigger.java:238)
at weblogic.time.common.internal.ScheduledTrigger.execute(ScheduledTrigger.java:229)
at weblogic.time.server.ScheduledTrigger.execute(ScheduledTrigger.java:6
9)
at weblogic.kernel.ExecuteThread.execute(ExecuteThread.java:139)
at weblogic.kernel.ExecuteThread.run(ExecuteThread.java:120)
Have you run into a similar problem? Any suggestion?
Thanks,
Farook
FAQ. Naming conflict. To interop between domains make sure:
All WL Servers are named differently.
All JMS Servers are named differently.
All JMS Stores are named differently.
Tom
Farook Wadia wrote:
> Hi, I am having problem making an MDB listen to a remote JMS Topic. Here's the
> scenario:
>
>
>>Two Weblogic servers (6.1 sp3) running on the same machine (W2K) - they are
>
> not part of a cluster......both are independent servers
>
>
>>One WLS is listening on port 7001 (Domain=WLSDomain1; Target=Server1) and the
>
> second one on 8001 (Domain=WLSDomain2; Target=Server1 {This is not a typo, the
> target is Server1})
>
>
>>In WLSDomain1/Server1, I have a JMS Topic defined as follows (in its config.xml
>
> file):
>
> <JMSServer Name="EventServicesJMSServer"
> Store="ESJMSServerFileStore" Targets="Server1">
> <JMSTopic JNDIName="jms/EventServicesTopic7001"
> Name="jms/EventServicesTopic7001" StoreEnabled="true"/>
> </JMSServer>
>
>>In WLSDomain2/Server1, I have a JMS Topic defined as follows (in config.xml
>
> file):
>
> <JMSServer Name="EventServicesJMSServer"
> Store="ESJMSServerFileStore" Targets="Server1">
> <JMSTopic JNDIName="jms/EventServicesTopic8001"
> Name="jms/EventServicesTopic8001" StoreEnabled="true"/>
> </JMSServer>
>
>>An MDB is deployed on WLSDomain1/Server1 with the following elements in its
>
> weblogic-jar.xml file (I haven't included the entire weblogic-jar.xml file, only
> the relevant info):
>
> ..
> <message-driven-descriptor>
> <pool>
> <max-beans-in-free-pool>1</max-beans-in-free-pool>
> <initial-beans-in-free-pool>0</initial-beans-in-free-pool>
> </pool>
> <!-- This MDB is defined to listen to a Topic in another WLS Server running
> on port 8001 -->
> <destination-jndi-name>jms/EventServicesTopic8001</destination-jndi-name>
> <initial-context-factory>weblogic.jndi.WLInitialContextFactory</initial-context-factory>
> <provider-url>t3://localhost:8001</provider-url>
> <connection-factory-jndi-name>weblogic/jms/ConnectionFactory</connection-factory-jndi-name>
> </message-driven-descriptor>
> ...
>
>
>>An MDB is deployed on WLSDomain2/Server1 with the following elements in its
>
> weblogic-jar.xml file (I haven't included the entire weblogic-jar.xml file, only
> the relevant info):
>
> ..
> <message-driven-descriptor>
> <pool>
> <max-beans-in-free-pool>1</max-beans-in-free-pool>
> <initial-beans-in-free-pool>0</initial-beans-in-free-pool>
> </pool>
> <!-- This MDB is defined to listen to a Topic in another WLS Server running
> on port 7001 -->
> <destination-jndi-name>jms/EventServicesTopic7001</destination-jndi-name>
> <initial-context-factory>weblogic.jndi.WLInitialContextFactory</initial-context-factory>
> <provider-url>t3://localhost:7001</provider-url>
> <connection-factory-jndi-name>weblogic/jms/ConnectionFactory</connection-factory-jndi-name>
> </message-driven-descriptor>
> ...
>
>
>>After starting both the WLS servers, I've verified that they have made connections
>
> to each other; the Topics are defined in the JNDI tree of the respective servers;
> and the MDBs have been deployed in their respective servers. But the MDBs can't
> see/connect to their respective JMS destination. Here's the error message and
> stack trace from one the WLS server's trace file:
>
> <Apr 17, 2003 4:58:25 PM GMT> <Warning> <EJB> <The Message-Driven EJB: com.manu.
> common.server.objectServices.CSMEventListenerMDB_8001 is unable to connect to
> the JMS destination: jms/EventServicesTopic8001. The EJB container will automatically
> attempt to
> re-establish the connection with the JMS server. This warning may occur during
> WebLogic Cluster start-up if the JMS destination is located on another server.
> When the JMS server connection is re-established, the Message-Driven EJB will
> again receive JMS messages.
> The Error was:
> weblogic.jms.common.JMSException: Connection not found
> at weblogic.jms.dispatcher.InvocableManager.invocableFind(InvocableManager.java:121)
> at weblogic.jms.dispatcher.Request.wrappedFiniteStateMachine(Request.java:509)
> at weblogic.jms.dispatcher.DispatcherImpl.dispatchSync(DispatcherImpl.java:272)
> at weblogic.jms.client.JMSConnection.sessionCreate(JMSConnection.java:268)
> at weblogic.jms.client.JMSConnection.createTopicSession(JMSConnection.java:245)
> at weblogic.ejb20.internal.JMSConnectionPoller.createJMSConnection(JMSConnectionPoller.java:522)
> at weblogic.ejb20.internal.JMSConnectionPoller.connectToJMS(JMSConnectionPoller.java:418)
> at weblogic.ejb20.internal.JMSConnectionPoller.trigger(JMSConnectionPoller.java:348)
> at weblogic.time.common.internal.ScheduledTrigger.executeLocally(ScheduledTrigger.java:238)
> at weblogic.time.common.internal.ScheduledTrigger.execute(ScheduledTrigger.java:229)
> at weblogic.time.server.ScheduledTrigger.execute(ScheduledTrigger.java:6
> 9)
> at weblogic.kernel.ExecuteThread.execute(ExecuteThread.java:139)
> at weblogic.kernel.ExecuteThread.run(ExecuteThread.java:120)
>
>
> Have you run into a similar problem? Any suggestion?
>
> Thanks,
>
> Farook
-
Messages posted to JMS Topic from OSB disappear even when not subscribed
Hi,
We are using an OSB service to publish xml messages to a weblogic JMS Topic. Message is persistent. There are no consumers for the Topic. There is no expiration limit set.
We are able to see the message from OSB reach the Topic. It stays in the Topic for a few seconds and then disappears.
The State of the message shows up as "send transaction" on the Topic in the weblogic console. And it shows up as Message Pending instead of Message Current.
Is there a way to ensure that the message stays in the Topic till it is consumed by a subscriber?
Thanks,
SenthilHi Senthil,
The topic persists messages only for subscribers, if there is no subscribers, then it is not necessary to persist the message.
This is the same case for you as well, as there are no subscribers the message gets deleted.
So first you need to have atleast one subscriber first (A dummy proxy that is reading from the topic) and then post to the topic (through your OSB service or hermes jms tool, etc .. ) . Then if you try to go and check the topic you will be able to see the message.
Hope this information helps.
Thanks,
Patrick
Edited by: Patrick Taylor on May 13, 2011 2:40 PM -
JMS Topic - Deliver to only one Durable Subscriber
Hi,
Is it possible to put a message onto a topic but only have it delivered to a single durable subscriber?
I realise this breaks the rules of what a topic is but this is for a scenario where a single subscriber has errored when processing the original message from the topic. I am putting a user interaction process to recover it and if the user selects ‘resubmit’ I want to put the message back on the topic but only deliver it to the one subscriber that failed to process the message.
My ways to achieve this (in order of preference) would be.
1. JMS Adapter
2. Writing Java to use JMS API
If neither of these are possible than:
3. Create a System Resubmit queue and have every composite look for message on the resubmit queue (with their client ID) as well as the normal topic they use
Of course I would like to avoid 3 as it introduces a complication into every process we create that takes messages from a JMS Topic.
Thanks for your help.
RobertI could suggest a (dirty) trick:
all subscribers subscribe to the topic using a filter (message selector, http://docs.oracle.com/javaee/6/tutorial/doc/bnceh.html#bncer)
SUBSCRIBER1 uses:
destination = ALL OR SUBSCRIBER1
SUBSCRIBER2 uses:
destination = ALL OR SUBSCRIBER2
etc
The first message has the property destination set to ALL, so all subscribers will process it.
The resubmitted message will have destination = SUBSCRIBER<N>, where N is the failed subscriber -
JMS topic-cache topic is not getting broadcasting in other managed servers
Hi All,
Please give me some idea in fixing the issue that im facing.
I have created the JMS topic in my weblogic console server which has 2 managed servers.
I have a feature in my application which is kept in a cache that will be used by my JMS topic. If my request hits managed 1 server im able to see the newly created feature.
But the same feature is not working when i make the request hit managed 2 server.
It means the JMS topic is not getting broadcasted properly in other managed server. I dont want to go for a server recycle which will resolve the issue.
Please let me know if im not clear enough.
Below is the description provided by my partner on the same issue in his words..
"The JMS Topic - 'CacheTopic' is not broadcasting messages created on one managed server to the remaining managed servers.
The same problem is observed in Production as well. Let us know if there is anything wrong in the way the JMS Topic is created or any other configuration is missing, that is not allowing the proper functioning of the Topic."
fyi...i have all my firewall enabled between the managed servers.And multicast property is also declared correctly only.Please let me know if im not clear enough.No. Please explain again.
The JMS Topic - 'CacheTopic' is not broadcasting messages created on one managed server to the remaining managed servers.Is it a distributed topic? Or does it mean a topic message doesnt get delivered to all subscribers?
ram.
Maybe you are looking for
-
How to stop syncing notes from iphone to ipad????
Everytime I change something on my notes app on my iphone, it will do the same thing to my ipad. I had deleted a note on my ipad and the same note was deleted on my phone, which I did not want to happen. I want to be able to stop it from syncing toge
-
I actually have version 1.5 but am downloading a CS3 trial to see if that fixes the problem (no one answered me on the 1.5 forum). I have 3 gig of RAM, Windows XP, 3 ghz pentium 4, and 200 gig free on both harddrives. I have a 95 minute 24pA timeline
-
From which table the structure field is getting populated
Hi all, I've a requirement to run the report for process orders when AFVGD-FLG_PURS(Indicator:purchase order exist)is active. I'm not able to find from which transparent table I can populate data in this flag value. I've tried "where-used list" to g
-
HT201343 how to mirror late 2008 macbook pro to apple tv
I have a late 2008 macbook pro. Can I mirror this to apple tv?
-
rather than my home page, when I start up firefox it opens a page to check plugins and then I have to wait for it to load all the way before i can close out and continue on. I dont want to update any plugins at this time. How do I stop that reminder?