JMS connections
by the way, iit, can you be a little more specific as to how you handle cases in which the messages are still sent to the router in case of a network failure, I have one machine on which the server is running and another on which a QueueSender is sending messages in a tight loop. Now in case of a network cable pullout and reconnection afterwards, i am not able to receive messages in the Queue on the server those that were sent when the cable was not connected,? If there is a solution to this, I would be glad to know.
thanks
Bob
by the way, iit, can you be a little more specific as
to how you handle cases in which the messages are
still sent to the router in case of a network failure,
I have one machine on which the server is running and
another on which a QueueSender is sending messages in
a tight loop. Now in case of a network cable pullout
and reconnection afterwards, i am not able to receive
messages in the Queue on the server those that were
sent when the cable was not connected,? If there is a
solution to this, I would be glad to know.The messages will stay in the routing queue of the sender's router which will reconnect automatically. Once the routing connection is established again, messages are forwarded to the destination router. All that is completely transparent to JMS clients because it's on the routing level.
Similar Messages
-
Problem with transacted JMS connection factory and transaction timeouts
We encountered an interesting problem using transacted JMS connection factories.
An EJB starts a container managed transaction and tries to validate a credit card
before creating some information to a database for the user, in case of success
an SMS is sent to the user via the transacted JMS queue. If the credit card authentications
duration is about the same as the transactions timeout (in this case the default
30 seconds) sometimes the database inserts is committed but the JMS insert is
rollbacked. How can this be?
If the authorization duration is much longer than 30 seconds everything works
fine (both database and JMS inserts rollbacked), the same is true if a rollback
is insured by calling EJBContext.setRollbackOnly(). The problem thus occurs only
if the duration is approximately the same as the transaction timeout, it appears
that the database insert is not timeouted but the JMS insert is. How can this
be if they are both participating in the same transaction.
The JMSConnectionFactory used is a Connection factory with XA-enabled. The result
is the same also with the default "javax.jms.QueueConnectionFactory" and if we
configure our own factory with user transactions enabled.
Any help appreciated!
Tomas Granö wrote:
> We encountered an interesting problem using transacted JMS connection factories.
> An EJB starts a container managed transaction and tries to validate a credit card
> before creating some information to a database for the user, in case of success
> an SMS is sent to the user via the transacted JMS queue. If the credit card authentications
> duration is about the same as the transactions timeout (in this case the default
> 30 seconds) sometimes the database inserts is committed but the JMS insert is
> rollbacked. How can this be?
It should not be.
>
> If the authorization duration is much longer than 30 seconds everything works
> fine (both database and JMS inserts rollbacked), the same is true if a rollback
> is insured by calling EJBContext.setRollbackOnly(). The problem thus occurs only
> if the duration is approximately the same as the transaction timeout, it appears
> that the database insert is not timeouted but the JMS insert is. How can this
> be if they are both participating in the same transaction.
>
> The JMSConnectionFactory used is a Connection factory with XA-enabled. The result
> is the same also with the default "javax.jms.QueueConnectionFactory" and if we
> configure our own factory with user transactions enabled.
>
> Any help appreciated!
Make sure that your session is not "transacted". In other words,
the first parameter to createSession() must be false. There is an
unfortunate name re-use here. If a session is "transacted", it
maintains an independent "inner transaction" independent of the
outer transaction. From the above description, it seems unlikely
that your application has this wrong, as you say that
"setRollbackOnly" works - but please check anyway.
Make sure that you are using a true XA capable driver and database
(XA "emulation" may not suffice)
Beyond the above, I do not see what can be going wrong. You
may want to try posting to the transactions and jdbc newsgroups. Note
that JMS is appears to be exhibiting the correct behavior, but the
JDBC operation is not. The JDBC operation appears to have
its timeout independent of the transaction monitor's timeout.
Tom
-
I am not able to create a JMS connection from a custom component in UCM
I am trying to create a custom component which makes a JMS connection and inserts messages in JMS Queue.
THe JMS server is hosted on Weblogic Application Server.
When the code runs I am getting the factory object and the queue object.
But when I try to get a connection it throws an error as pasted below.
WHen I googled the same error It has shown a simliar problem in TOmcat in sun thread
It said two jar files xerces.jar and xml-apis.jar are obsolete.
I replaced with the new version.
still the same problem occurred
Please help
Pasting the code and exception here
Code __________________________________________
import java.util.Date;
import java.util.Hashtable;
import javax.jms.*;
import javax.naming.*;
import weblogic.jms.client.WLConnectionImpl;
import weblogic.jms.extensions.*;
import javax.rmi.PortableRemoteObject;
public class SimpleProducer {
public static void drive() {
final int NUM_MSGS;
NUM_MSGS = 93;
Context jndiContext = null;
Hashtable<String, String> ht;
ht = new Hashtable<String, String>();
ht.put(Context.INITIAL_CONTEXT_FACTORY,
"weblogic.jndi.WLInitialContextFactory");
ht.put(Context.PROVIDER_URL, "t3://punitp52975d:7001");
try {
jndiContext = new InitialContext(ht);
} catch (NamingException e) {
System.out.println("Could not create JNDI API context: " +
e.toString());
System.exit(1);
ConnectionFactory connectionFactory = null;
Destination dest = null;
try {
Object home = jndiContext.lookup("CNFT"); // where iiopTestDS is jndi name for my DataSource.
connectionFactory =(ConnectionFactory)PortableRemoteObject.narrow(home , ConnectionFactory.class);
Object home1 = jndiContext.lookup("QUEUE2"); // where iiopTestDS is jndi name for my DataSource.
dest =(Destination)PortableRemoteObject.narrow(home1 , Destination.class);
/*connectionFactory = (ConnectionFactory) jndiContext.lookup(
"CNFT");
dest = (Destination) jndiContext.lookup("QUEUE2");
System.out.println("connectionFactory,dest "+connectionFactory+dest);*/
} catch (Exception e) {
System.out.println("JNDI API lookup failed: " + e.toString());
e.printStackTrace();
System.exit(1);
//WLConnectionImpl connection = null;
WLConnection connection = null;
WLMessageProducer producer = null;
try {
System.out.println("Getting Connection "+(WLConnection) connectionFactory.createConnection());
//connection = (WLConnection) connectionFactory.createConnection();
System.out.println("Connection created");
WLSession session =
(WLSession) connection.createSession(false, Session.CLIENT_ACKNOWLEDGE);
producer = (WLMessageProducer) session.createProducer(dest);
WLMessage message = (WLMessage) session.createTextMessage();
//TextMessage message = session.createTextMessage();
for (int i = 91; i < NUM_MSGS; i++) {
((TextMessage) message).setText("This is message " + (i + 1));
Long l = new Date().getTime();
message.setLongProperty("ReleasedDate",l );
System.out.println("Sending message: " + ((TextMessage) message).getText());
producer.send(message);
producer.send(session.createMessage());
} catch (Exception e) {
System.out.println("Exception occurred: " + e.toString());
} catch (Throwable et) {
System.out.println("Exception occurred: " + et.toString());
et.printStackTrace();
finally {
if (connection != null) {
try {
connection.close();
} catch (Exception e) {
System.out.println("*************Instantiating Producer***************");
Exception_________________________________________________________________
Exception occurred: java.lang.NoSuchMethodError: javax.xml.parsers.SAXParserFactory.getSchema()Ljavax/xml/validation/Schema;
java.lang.NoSuchMethodError: javax.xml.parsers.SAXParserFactory.getSchema()Ljavax/xml/validation/Schema;
at com.sun.org.apache.xerces.internal.jaxp.SAXParserImpl.<init>(SAXParserImpl.java:124)
at com.sun.org.apache.xerces.internal.jaxp.SAXParserFactoryImpl.newSAXParserImpl(SAXParserFactoryImpl.java:115)
at com.sun.org.apache.xerces.internal.jaxp.SAXParserFactoryImpl.setFeature(SAXParserFactoryImpl.java:143)
at weblogic.xml.jaxp.WebLogicSAXParserFactory.<init>(WebLogicSAXParserFactory.java:62)
at weblogic.rmi.internal.wls.WLSRMIEnvironment.getSAXParser(WLSRMIEnvironment.java:136)
at weblogic.rmi.internal.DescriptorManager.getDescriptorAsMap(DescriptorManager.java:170)
at weblogic.rmi.internal.DescriptorManager.getDescriptorAsMap(DescriptorManager.java:159)
at weblogic.rmi.internal.DescriptorManager.createRuntimeDescriptor(DescriptorManager.java:104)
at weblogic.rmi.internal.DescriptorManager.getBasicRuntimeDescriptor(DescriptorManager.java:85)
at weblogic.rmi.internal.DescriptorManager.getDescriptor(DescriptorManager.java:51)
at weblogic.rmi.internal.DescriptorManager.getDescriptor(DescriptorManager.java:37)
at weblogic.rmi.internal.OIDManager.makeServerReference(OIDManager.java:194)
at weblogic.rmi.internal.OIDManager.getReplacement(OIDManager.java:175)
at weblogic.rmi.utils.io.RemoteObjectReplacer.replaceRemote(RemoteObjectReplacer.java:120)
at weblogic.rmi.utils.io.RemoteObjectReplacer.replaceObject(RemoteObjectReplacer.java:103)
at weblogic.rmi.extensions.server.ServerHelper.exportObject(ServerHelper.java:223)
at weblogic.rmi.internal.OIDManager.initializeDGCServer(OIDManager.java:231)
at weblogic.rmi.internal.OIDManager.getReplacement(OIDManager.java:144)
at weblogic.rmi.utils.io.RemoteObjectReplacer.replaceRemote(RemoteObjectReplacer.java:120)
at weblogic.rmi.utils.io.RemoteObjectReplacer.replaceObject(RemoteObjectReplacer.java:103)
at weblogic.rmi.extensions.server.ServerHelper.exportObject(ServerHelper.java:223)
at weblogic.corba.server.naming.ReferenceHelperImpl.exportObject(ReferenceHelperImpl.java:233)
at weblogic.rmi.extensions.PortableRemoteObject.exportObject(PortableRemoteObject.java:34)
at weblogic.messaging.dispatcher.DispatcherImpl.export(DispatcherImpl.java:85)This is probably related to this other issue http://www.adobeforums.com/webx/.59b7fbab/0.
Jasmin -
Error when creating a new JMS connection factory in GlassFish V3 b57
When I use the admin console and try to create a new JMS connection factory in GlassFish V3 b57, the operation fails with the error message
An error has occurred: Can't find ConfigModel.Property for attr -connection-validation-required on interface com.sun.enterprise.config.serverbeans.ConnectorConnectionPool
Should I better report this in the GlassFish news forum (http://forums.java.net/jive/forum.jspa?forumID=56&start=0)?
p.s. I launch the admin console from within NetBeans 6.7.1 (the server started before the IDE). WIth version b 56, creating a JMS connection factory worked fine.
Best regards,
Michael JustinThis bug does not apear in the nightly build (b58) now so everything looks fine again.
Greetings,
Michael -
How to find out status of JMS Connection ( connected or closed )
Is there a way to find out the status ( connected or closed ) of JMS Connection at any point of time . JMS Connection interface doesn't seem to have any isAlive( ) sort of method ?
I'm using a shared instance JMS Connection and if someone calls connection.close() on this instance the code starts flunking.Crap isn't it! Would also be useful for creating a JMS connection pool, or for testing connections that stay open for time time and may be closed by network problems etc.
I can think of a couple of options (haven't tested them so may be flawed)
1. Extend your vendors QueueConnectionFactory object to return a decorated Connection, which adds an isAlive() method and records internally whether someone has called .close(); This could be tricky if you use JNDI to retrieve the QCF - you'll have to bind your custom QCF and remove the old one. Much easier if you use a bean factory like Spring.
2. You may be able to do this with the underlying vendor's API. If you choose this option put all the vendor specific code in a separate class and abstract it behind an interface. In future if you change to a JMS provider that does not support this feature, you can always change your isAlive() method return true no matter what;
3. Wrap the JMS sender / receiver in an Adapter class. The adapter delegates send / receive methods to the wrapped class, but if it receives a JMS exception will reconnect and try again. A second JMS Exceptions should be thrown back to the client. All your client code sees is a single send / receive method as if it was using a normal JMS sender / receiver. -
Error in looking up the JMS Connection Factory
Hi,
I am using weblogic6.1. I created a JMS Connection factory from administrator
console with the name QueueConnectionFactory..But when i restart the server and
try to look up that factory its giving an NameNotFoundException...This is the
entry of the factory in config.xml
<JMSConnectionFactory JNDIName="QueueConnectionFactory"
Name="QueueConnectionFactory" Targets="myserver"/>
But if i change reapply the target server to myserver from admin console whenever
restart the server it works fine..
I dont know where is the problem..Can u please update me on the problem if u people
have any idea.
The trace of the exceptions i got is as below:
java.rmi.RemoteException: javax.naming.NameNotFoundException: Unable to
resolve QueueConnectionFactory. Resolved
: '' Unresolved:'QueueConnectionFactory' ; remaining name ''
java.rmi.RemoteException: javax.naming.NameNotFoundException: Unable to resolve
QueueConnectionFactory. Resolved: '' Unr
esolved:'QueueConnectionFactory' ; remaining name ''
Thanx
Regards,
Narayan
Hi Zach,
No, I dont think ur interpretation is right..Once the entry corresponding
to JMS Connection Factory is there in config.xml, the server should automatically
bind it at the time of booting.. right. Why should this administrator server come
into the picture.
Thanx
"Zach" <[email protected]> wrote:
>Don't know. Sounds like the admin server is not notifying JMS of the
>changes under certain situations. You might post in the management.console
>newsgroup.
>
>_sjz.
>
>"Narayan" <[email protected]> wrote in message
>news:[email protected]...
>>
>> Hi,
>> I am using weblogic6.1. I created a JMS Connection factory from
>administrator
>> console with the name QueueConnectionFactory..But when i restart the
>server and
>> try to look up that factory its giving an NameNotFoundException...This
>is
>the
>> entry of the factory in config.xml
>>
>> <JMSConnectionFactory JNDIName="QueueConnectionFactory"
>> Name="QueueConnectionFactory" Targets="myserver"/>
>> But if i change reapply the target server to myserver from admin console
>whenever
>> restart the server it works fine..
>> I dont know where is the problem..Can u please update me on the problem
>if
>u people
>> have any idea.
>> The trace of the exceptions i got is as below:
>> ****************
>> java.rmi.RemoteException: javax.naming.NameNotFoundException:
>Unable to
>> resolve QueueConnectionFactory. Resolved
>> : '' Unresolved:'QueueConnectionFactory' ; remaining name ''
>> java.rmi.RemoteException: javax.naming.NameNotFoundException: Unable
>to
>resolve
>> QueueConnectionFactory. Resolved: '' Unr
>> esolved:'QueueConnectionFactory' ; remaining name ''
>>
>> **********************
>>
>> Thanx
>> Regards,
>> Narayan
>>
>>
>
>
-
JMS Adapter (for DI) does not allow passing username and password to JMS connection
Post Author: PLed76
CA Forum: Data Integration
JMS Adapter (for DI) does not allow passing username and password to JMS connection. It has those fields only for MSMQ. Our Production environment does not allow us to connect to JMS (we use Tibco EMS) anonymously, so it prevents us from use of Data Integrator. Is there any way to pass those params, or obtain the correct version of JMS Adapter, or obtain source codes of the JMS Adapter so we can correct them ourselves (we can send you the corrected sources back) ? Thanks in advance for any help. (PL)ed76 Renaissance CapitalBump - Were having the same issue.
Has anyone found a way to connect to Tibco with a user/pwd?
Version 14.0.297. -
HOw to test the jms connection?
HI all,
how to test the jms connection in xi?
regards
kishHI,
We can see the JMS sender or reciver side .. in RWB .. see communicaiton channel mononitoring,., also..
We can access it through browser.. it depends upon the proocol type .. like sonic or webspeare MQ..or ...
see below links
http://help.sap.com/saphelp_nw04/helpdata/en/cf/886a3c3a860657e10000000a114084/frameset.htm
/people/alessandro.guarneri/blog/2006/01/04/jms-sender-adapter-handling-too-short-lines
/people/william.li/blog/2006/11/13/how-to-use-saps-webas-j2ees-jms-queue-in-exchange-infrastructure
content conversion https://www.sdn.sap.com/irj/servlet/prt/portal/prtroot/docs/library/uuid/f02d12a7-0201-0010-5780-8bfc7d12f891
https://www.sdn.sap.com/irj/sdn/go/portal/prtroot/docs/library/uuid/97171dd3-0401-0010-5195-b43f556e6ce9
Chilla -
Cannot bind tibco's jms connection factory to wls jndi
we are using wls 6.1 sp2. I am trying to bind tibco's jms connection factory
and queue from a standalone client to weblogic's jndi tree so that apps on wls
can lookup these object in wls jndi locally. I have included the required classes
in the classpath for both the client and wls. I am able to bind the queue successfully
and am able to use it successfully too, but I am not able to bind the tib's queue
or topic connection factory. I am getting the following errors. I checked and
double checked the classpath and
Start server side stack trace:
java.rmi.UnmarshalException: error unmarshalling arguments; nested exception is:
java.io.InvalidClassException: com.tibco.tibjms.naming.TibjmsFederatedTopicConnectionFactory;
InstantiationExcep
tion
java.io.InvalidClassException: com.tibco.tibjms.naming.TibjmsFederatedTopicConnectionFactory;
InstantiationException
at weblogic.common.internal.ChunkedObjectInputStream.readObject(ChunkedObjectInputStream.java:94)
at weblogic.common.internal.ChunkedObjectInputStream.readObject(ChunkedObjectInputStream.java:123)
at weblogic.jndi.internal.RootNamingNode_WLSkel.invoke(Unknown Source)
at weblogic.rmi.internal.BasicServerRef.invoke(BasicServerRef.java:298)
at weblogic.rmi.cluster.ReplicaAwareServerRef.invoke(ReplicaAwareServerRef.java:93)
at weblogic.rmi.internal.BasicServerRef.handleRequest(BasicServerRef.java:267)
at weblogic.rmi.internal.BasicExecuteRequest.execute(BasicExecuteRequest.java:22)
at weblogic.kernel.ExecuteThread.execute(ExecuteThread.java:139)
at weblogic.kernel.ExecuteThread.run(ExecuteThread.java:120)
End server side stack trace
; nested exception is:
java.io.InvalidClassException: com.tibco.tibjms.naming.TibjmsFederatedTopicConnectionFactory;
com.tibco.tibjms.n
aming.TibjmsFederatedTopicConnectionFactory; InstantiationException
Start server side stack trace:
java.io.InvalidClassException: com.tibco.tibjms.naming.TibjmsFederatedTopicConnectionFactory;
InstantiationException
at weblogic.common.internal.ChunkedObjectInputStream.readObject(ChunkedObjectInputStream.java:94)
at weblogic.common.internal.ChunkedObjectInputStream.readObject(ChunkedObjectInputStream.java:123)
at weblogic.jndi.internal.RootNamingNode_WLSkel.invoke(Unknown Source)
at weblogic.rmi.internal.BasicServerRef.invoke(BasicServerRef.java:298)
at weblogic.rmi.cluster.ReplicaAwareServerRef.invoke(ReplicaAwareServerRef.java:93)
at weblogic.rmi.internal.BasicServerRef.handleRequest(BasicServerRef.java:267)
at weblogic.rmi.internal.BasicExecuteRequest.execute(BasicExecuteRequest.java:22)
at weblogic.kernel.ExecuteThread.execute(ExecuteThread.java:139)
at weblogic.kernel.ExecuteThread.run(ExecuteThread.java:120)
End server side stack trace
java.io.InvalidClassException: com.tibco.tibjms.naming.TibjmsFederatedTopicConnectionFactory;
com.tibco.tibjms.naming.Ti
bjmsFederatedTopicConnectionFactory; InstantiationException
Start server side stack trace:
java.io.InvalidClassException: com.tibco.tibjms.naming.TibjmsFederatedTopicConnectionFactory;
InstantiationException
at weblogic.common.internal.ChunkedObjectInputStream.readObject(ChunkedObjectInputStream.java:94)
at weblogic.common.internal.ChunkedObjectInputStream.readObject(ChunkedObjectInputStream.java:123)
at weblogic.jndi.internal.RootNamingNode_WLSkel.invoke(Unknown Source)
at weblogic.rmi.internal.BasicServerRef.invoke(BasicServerRef.java:298)
at weblogic.rmi.cluster.ReplicaAwareServerRef.invoke(ReplicaAwareServerRef.java:93)
at weblogic.rmi.internal.BasicServerRef.handleRequest(BasicServerRef.java:267)
at weblogic.rmi.internal.BasicExecuteRequest.execute(BasicExecuteRequest.java:22)
at weblogic.kernel.ExecuteThread.execute(ExecuteThread.java:139)
at weblogic.kernel.ExecuteThread.run(ExecuteThread.java:120)
End server side stack trace
<<no stack trace available>>
anybody any ideas.
I am also trying to bind the tib's jndi tree in wls jndi tree through a reference
object and am passing a composite name for lookup. I am getting a cannotproceedexception.
I wonder if the weblogic jndi can be federated.
anybody any ideas or pointers
thanks
Devaraju, SushantSeems there is a bug in the tibco jms software.
thanks
Devaraju, Sushant
"sushant" <[email protected]> wrote:
>
we are using wls 6.1 sp2. I am trying to bind tibco's jms connection
factory
and queue from a standalone client to weblogic's jndi tree so that apps
on wls
can lookup these object in wls jndi locally. I have included the required
classes
in the classpath for both the client and wls. I am able to bind the queue
successfully
and am able to use it successfully too, but I am not able to bind the
tib's queue
or topic connection factory. I am getting the following errors. I checked
and
double checked the classpath and
Start server side stack trace:
java.rmi.UnmarshalException: error unmarshalling arguments; nested exception
is:
java.io.InvalidClassException: com.tibco.tibjms.naming.TibjmsFederatedTopicConnectionFactory;
InstantiationExcep
tion
java.io.InvalidClassException: com.tibco.tibjms.naming.TibjmsFederatedTopicConnectionFactory;
InstantiationException
at weblogic.common.internal.ChunkedObjectInputStream.readObject(ChunkedObjectInputStream.java:94)
at weblogic.common.internal.ChunkedObjectInputStream.readObject(ChunkedObjectInputStream.java:123)
at weblogic.jndi.internal.RootNamingNode_WLSkel.invoke(Unknown
Source)
at weblogic.rmi.internal.BasicServerRef.invoke(BasicServerRef.java:298)
at weblogic.rmi.cluster.ReplicaAwareServerRef.invoke(ReplicaAwareServerRef.java:93)
at weblogic.rmi.internal.BasicServerRef.handleRequest(BasicServerRef.java:267)
at weblogic.rmi.internal.BasicExecuteRequest.execute(BasicExecuteRequest.java:22)
at weblogic.kernel.ExecuteThread.execute(ExecuteThread.java:139)
at weblogic.kernel.ExecuteThread.run(ExecuteThread.java:120)
End server side stack trace
; nested exception is:
java.io.InvalidClassException: com.tibco.tibjms.naming.TibjmsFederatedTopicConnectionFactory;
com.tibco.tibjms.n
aming.TibjmsFederatedTopicConnectionFactory; InstantiationException
Start server side stack trace:
java.io.InvalidClassException: com.tibco.tibjms.naming.TibjmsFederatedTopicConnectionFactory;
InstantiationException
at weblogic.common.internal.ChunkedObjectInputStream.readObject(ChunkedObjectInputStream.java:94)
at weblogic.common.internal.ChunkedObjectInputStream.readObject(ChunkedObjectInputStream.java:123)
at weblogic.jndi.internal.RootNamingNode_WLSkel.invoke(Unknown
Source)
at weblogic.rmi.internal.BasicServerRef.invoke(BasicServerRef.java:298)
at weblogic.rmi.cluster.ReplicaAwareServerRef.invoke(ReplicaAwareServerRef.java:93)
at weblogic.rmi.internal.BasicServerRef.handleRequest(BasicServerRef.java:267)
at weblogic.rmi.internal.BasicExecuteRequest.execute(BasicExecuteRequest.java:22)
at weblogic.kernel.ExecuteThread.execute(ExecuteThread.java:139)
at weblogic.kernel.ExecuteThread.run(ExecuteThread.java:120)
End server side stack trace
java.io.InvalidClassException: com.tibco.tibjms.naming.TibjmsFederatedTopicConnectionFactory;
com.tibco.tibjms.naming.Ti
bjmsFederatedTopicConnectionFactory; InstantiationException
Start server side stack trace:
java.io.InvalidClassException: com.tibco.tibjms.naming.TibjmsFederatedTopicConnectionFactory;
InstantiationException
at weblogic.common.internal.ChunkedObjectInputStream.readObject(ChunkedObjectInputStream.java:94)
at weblogic.common.internal.ChunkedObjectInputStream.readObject(ChunkedObjectInputStream.java:123)
at weblogic.jndi.internal.RootNamingNode_WLSkel.invoke(Unknown
Source)
at weblogic.rmi.internal.BasicServerRef.invoke(BasicServerRef.java:298)
at weblogic.rmi.cluster.ReplicaAwareServerRef.invoke(ReplicaAwareServerRef.java:93)
at weblogic.rmi.internal.BasicServerRef.handleRequest(BasicServerRef.java:267)
at weblogic.rmi.internal.BasicExecuteRequest.execute(BasicExecuteRequest.java:22)
at weblogic.kernel.ExecuteThread.execute(ExecuteThread.java:139)
at weblogic.kernel.ExecuteThread.run(ExecuteThread.java:120)
End server side stack trace
<<no stack trace available>>
anybody any ideas.
I am also trying to bind the tib's jndi tree in wls jndi tree through
a reference
object and am passing a composite name for lookup. I am getting a cannotproceedexception.
I wonder if the weblogic jndi can be federated.
anybody any ideas or pointers
thanks
Devaraju, Sushant -
Why do the number of active JMS connections increase?
<strong>Problem</strong>
- Number of active JMS connections and current JMS messages increases until the Weblogic instances crash with an OutOfMemory exception
<strong>Setup</strong>
- Weblogic v9.2.3, Cluster with 4 Nodes
- A JMS Message is sent from a MDB in Weblogic to a distributed queue which has a member on each of the 4 Weblogic nodes. The session is created as follows session = connection.createSession(false,Session.AUTO_ACKNOWLEDGE), the message delivery mode is set programmatically to persistent and the delivery mode override of the queue setup is set to persistent too
- Standalone JMS client processes: each one is attached to <strong>all</strong> 4 nodes. Each one uses a unique JMS message selector so that we have more than one queue consumer for one queue but every message is exactly dedicated to one queue consumer. We us weblogic.jar for the clients.
- Use of Weblogic auto reconnect feature. JMS client code:
Connection connection = this.connectionFactory.createQueueConnection();
final WLConnection wlconnection = (WLConnection)connection;
wlconnection.setReconnectPolicy(JMSConstants.RECONNECT_POLICY_ALL);
wlconnection.setTotalReconnectPeriodMillis(-1);
wlconnection.setReconnectBlockingMillis(-1);
<strong>Remarks and Questions</strong>
- There are no pending JMS messages which is good
- In our setup, each JMS client is connected to all 4 nodes as the messages are not distributed to all nodes: if a message is put to Queue A but the client is only connected to Queue B, the message is NOT transfered from Queue A to Queue B. We set the parameter "Forward Delay" to 5 seconds with no effects. Is this the normal behavior?
- Not all JMS clients are visible in the Weblogic console under JMS Services -> JMS Servers -> [Server] -> Monitoring -> Active Connections. Which one are visible? Which one are not visible? There are also clients where the number of connections is not zero but stays constant; we know that as several independent clients on different hosts are started and the IP adress is visible in the Weblogic console. Why....?
- What reasons can lead to increasing connections? Is this due to client or server problems? Do we have to acknowledge the message in the onMessage(Message) method of the client JMS consumer? So far as I know, we don't have to.
- Are the increasing number of current messages due to the increasing number of JMS connections?
- May the RECONNECT_POLICY_ALL policy produce this problem?
Any hint is appreciated.
Peter
Edited by: pkeller on 23.10.2008 17:08To answer the question about the forwarding of messages from one queue to another myself: As mentioned at http://forums.bea.com/thread.jspa?threadID=400000611, the forwarding for queues does only work if all queue consumers are attached to the same queue. This means that our setup is OK.
But the main question is still unanswered: why do the number of active JMS connections increase? I forgot to mention that
- all messages arrive at the clients and that no exceptions are visible in the log
- if you kill the client, the connections are still visible in the Weblogic console!?
Please help as this problem is very urgent.
Peter
Edited by: pkeller on 24.10.2008 09:06
Edited by: pkeller on 24.10.2008 09:10 -
Hi,
I would like to know what is the maximum JMS connections weblogic server can
handle anytime. And where do we set this parameter? we have a group of Message
Listeners listening to a Queue on weblogic by opening JMS connections at the same
time. So I was wondering how many JMS clients can Weblogic handle?? And also does
it impact the performance of weblgic server.
Thanx,
Sankas
Thanks for the information guys. It was very helful.
-Sankas
Tom Barnes <[email protected]> wrote:
>Each remote JVM to the WL server multiplexes network calls over a single
>socket
>connection, and each remote JVM may have many JMSConnections into the
>WL server. A
>single server can support thousands of remote JVMs, and tens of thousands
>of
>JMSConnections -- even with the default thread-pool sizes. Clustering
>and
>distributed destinations can help one scale higher. Of course, performance
>and
>scalability are highly application and hardware dependent, and the best
>thing to do
>is create a benchmark that emulates your particular apps characteristics
>and see
>how it scales...
>
>Tom, BEA
>
>Sankas wrote:
>
>> Shean,
>> I did not have anything in mind. But if you see the weblogic console
>there
>> is a default parameter "JMS Thread Pool Size = 15" under the Server
>section in
>> the services/JMS Tab .
>> I thought this was the JMSConnections count in the server.
>> Well I think it would be good to know how far can we go
>> with the JMS connections thing.
>>
>> Thanx,
>> Sankas
>>
>> "Shean-Guang Chang" <[email protected]> wrote:
>> > It will depend on the memory resource you used for the JVM (both
>WLS
>> >server
>> >and client). There is no design limit for this. Do you have a number
>> >in
>> >mind?
>> >"Sankas" <[email protected]> wrote in message
>> >news:[email protected]...
>> >>
>> >> Hi,
>> >> I would like to know what is the maximum JMS connections weblogic
>> >server can
>> >> handle anytime. And where do we set this parameter? we have a group
>> >of
>> >Message
>> >> Listeners listening to a Queue on weblogic by opening JMS connections
>> >at
>> >the same
>> >> time. So I was wondering how many JMS clients can Weblogic handle??
>> >And
>> >also does
>> >> it impact the performance of weblgic server.
>> >>
>> >> Thanx,
>> >> Sankas
>> >
>> >
>
-
How WebLogic7.0 & 8.1 JMS connect to MSMQ?
Hi Sir,
Is it possible that i use WebLogic JMS connect to MSMQ(Microsoft)?
If it possible, how can i configure/implement ? Do I have to create adapter class
for MSMQ?
Thanks
Yos
You may be able to find a JMS wrapper for MSMQ (search
google), in which case you can integrate using the same
methods as for any other JMS vendor.
Another option is to use the the WL JMS C client
within a MS program, or even to use "ActiveJMS"
.net wrapper from sourceforge to wrap WL JMS
within a MS program.
Another option is to call into MS (or vice-versa)
using WL's JCOM feature.
Another option is to integrate using web services -
which is the method often pushed by MS.
"weblogic.developer.interest.webservices"
Another option is to consult the WLI newsgroup,
"weblogic.integration.developer" to see if WLI
has pre-built MSMQ adapters.
Tom
Yos wrote:
> Hi Sir,
> Is it possible that i use WebLogic JMS connect to MSMQ(Microsoft)?
> If it possible, how can i configure/implement ? Do I have to create adapter class
> for MSMQ?
> Thanks
> Yos
-
WLS 7.0.4 - JMS Connection Factory - Server Affinity - issues in log file
<b>WLS 7.0.4 - JMS Connection Factory - Server Affinity - issues in log file</b>
We are using WLS 7.0.4 - One of JMS connection factory setting in admin console we selected "Server Affinity" options.
We see this messages appear in Weblogic log file,
####<Apr 24, 2006 1:56:53 AM EDT> <Error> <Cluster> <liberatenode4.dc2.adelphia.com> <node4_svr> <ExecuteThrea
d: '4' for queue: '__weblogic_admin_rmi_queue'> <kernel identity> <> <000123> <Conflict start: You tried to bi
nd an object under the name sbetrmi2 in the JNDI tree. The object you have bound from liberatenode2.dc2.adelp
hia.com is non clusterable and you have tried to bind more than once from two or more servers. Such objects ca
n only deployed from one server.>
and then,
####<Apr 24, 2006 1:58:12 AM EDT> <Error> <Cluster> <liberatenode5.dc2.adelphia.com> <node5_svr> <ExecuteThrea
d: '7' for queue: '__weblogic_admin_rmi_queue'> <kernel identity> <> <000125> <Conflict Resolved: sbetrmi2 for
the object from liberatenode5.dc2.adelphia.com under the bind name sbetrmi2 in the JNDI tree.>
Should we use 'load balancing option' instead of 'server affinity' ?
Any thuoghts?
Thanks in adv.
VijayTest Reply
<Vijay Kumar> wrote in message news:[email protected]..
> <b>WLS 7.0.4 - JMS Connection Factory - Server Affinity - issues in log
> file</b>
>
> We are using WLS 7.0.4 - One of JMS connection factory setting in admin
> console we selected "Server Affinity" options.
>
> We see this messages appear in Weblogic log file,
> ####<Apr 24, 2006 1:56:53 AM EDT> <Error> <Cluster>
> <liberatenode4.dc2.adelphia.com> <node4_svr> <ExecuteThrea
> d: '4' for queue: '__weblogic_admin_rmi_queue'> <kernel identity> <>
> <000123> <Conflict start: You tried to bi
> nd an object under the name sbetrmi2 in the JNDI tree. The object you have
> bound from liberatenode2.dc2.adelp
> hia.com is non clusterable and you have tried to bind more than once from
> two or more servers. Such objects ca
> n only deployed from one server.>
>
> and then,
> ####<Apr 24, 2006 1:58:12 AM EDT> <Error> <Cluster>
> <liberatenode5.dc2.adelphia.com> <node5_svr> <ExecuteThrea
> d: '7' for queue: '__weblogic_admin_rmi_queue'> <kernel identity> <>
> <000125> <Conflict Resolved: sbetrmi2 for
> the object from liberatenode5.dc2.adelphia.com under the bind name
> sbetrmi2 in the JNDI tree.>
>
>
> Should we use 'load balancing option' instead of 'server affinity' ?
>
> Any thuoghts?
>
> Thanks in adv.
> Vijay -
Can't deploy a jms connection factory
I am getting errors when trying to deploy a jms connection factory. Here is the xml file jms-factories.xml:
<?xml version="1.0" encoding="utf-8"?>
<jms-factories>
<application-name>MyApplicationName</application-name>
<connection-factory>
<connection-factory-type>QueueConnectionFactory</connection-factory-type >
<factory-name>MyQueueConnectionFactory</factory-name>
<context-factory-type>
<link-factory-name>jmsfactory/default/MyConnectionFactory</link-factory-name>
<initial-context-factory>
com.sap.engine.services.jndi.InitialContextFactoryImpl
</initial-context-factory>
<provider-url>localhost</provider-url>
<security-principal>Administrator</security-principal>
</context-factory-type>
</connection-factory>
</jms-factories>
Below is the error:
java.rmi.RemoteException: Error occurred while starting application in whole cluster and wait.; nested exception is:
com.sap.engine.services.deploy.exceptions.ServerDeploymentException: Clusterwide exception: server ID 5215450:com.sap.engine.services.jmsconnector.exceptions.BaseDeploymentException: Class loading error: com.sap.engine.services.jndi.persistent.exceptions.NameNotFoundException: Object not found in lookup of MyConnectionFactory.
at com.sap.engine.services.jndi.implserver.ServerContextImpl.lookup(ServerContextImpl.java:650)
at com.sap.engine.services.jndi.implclient.ClientContext.lookup(ClientContext.java:344)
at com.sap.engine.services.jndi.implclient.ClientContext.lookup(ClientContext.java:638)
at javax.naming.InitialContext.lookup(InitialContext.java:351)
at javax.naming.InitialContext.lookup(InitialContext.java:351)
at com.sap.engine.services.jmsconnector.container.JmsContainerImpl.loadFactory(JmsContainerImpl.java:1306)
at com.sap.engine.services.jmsconnector.container.JmsContainerImpl.prepareStart(JmsContainerImpl.java:577)
at com.sap.engine.services.deploy.server.application.StartTransaction.prepareCommon(StartTransaction.java:233)
at com.sap.engine.services.deploy.server.application.StartTransaction.prepare(StartTransaction.java:193)
at com.sap.engine.services.deploy.server.application.ApplicationTransaction.makeAllPhasesOnOneServer(ApplicationTransaction.java:380)
at com.sap.engine.services.deploy.server.application.ParallelAdapter.makeAllPhasesImpl(ParallelAdapter.java:421)
at com.sap.engine.services.deploy.server.application.StartTransaction.makeAllPhasesImpl(StartTransaction.java:539)
at com.sap.engine.services.deploy.server.application.ParallelAdapter.runInTheSameThread(ParallelAdapter.java:171)
at com.sap.engine.services.deploy.server.application.ParallelAdapter.makeAllPhasesAndWait(ParallelAdapter.java:315)
at com.sap.engine.services.deploy.server.DeployServiceImpl.startApplicationAndWait(DeployServiceImpl.java:3163)
at com.sap.engine.services.deploy.server.DeployCommunicatorImpl.startApplicationAndWait(DeployCommunicatorImpl.java:674)
at com.sap.engine.services.deploy.server.DeployCommunicatorImpl.startApplicationAndWait(DeployCommunicatorImpl.java:658)
at com.sap.engine.services.jmsconnector.container.JmsManagerImpl.deployJmsResource(JmsManagerImpl.java:281)
at com.sap.engine.services.jmsconnector.command.DeployJmsResource.exec(DeployJmsResource.java:81)
at com.sap.engine.services.shell.processor.environment.CommandBase.exec(CommandBase.java:132)
at com.sap.engine.services.shell.processor.Interpreter.applyLineCommand(Interpreter.java:391)
at com.sap.engine.services.shell.processor.Interpreter.apply(Interpreter.java:150)
at com.sap.engine.services.shell.processor.Shell.work(Shell.java:148)
I am actually trying to do an automated deploy but I kept getting this error so I am trying to manually deploy it with the J2EE Engine Console tool. The command is:
deploy_jms_resource d:\jay\jms-factories.xml
Anybody have any ideas? At the top of the stack trace it mentions Class loading error but it is not the InitialContextFactoryImpl that is causing the problem because if I enter a totally bogus class name I get a nice ClassNotFound exception.Hi Jay,
Which Reference guide do you mean? You find the jms-resources.xsd here: <a href="https://www.sdn.sap.comhttp://www.sdn.sap.comhttp://www.sdn.sap.com/irj/servlet/prt/portal/prtroot/docs/library/uuid/55e7d51e-0e01-0010-7b84-a95ee55eadeb">Java Messaging</a>, pages 52-58. -
Are Active JMS Connections as viewed through the console (by clicking on Monitor all Active JMS Connections... ) really active? These numbers never seem to decrease.
Thanks,
John
Which one are you talking about?
JMSServer->Monitor Active JMS Servers, the connection field does change.
Server->Monitoring->JMS->Monitor all Active JMS Connections, the table does
reflect the current connections. This works on 6.1 sp2, I don't have other
version handy to verify.
.raja
"John" <[email protected]> wrote in message
news:[email protected]..
> Are Active JMS Connections as viewed through the console (by clicking on
Monitor all Active JMS Connections... ) really active? These numbers never
seem to decrease.
>
> Thanks,
> John
-
How Long Can I cache JMS Connection ?
Hi
My servlets need to send messages to queues. For speed, I am creating and caching JMS connection and queue session in the servlet's init() method. The questions are
1) Will the queue session or connection time out after a couple of days , assumimg the servlet never gets unloaded/reloaded in that period?
2)Is there a way to figure out a connection /session status before trying to create a sender and catching exceptions ?
Regards
-mHi,
The connections do expire after few days hence the easiest way would be to have a double check ....ie.. as you are caching the connection and when ure trying to create a session from the connection keep a try-catch to determine if the connection has expired and if yes then you can create a new connection and cache it again. Now you can use this cached connection to create the sessions .
Hope this helps
neo
Maybe you are looking for
-
Need sample data on AP PO Match
Hi Can some one help on providing sample on AP PO Match A/P PO Match - an A/P invoice matching transaction for which there is a receipt on the correct purchase order but against a different purchase order line.This accrual transaction tells you that
-
When usung google search I get a listing but when I click on it gets replace with spam
When usung google search I get a listing but when I click on a link it gets replace with spam. I notice a half blue spiral in front of the link that pops up. == This happened == Every time Firefox opened == every time I use use the Google Search in f
-
Problem configurin​g WSN network in MAX
HI, I am facing this problem suddenly in using my NI 9792 gateway .The module is getting detected in MAX It is that I am not able to find the Node option under devices and interfaces of the gateway in MAX. I am using LV2010 and NI WSN 1.2. Correspo
-
Error 2068 trapped in 2PC on transaction 3.6.12908. Cleaning up. Error stack returned to user: ORA-02068: fatal error has occurred in Instance_name.WORLD. End-of-file has been detected in the communication channel: ORA-03113 Can anyone please share w
-
Both attribute value and description showing on attribute value dropdown list
Hi All, I am using CRM 7.0 EhP 1 and I have encountered a item I need to address in regard to the display of a Marketing Attribute values on the Account Overview page (BP_HEAD/BPHEADOverview) on the Web Client. The component in question on the page i