JMS problem
I have installed WebAS 6.40 and started the J2EE engine successfully. Up to now I could not find the way to configure the right JMS entries (factories, destinations). Can anybody help and describe how I have to configure JMS...I am not to able to find the Visual Administrator. Please tell me from scratch how to go about for JMS in WAS6.4
Thanks
Abhishek
> Up to now I could not find the
> way to configure the right JMS entries (factories,
> destinations). Can anybody help and describe how I
> have to configure JMS... I am not to able to find the
> Visual Administrator.
You can configure JMS using the Visual Administrator. It is located in the following directory: C:\usr\sap\J2E\JC00\j2ee\admin. Run the go.bat to start it.
For a reference about what you can configure, refer to the JMS admin documentation at http://help.sap.com/saphelp_nw04/helpdata/en/90/57849e5e3e45d784afc4e3bfa8136f/frameset.htm
> Please tell me from scratch how
> to go about for JMS in WAS6.4
Well, refer to the JMS development manual at http://help.sap.com/saphelp_nw04/helpdata/en/a3/63af1bbf09469fa1615c05f0daff6f/frameset.htm
Similar Messages
-
JMS problem with Sun Application Server 8.2
Hi!
I've just started trying JMS and found a problem.
I set a connection factory called "QueueConnectionFactory" in the Sun Application Server Admin Consol.
After this I test this code:
import javax.jms.*;
import javax.naming.*;
public class Sun_JNDI
public static void main(String args[]) throws Exception
Context jndiContext = null;
System.setProperty("java.naming.factory.initial","com.sun.enterprise.naming.SerialInitContextFactory" );
System.setProperty("java.naming.factory.url.pkgs","=com.sun.enterprise.naming");
System.setProperty("java.naming.provider.url","localhost:1024");
jndiContext = new InitialContext();
Object O = jndiContext.lookup("QueueConnectionFactory");
System.out.println(jndiContext);
in result I got this long Exception message:
2006.02.12. 10:52:59 com.sun.corba.ee.spi.logging.LogWrapperBase doLog
INFO: "IOP00710299: (INTERNAL) Successfully created IIOP listener on the specified host/port: all interfaces/1356"
2006.02.12. 10:53:00 com.sun.enterprise.connectors.ActiveRAFactory createActiveResourceAdapter
SEVERE: RAR6001 : Class Not found : com.sun.messaging.jms.ra.ResourceAdapter
2006.02.12. 10:53:00 com.sun.enterprise.connectors.ActiveRAFactory createActiveResourceAdapter
SEVERE:
com.sun.enterprise.connectors.ConnectorRuntimeException: Error in creating active RAR
at com.sun.enterprise.connectors.ActiveRAFactory.createActiveResourceAdapter(ActiveRAFactory.java:76)
at com.sun.enterprise.connectors.ResourceAdapterAdminServiceImpl.createActiveResourceAdapter(ResourceAdapterAdminServiceImpl.java:267)
at com.sun.enterprise.connectors.ConnectorRuntime.createActiveResourceAdapter(ConnectorRuntime.java:189)
at com.sun.enterprise.naming.factory.ConnectorObjectFactory.getObjectInstance(ConnectorObjectFactory.java:71)
at javax.naming.spi.NamingManager.getObjectInstance(NamingManager.java:304)
at com.sun.enterprise.naming.SerialContext.lookup(SerialContext.java:293)
at javax.naming.InitialContext.lookup(InitialContext.java:351)
at Sun_JNDI.main(Sun_JNDI.java:40)
Caused by: java.lang.ClassNotFoundException: com.sun.messaging.jms.ra.ResourceAdapter
at java.net.URLClassLoader$1.run(URLClassLoader.java:200)
at java.security.AccessController.doPrivileged(Native Method)
at java.net.URLClassLoader.findClass(URLClassLoader.java:188)
at java.lang.ClassLoader.loadClass(ClassLoader.java:306)
at sun.misc.Launcher$AppClassLoader.loadClass(Launcher.java:268)
at java.lang.ClassLoader.loadClass(ClassLoader.java:251)
at java.lang.ClassLoader.loadClassInternal(ClassLoader.java:319)
at java.lang.Class.forName0(Native Method)
at java.lang.Class.forName(Class.java:164)
at com.sun.enterprise.connectors.ActiveRAFactory.createActiveResourceAdapter(ActiveRAFactory.java:50)
... 7 more
2006.02.12. 10:53:00 com.sun.enterprise.naming.SerialContext lookup
SEVERE: NAM0004: Exception during name lookup : {0}
com.sun.enterprise.connectors.ConnectorRuntimeException: Error in creating active RAR
at com.sun.enterprise.connectors.ActiveRAFactory.createActiveResourceAdapter(ActiveRAFactory.java:76)
at com.sun.enterprise.connectors.ResourceAdapterAdminServiceImpl.createActiveResourceAdapter(ResourceAdapterAdminServiceImpl.java:267)
at com.sun.enterprise.connectors.ConnectorRuntime.createActiveResourceAdapter(ConnectorRuntime.java:189)
at com.sun.enterprise.naming.factory.ConnectorObjectFactory.getObjectInstance(ConnectorObjectFactory.java:71)
at javax.naming.spi.NamingManager.getObjectInstance(NamingManager.java:304)
at com.sun.enterprise.naming.SerialContext.lookup(SerialContext.java:293)
at javax.naming.InitialContext.lookup(InitialContext.java:351)
at Sun_JNDI.main(Sun_JNDI.java:40)
Caused by: java.lang.ClassNotFoundException: com.sun.messaging.jms.ra.ResourceAdapter
at java.net.URLClassLoader$1.run(URLClassLoader.java:200)
at java.security.AccessController.doPrivileged(Native Method)
at java.net.URLClassLoader.findClass(URLClassLoader.java:188)
at java.lang.ClassLoader.loadClass(ClassLoader.java:306)
at sun.misc.Launcher$AppClassLoader.loadClass(Launcher.java:268)
at java.lang.ClassLoader.loadClass(ClassLoader.java:251)
at java.lang.ClassLoader.loadClassInternal(ClassLoader.java:319)
at java.lang.Class.forName0(Native Method)
at java.lang.Class.forName(Class.java:164)
at com.sun.enterprise.connectors.ActiveRAFactory.createActiveResourceAdapter(ActiveRAFactory.java:50)
... 7 more
Exception in thread "main" javax.naming.CommunicationException: serial context communication ex [Root exception is com.sun.enterprise.connectors.ConnectorRuntimeException: Error in creating active RAR]
at com.sun.enterprise.naming.SerialContext.lookup(SerialContext.java:317)
at javax.naming.InitialContext.lookup(InitialContext.java:351)
at Sun_JNDI.main(Sun_JNDI.java:40)
Caused by: com.sun.enterprise.connectors.ConnectorRuntimeException: Error in creating active RAR
at com.sun.enterprise.connectors.ActiveRAFactory.createActiveResourceAdapter(ActiveRAFactory.java:76)
at com.sun.enterprise.connectors.ResourceAdapterAdminServiceImpl.createActiveResourceAdapter(ResourceAdapterAdminServiceImpl.java:267)
at com.sun.enterprise.connectors.ConnectorRuntime.createActiveResourceAdapter(ConnectorRuntime.java:189)
at com.sun.enterprise.naming.factory.ConnectorObjectFactory.getObjectInstance(ConnectorObjectFactory.java:71)
at javax.naming.spi.NamingManager.getObjectInstance(NamingManager.java:304)
at com.sun.enterprise.naming.SerialContext.lookup(SerialContext.java:293)
... 2 more
Caused by: java.lang.ClassNotFoundException: com.sun.messaging.jms.ra.ResourceAdapter
at java.net.URLClassLoader$1.run(URLClassLoader.java:200)
at java.security.AccessController.doPrivileged(Native Method)
at java.net.URLClassLoader.findClass(URLClassLoader.java:188)
at java.lang.ClassLoader.loadClass(ClassLoader.java:306)
at sun.misc.Launcher$AppClassLoader.loadClass(Launcher.java:268)
at java.lang.ClassLoader.loadClass(ClassLoader.java:251)
at java.lang.ClassLoader.loadClassInternal(ClassLoader.java:319)
at java.lang.Class.forName0(Native Method)
at java.lang.Class.forName(Class.java:164)
at com.sun.enterprise.connectors.ActiveRAFactory.createActiveResourceAdapter(ActiveRAFactory.java:50)
... 7 more
So I tested this code under Netbeans5 and I don't where to find jar file contains the class: com.sun.messaging.jms.ra.ResourceAdapter
Other time I tryied to lookup this URL: "java:comp/env/jms/QueueConnectionFactory"
The result was: javax.naming.NameNotFoundException
I know it is a small code example but if I'm not able to solve this problem I can't go on with JMS.
I would be glad by any help.
Regards:
SandorHello
In my code it looks like that:
1: System.setProperty("com.sun.jndi.ldap.LdapCtxFactory", "iiop://localhost:3700");
2: Context ctx = new InitialContext();
3: TopicConnectionFactory factory = (TopicConnectionFactory)ctx.lookup("jms/DailyDestinationFactory");
4: TopicConnection connection = factory.createTopicConnection();
5: TopicSession session = connection.createTopicSession(false, Session.AUTO_ACKNOWLEDGE);
6: Topic topic = (Topic)ctx.lookup("jms/DailyBean");
7: TopicPublisher pub = session.createPublisher(topic);
8: TextMessage msg = session.createTextMessage();
9: msg.setText("NewMessage");
10: pub.send(msg);
and it work with Sun App Server 8.2. -
I'm trying to call a SOAP over JMS Service form the BPEL process manager. For a simple example I use the Apache CXF example with Active MQ. The service has the following WSDL:
<?xml version="1.0" encoding="UTF-8"?>
<wsdl:definitions xmlns="http://schemas.xmlsoap.org/wsdl/" xmlns:jms="http://cxf.apache.org/transports/jms" xmlns:soap="http://schemas.xmlsoap.org/wsdl/soap/" xmlns:tns="http://cxf.apache.org/jms_greeter" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:wsdl="http://schemas.xmlsoap.org/wsdl/" xmlns:x1="http://cxf.apache.org/jms_greeter/types" name="JMSGreeterService" targetNamespace="http://cxf.apache.org/jms_greeter">
<wsdl:types>
<schema targetNamespace="http://cxf.apache.org/jms_greeter/types" xmlns="http://www.w3.org/2001/XMLSchema" elementFormDefault="qualified">
<element name="sayHi">
<complexType/>
</element>
<element name="sayHiResponse">
<complexType>
<sequence>
<element name="responseType" type="xsd:string"/>
</sequence>
</complexType>
</element>
<element name="greetMe">
<complexType>
<sequence>
<element name="requestType" type="xsd:string"/>
</sequence>
</complexType>
</element>
<element name="greetMeResponse">
<complexType>
<sequence>
<element name="responseType" type="xsd:string"/>
</sequence>
</complexType>
</element>
<element name="greetMeOneWay">
<complexType>
<sequence>
<element name="requestType" type="xsd:string"/>
</sequence>
</complexType>
</element>
</schema>
</wsdl:types>
<wsdl:message name="sayHiRequest">
<wsdl:part name="in" element="x1:sayHi"/>
</wsdl:message>
<wsdl:message name="sayHiResponse">
<wsdl:part name="out" element="x1:sayHiResponse"/>
</wsdl:message>
<wsdl:message name="greetMeRequest">
<wsdl:part name="in" element="x1:greetMe"/>
</wsdl:message>
<wsdl:message name="greetMeResponse">
<wsdl:part name="out" element="x1:greetMeResponse"/>
</wsdl:message>
<wsdl:message name="greetMeOneWayRequest">
<wsdl:part name="in" element="x1:greetMeOneWay"/>
</wsdl:message>
<wsdl:portType name="JMSGreeterPortType">
<wsdl:operation name="sayHi">
<wsdl:input name="sayHiRequest" message="tns:sayHiRequest"/>
<wsdl:output name="sayHiResponse" message="tns:sayHiResponse"/>
</wsdl:operation>
<wsdl:operation name="greetMe">
<wsdl:input name="greetMeRequest" message="tns:greetMeRequest"/>
<wsdl:output name="greetMeResponse" message="tns:greetMeResponse"/>
</wsdl:operation>
<wsdl:operation name="greetMeOneWay">
<wsdl:input name="greetMeOneWayRequest" message="tns:greetMeOneWayRequest"/>
</wsdl:operation>
</wsdl:portType>
<wsdl:binding name="JMSGreeterPortBinding" type="tns:JMSGreeterPortType">
<soap:binding style="document" transport="http://cxf.apache.org/transports/jms"/>
<wsdl:operation name="greetMe">
<soap:operation soapAction="" style="document"/>
<wsdl:input name="greetMeRequest">
<soap:body use="literal"/>
</wsdl:input>
<wsdl:output name="greetMeResponse">
<soap:body use="literal"/>
</wsdl:output>
</wsdl:operation>
<wsdl:operation name="sayHi">
<soap:operation soapAction="" style="document"/>
<wsdl:input name="sayHiRequest">
<soap:body use="literal"/>
</wsdl:input>
<wsdl:output name="sayHiResponse">
<soap:body use="literal"/>
</wsdl:output>
</wsdl:operation>
<wsdl:operation name="greetMeOneWay">
<soap:operation style="document" soapaction=""/>
<wsdl:input name="greetMeOneWayRequest">
<soap:body use="literal"/>
</wsdl:input>
</wsdl:operation>
</wsdl:binding>
<wsdl:service name="JMSGreeterService">
<wsdl:port name="GreeterPort" binding="tns:JMSGreeterPortBinding">
<jms:address destinationStyle="queue" jndiConnectionFactoryName="ConnectionFactory" jndiDestinationName="dynamicQueues/test.cxf.jmstransport.queue">
<jms:JMSNamingProperty name="java.naming.factory.initial" value="org.apache.activemq.jndi.ActiveMQInitialContextFactory"/>
<jms:JMSNamingProperty name="java.naming.provider.url" value="tcp://localhost:61616"/>
</jms:address>
<jms:clientConfig useConduitIdSelector="false"/>
</wsdl:port>
</wsdl:service>
</wsdl:definitions>
When trying to call the service i get the follwing errror:
<messages>
<input>
<Invoke_2_greetMeOneWay_InputVariable>
<part xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" name="in">
<greetMeOneWay xmlns="http://cxf.apache.org/jms_greeter/types">
<requestType>
sdfsdf!
</requestType>
</greetMeOneWay>
</part>
</Invoke_2_greetMeOneWay_InputVariable>
</input>
<fault>
<bindingFault xmlns="http://schemas.oracle.com/bpel/extension">
<part name="summary">
<summary>
Unable to find an available port
</summary>
</part>
</bindingFault>
</fault>
</messages>
When using a JMS Adapter Service i can access the queue without any problems.
Any ideas? Thanks!Above all, really thank you for your precious help.
I thought about resolving the problem with JMS because it was studied to resolve asynchronous message delivery, which is what I'm trying to achieve.
So, I think I'll try the second solution you indicated. Let's see if I understood:
1- my customer decides to send some messages he wants to send [to better understand, I'll call them SMS] through the interface I developed
2- a new JMS Message is created
3- a MDB wake up and performs the initial steps to connect throught native calls
4- new MDB wake up and, using the connection, send created SMS
5- another process use the connection to read the StatusInd and create a new JMS Message to describe the message status
My implementation doubt is that I must send a lot of SMS (around 4000 SMS in one action), so, in pass 4, should I create 4000 MDB instances? It should be a clean implementation, maybe this way I could use also correlation id/replyto headers in passage 5, but I would it waste many resources?
And, also, how can I implement the "native calls"? Is there a way to create a class that support this proprietary protocol?
And what about creating the connections with the server? Should I use java.net.socket?
Really thank you,
Andrea
P.S.
I'll look for implementing it using Arjuna+JBoss ;) -
Control Tutorial -- JMS problem
Long story short: I'm using a JMS control (that was made by BEA for the tutorial),
and WLS inside of WLW, I subscribe to a JMS server, send a text message, but I
can't get the callback (from the control) that corresponds to the response. Attached
is complete description of problem.
In particular, I'm questioning the @jc:jms-property annotations that don't have
key/value pairs in them...and I'm wondering how to monitor JMS message traffic
from WLW...and I'm wondering what my problem is.
Andy
[ControlTutorialInWLW.doc]Thanks, Steve. Restarting the server (and a clean build) did it.
Hey, I said I was green. :)
"Steve Hanson" <[email protected]> wrote:
>
Hi Andy:
I don't see anything obviously wrong with your JMS control code -- it
looks correct
to me -- except for the two empty @jc:jms-property annotations on the
sendTextMessage()
method.
Those look suspicious to me. It looks like something went wrong when
Workshop
generated the control file there. I would (1) remove those annotations
from
the method, (2) restart the server, and try again.
Also see [BEA]/weblogic81/samples/platform/TutorialsApp/FirstJavaControl
for a
finished version of the Control tutorial.
-Steve Hanson
"Andy Breeden" <[email protected]> wrote:
Long story short: I'm using a JMS control (that was made by BEA for
the tutorial),
and WLS inside of WLW, I subscribe to a JMS server, send a text message,
but I
can't get the callback (from the control) that corresponds to the response.
Attached
is complete description of problem.
In particular, I'm questioning the @jc:jms-property annotations that
don't have
key/value pairs in them...and I'm wondering how to monitor JMS message
traffic
from WLW...and I'm wondering what my problem is.
Andy -
I need to do a few things with sensors that involve jmsQueue. I´m very new to the jms technology. I need to do a pooling from a jms queue.
I want to do a simple flow. Read the values inserted from the keyboard, write them to a queue and read them from that queue. This is done for learning process only.
Read paramenteres-> Write in queue-> Read from Queue.
Anyone has an example ?
My flow stops in read from queue with the state pending.
My error log has this message.
<2006-03-06 18:09:18,087> <INFO> <default.collaxa.cube.compiler> validating "D:\OraHome_2\integration\orabpel\domains\default\tmp\.bpel_ProjectProduce_v2006_03_06__65161.jar\ProjectProduce.bpel" ...
<2006-03-06 18:09:21,255> <INFO> <default.collaxa.cube.engine.deployment> <CubeProcessFactory::generateProcessClass>
Process "ProjectProduce" (revision "v2006_03_06__65161") successfully compiled.
<2006-03-06 18:09:21,286> <INFO> <default.collaxa.cube.activation> <AdapterFramework::Inbound> Loading JCAActivationAgent for {portType=Consume_Message_ptt}
<2006-03-06 18:09:21,286> <INFO> <default.collaxa.cube.activation> <AdapterFramework::Inbound> JCAActivationAgent::load - Locating Adapter Framework instance: OraBPEL
<2006-03-06 18:09:21,286> <INFO> <default.collaxa.cube.activation> <AdapterFramework::Inbound> JCAActivationAgent::load - Done loading JCAActivationAgent for processId='bpel://localhost/default/ProjectProduce~v2006_03_06__65161/
<2006-03-06 18:09:21,454> <INFO> <default.collaxa.cube.engine.deployment> Process "ProjectProduce" (revision "v2006_03_06__65161") successfully loaded.
<2006-03-06 18:09:31,233> <INFO> <default.collaxa.cube.ws> <AdapterFramework::Outbound> file:/D:/OraHome_2/integration/orabpel/domains/default/tmp/.bpel_ProjectProduce_v2006_03_06__65161.jar/ProduceMessage.wsdl [ Produce_Message_ptt::Produce_Message(ExpenseRecord) ] - Using JCA Connection Pool - max size = <unbounded>
<2006-03-06 18:09:31,279> <WARN> <default.collaxa.cube.ws> <AdapterFramework::Outbound> file:/D:/OraHome_2/integration/orabpel/domains/default/tmp/.bpel_ProjectProduce_v2006_03_06__65161.jar/ProduceMessage.wsdl [ Produce_Message_ptt::Produce_Message(ExpenseRecord) ] - The jca:header element oracle.tip.adapter.fw.wsif.jca.JCAHeader@466919<jca:header message=null:OutboundHeader_msgoutboundHeader/> does not match the outbound headers provided in {}
<2006-03-06 18:09:31,279> <INFO> <default.collaxa.cube.ws> <JMSAdapter::Outbound> JMSMessageProducer_ctor: Constructed MessageProducer for destination jms/demoQueue (payload = 1)
<2006-03-06 18:09:31,279> <INFO> <default.collaxa.cube.ws> <JMSAdapter::Outbound> JMSMessageProducer_init: Creating MessageProducer for destination jms/demoQueue (payload = 1)
<2006-03-06 18:09:31,279> <INFO> <default.collaxa.cube.ws> <JMSAdapter::Outbound> JMSMessageProducer_init: Successfully created MessageProducer for destination jms/demoQueue (payload = 1)
<2006-03-06 18:09:31,279> <INFO> <default.collaxa.cube.ws> <JMSAdapter::Outbound> JmsProducer_execute: Successfully produced message.
the message is correctly produce. Why do I have pending in the receive?
Any idea or/and example is appreciated.
Thanks
Gonçalo RibeiroNote that it is illegal to setup a MessageListener from inside a servlet or
an EJB.
_sjz.
"Sudhir" <[email protected]> wrote in message
news:[email protected]..
>
> How are you making the listner run continuosly thru EJB
> a while(true) loop or a thread?
>
>
> [email protected] (Tal) wrote:
> >Hi,
> >I initialize some JMS listeners from servlets and from EJB's
> >(The EJB's calls a class which register as a JMS listener).
> >My problem is that I am starting with x listeners and from time
> >to time I call line up command to see who is listening.
> >After a while there is x-y listeners and so on...
> >what is happen? where do they disapears?
> >
> >Is there a problem with the JMS and EJB's / Servelts???
> >Thanks,
> >Tal.
>
-
Urgent JMS Problem,Help!!
I meet a urgent problem about JMS,I use wls61 sp1
but when serverl MDB subscribed to one topic,problem
accur and not all of the subscriber seems to receive the
message,I know that sp2 have slove the bugs.but I just
want to get the patch of jms for wls61sp1.
This is very urgent,can anyone help me to
get the patch?
Thanks a lotThis sounds like the symptoms that I am currently suffering,
under Weblogic 6.1 SP2.
My situation is that I have processes on several "satellite"
Weblogic servers that all subscribe to the same set of several
JMS Topics published by a "central" Weblogic server. The servers
are all using Weblogic 6.1 SP2 (non-clustered). It appears that
only one of the subscribing "satellite" servers receives the
messages published. After a couple of experiments, it appears
that the first "satellite" server to register with the Topics is
the one that receives the messages, even if that "satellite"
server is restarted, until such time as the "central" server is restarted.
It appears from Eric's message that there is a patch for this.
How do I go about getting a copy of the patch? Or is my problem
different?
Thanks,
-Chris-
"Eric.Nie" <[email protected]> wrote:
>
I have got the patch,Thank u very much
Ravi Akella <[email protected]> wrote:
Are these subscribers on the server. If you could provide some more
info about the problem I will try to help you.
Ravi Akella.
"Eric.Nie" wrote:
I meet a urgent problem about JMS,I use wls61 sp1
but when serverl MDB subscribed to one topic,problem
accur and not all of the subscriber seems to receive the
message,I know that sp2 have slove the bugs.but I just
want to get the patch of jms for wls61sp1.
This is very urgent,can anyone help me to
get the patch?
Thanks a lot -
JMS Connector WebSphere MQ JMS Problems
I'm having problems configuring and using Oracle's JMS Connector with IBM WebSphere MQ JMS, as explained in the following Oracle How-to:
http://www.oracle.com/technology/tech/java/oc4j/1013/how_to/how-to-connect-to-mqseries/doc/how-to-connect-to-mqseries.html
by Jeff Steidl
When trying to deploy the application to the oc4j (wich is done as part of the default ant target), I get the following error in the oc4j console:
2006-07-20 12:04:29.859 ERROR J2EE EJB3027 [how-to-connect-to-mqseries] An error
occured deploying EJB module: java.lang.InstantiationException: Resource except
ion(MQJMSRAInstanceName) for MessageDrivenBean DealerEjbName during endpoint act
ivation: failure looking up resource provider factory for XAConnectionFactoryWra
pper [XA Unified]-OracleGJRA.XAConnectionFactoryWrapper.pedroec.-7b007002:10c88d
48c98:-7fff.171 []: javax.resource.spi.ResourceAdapterInternalException: Looking
up java:comp/resource/MQJMSReference/mqxacf: javax.naming.NameNotFoundException
: No resource named 'MQJMSReference/mqxacf'found
I assume the problem is that I don't have an appropriate WebShpere binding for the resource.
Before going through the mentioned How-to, I followed the install instructions in:
http://www.oracle.com/technology/tech/java/oc4j/1003/how_to/jcajmsmq/doc/Install.html
In order to create a queue manager, a queue, a topic and the appropriate bindings.
After following the previous document, I end up with the following bindings (listing obtained using JMSAdmin console):
InitCtx> dis ctx
Contents of InitCtx
.bindings java.io.File
a MQXAQCF com.ibm.mq.jms.MQXAQueueConnectionFactory
a MQTCF com.ibm.mq.jms.MQTopicConnectionFactory
a MQQCF com.ibm.mq.jms.MQQueueConnectionFactory
a MQQ com.ibm.mq.jms.MQQueue
a MQT com.ibm.mq.jms.MQTopic
a MQXATCF com.ibm.mq.jms.MQXATopicConnectionFactory
7 Object(s)
0 Context(s)
7 Binding(s), 6 Administered
And as you can see there is no mqxacf binding.
So the question is, should I define a new binding with that name? If so, what would be the command (def xacf(mqxacf) ?)
As you can see, ther is a MQXAQCF binding so Instead of defining a new mqxacf (which I really don't know how to do...) I thought that maybe I could use this one, being a xa queue connection factory instead of a plain xa connection factory.
This is used by the MDB, so I modified orion-ejb-jar.xml changing:
<resource-ref-mapping
location = "MQJMSRASubcontext/MyXACF"
name = "jms/DealerConnectionFactory"/>
<config-property>
<config-property-name>ConnectionFactoryJndiName
</config-property-name>
<config-property-value>MQJMSRASubcontext/MyXACF
</config-property-value>
</config-property>
for this:
<resource-ref-mapping
location = "MQJMSRASubcontext/MyXAQCF"
name = "jms/DealerConnectionFactory"/>
<config-property>
<config-property-name>ConnectionFactoryJndiName
</config-property-name>
<config-property-value>MQJMSRASubcontext/MyXAQCF
</config-property-value>
</config-property>
I changed MyXACF with MyXAQCF because oc4j-ra.xml defines a jndi location of mqxacf (which is not beign found in the bindings) for MyXACF while it defines a jndi location of MQXAQCF for MyXAQCF, which is defined in the bindings.
With this change, the application deploys ok ... but when I run the client (ant larry) I get the following error (from the client console, not the oc4j console... in the oc4j console, nothing is reported):
run-demo:
[exec] java.lang.NullPointerException
[exec] at oracle.j2ee.ra.jms.generic.RAUtils.lookupUsingResourceProvide
r(RAUtils.java:254)
[exec] at oracle.j2ee.ra.jms.generic.CommonManagedConnectionFactoryImpl
.getFactory(CommonManagedConnectionFactoryImpl.java:605)
[exec] at oracle.j2ee.ra.jms.generic.CommonFactoryWrapper.localCreateCo
nnection(CommonFactoryWrapper.java:121)
[exec] at oracle.j2ee.ra.jms.generic.ConnectionFactoryWrapper.createCon
nection(ConnectionFactoryWrapper.java:62)
[exec] at MyChannel.<init>(MyChannel.java:46)
[exec] at Player.play(Player.java:242)
[exec] at Player.main(Player.java:30)
Since MyCF is bound to the jndi location mqcf (in oc4j-ra.xml) which does not exist in my MQ bindings I decided to modify orion-ejb-jar.xml as I did for the MyXACF of the MDB.
I changed
<resource-ref-mapping
location = "MQJMSRASubcontext/MyCF"
name = "jms/PlayerConnectionFactory"/>
with this:
<resource-ref-mapping
location = "MQJMSRASubcontext/MyQCF"
name = "jms/PlayerConnectionFactory"/>
I changed MyCF to MyQCF, which has a jndi location of MQQCF (specified inside of oc4j-ra.xml) which has a valid MQ binding.
.... but I get the following error:
run-demo:
[exec] Exception in thread "main" java.lang.AbstractMethodError: com.ibm.mq
.jms.MQQueueConnectionFactory.createConnection()Ljavax/jms/Connection;
[exec] at oracle.j2ee.ra.jms.generic.CommonManagedConnectionFactoryImpl
.createManagedConnection(CommonManagedConnectionFactoryImpl.java:261)
[exec] at com.evermind.server.connector.ApplicationConnectionManager.cr
eateManagedConnection(ApplicationConnectionManager.java:1333)
[exec] at oracle.j2ee.connector.ConnectionPoolImpl.createManagedConnect
ionFromFactory(ConnectionPoolImpl.java:324)
[exec] at oracle.j2ee.connector.ConnectionPoolImpl.access$800(Connectio
nPoolImpl.java:95)
[exec] at oracle.j2ee.connector.ConnectionPoolImpl$NonePoolingScheme.ge
tManagedConnection(ConnectionPoolImpl.java:1209)
[exec] at oracle.j2ee.connector.ConnectionPoolImpl.getManagedConnection
(ConnectionPoolImpl.java:782)
[exec] at com.evermind.server.connector.ApplicationConnectionManager.ge
tConnectionFromPool(ApplicationConnectionManager.java:1532)
[exec] at com.evermind.server.connector.ApplicationConnectionManager.ac
quireConnectionContext(ApplicationConnectionManager.java:1477)
[exec] at com.evermind.server.connector.ApplicationConnectionManager.al
locateConnection(ApplicationConnectionManager.java:1423)
[exec] at oracle.j2ee.connector.OracleConnectionManager.unprivileged_al
locateConnection(OracleConnectionManager.java:244)
[exec] at oracle.j2ee.connector.OracleConnectionManager.allocateConnect
ion(OracleConnectionManager.java:198)
[exec] at oracle.j2ee.ra.jms.generic.CommonFactoryWrapper.localCreateCo
nnection(CommonFactoryWrapper.java:130)
[exec] at oracle.j2ee.ra.jms.generic.QueueConnectionFactoryWrapper.crea
teConnection(QueueConnectionFactoryWrapper.java:84)
[exec] at MyChannel.<init>(MyChannel.java:46)
[exec] at Player.play(Player.java:242)
[exec] at Player.main(Player.java:30)
[exec] Result: 1
So as you can see I'm stuck.
Maybe it is just a simple matter of defining the appropriate objects and bindigs for mqxacf and mqcf, but I don't know how to do that.
I would appreciate any help.
Message was edited by:
pablokrauseThanks again for your quick and useful response Jeff.
Regarding the extra administration steps to get topic consumers working in MQ, I had already executed them a few days ago as part of the MQ setup as is described in another JMS resource adapter demo (see references at bottom of this reply) but I thought that doing it once was enough. Well, it seems that you have to execute those commands each time you start MQ!
I executed them (again), as you kindly suggested in your last response and voila, it worked!... well sort of.
After starting the clients, I get the following random error in oc4j:
06/07/21 15:39:18 Got message: PING
06/07/21 15:39:18 randomly testing rollback:
06/07/21 15:39:18 sending a junk message
06/07/21 15:39:18 Sent message: Invalid junk message
06/07/21 15:39:18 marking transaction for rollback
06/07/21 15:39:18 sending a junk message
06/07/21 15:39:18 Sent message: Invalid junk message
2006-07-21 15:39:18.921 WARNING J2EE JTA0107 Error in resource driver during rol
lback: javax.transaction.xa.XAException: XA operation failed, see errorCode
2006-07-21 15:39:18.921 WARNING J2EE JTA0104 Failed to add the resource due to e
rror in the resource : javax.transaction.xa.XAException: Attempt to start transa
ction while transaction Xid( Global Id c0.a7.ff.20.b0.22.00.00.0c.00.00.00.00.00
.00.00.00.00.00.00.00.00.00.00, Format Id 4660, Branch Id 7d.20.c6.d9.00.00.00.0
0.00.00.00.00.00.00.00.00) is active. errorcode : -6 : Enlistment of resource fa
iled. Attempt to start transaction while transaction Xid( Global Id c0.a7.ff.20.
b0.22.00.00.0c.00.00.00.00.00.00.00.00.00.00.00.00.00.00.00, Format Id 4660, Bra
nch Id 7d.20.c6.d9.00.00.00.00.00.00.00.00.00.00.00.00) is active.
followed, after a few seconds, by the following stack trace:
06/07/21 16:13:30 Got message: PING
06/07/21 16:13:30 MQJMS3011: Failed to publish message to MQ queue
06/07/21 16:13:30 javax.jms.JMSException: MQJMS3011: Failed to publish message t
o MQ queue
06/07/21 16:13:30 at com.ibm.mq.jms.services.ConfigEnvironment.newExceptio
n(ConfigEnvironment.java:553)
06/07/21 16:13:30 at com.ibm.mq.jms.MQMessageProducer.publish(MQMessagePro
ducer.java:1855)
06/07/21 16:13:30 at com.ibm.mq.jms.MQMessageProducer.send(MQMessageProduc
er.java:976)
06/07/21 16:13:30 at com.ibm.mq.jms.MQMessageProducer.send(MQMessageProduc
er.java:1056)
06/07/21 16:13:30 at oracle.j2ee.ra.jms.generic.CommonProducerWrapper.send
(CommonProducerWrapper.java:121)
06/07/21 16:13:30 at MyChannel.send(MyChannel.java:73)
06/07/21 16:13:30 at Dealer.onMessage(Dealer.java:210)
06/07/21 16:13:30 at sun.reflect.NativeMethodAccessorImpl.invoke0(Native M
ethod)
06/07/21 16:13:30 at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMet
hodAccessorImpl.java:39)
06/07/21 16:13:30 at sun.reflect.DelegatingMethodAccessorImpl.invoke(Deleg
atingMethodAccessorImpl.java:25)
06/07/21 16:13:30 at java.lang.reflect.Method.invoke(Method.java:585)
06/07/21 16:13:30 at com.evermind.server.ejb.interceptor.joinpoint.EJBJoin
PointImpl.invoke(EJBJoinPointImpl.java:35)
06/07/21 16:13:30 at com.evermind.server.ejb.interceptor.InvocationContext
Impl.proceed(InvocationContextImpl.java:69)
06/07/21 16:13:30 at com.evermind.server.ejb.interceptor.system.DMSInterce
ptor.invoke(DMSInterceptor.java:52)
06/07/21 16:13:30 at com.evermind.server.ejb.interceptor.InvocationContext
Impl.proceed(InvocationContextImpl.java:69)
06/07/21 16:13:30 at com.evermind.server.ejb.interceptor.system.SetContext
ActionInterceptor.invoke(SetContextActionInterceptor.java:34)
06/07/21 16:13:30 at com.evermind.server.ejb.interceptor.InvocationContext
Impl.proceed(InvocationContextImpl.java:69)
06/07/21 16:13:30 at oracle.j2ee.connector.messageinflow.MessageEndpointIm
pl.invokeMessageInflowCallbacks(MessageEndpointImpl.java:294)
06/07/21 16:13:30 at MessageListener_MessageEndpoint1.onMessage(MessageLis
tener_MessageEndpoint1.java:39)
06/07/21 16:13:30 at oracle.j2ee.ra.jms.generic.WorkConsumer.run(WorkConsu
mer.java:237)
06/07/21 16:13:30 at oracle.j2ee.connector.work.WorkWrapper.runTargetWork(
WorkWrapper.java:242)
06/07/21 16:13:30 at oracle.j2ee.connector.work.WorkWrapper.doWork(WorkWra
pper.java:215)
06/07/21 16:13:30 at oracle.j2ee.connector.work.WorkWrapper.run(WorkWrappe
r.java:190)
06/07/21 16:13:30 at EDU.oswego.cs.dl.util.concurrent.PooledExecutor$Worke
r.run(PooledExecutor.java:814)
06/07/21 16:13:30 at java.lang.Thread.run(Thread.java:595)
In the Dealer code, I found a piece of code that randomly generating a junk message and marking the transaction for rollback. If I comment out this code, everything works fine.
So, even when I managed to make the demo work, the transactional stuff is not working.
It would be really nice to know what is going on, but I'm tired, its fiday and I'm clueless...
Now, for the "Unable to load message properties file - mqji(xx).properties", it is still showing up, but as you said, MQ seems to work fine.
Thank you very much again Jeff for your invaluable and extremely responsive help.
References:
I can't seem to find an demo that was very useful for me for setting up MQ in the Oracle site, but the direct links seem to still be working:
http://www.oracle.com/technology/tech/java/oc4j/1003/how_to/jcajmsmq/doc/readme.html
http://www.oracle.com/technology/tech/java/oc4j/1003/how_to/jcajmsmq/doc/Install.html
and the sample code and scripts:
http://otn.oracle.com/tech/java/oc4j/1003/how_to/jcajmsmq.zip
Message was edited by:
pablokrause -
Hi
I have a simple bpel process that's supposed to read a message from a queue and put a message back on the same queue using the JmsAdapter. When I deploy the process, the log says that java:comp/resource/ojmstest/Queues/demoQueue can not be found:
<2006-05-28 18:36:56,751> <INFO> <default.collaxa.cube.activation> <JMSAdapter::Inbound> Created new managed connection for JMS user jmsuser
<2006-05-28 18:36:57,011> <WARN> <default.collaxa.cube.activation> <JMSAdapter::Inbound> JMSMessageConsumer_init: Retrying connection; attempt #1
<2006-05-28 18:38:57,785> <WARN> <default.collaxa.cube.activation> <JMSAdapter::Inbound>
ORABPEL-12135
ERRJMS_ERR_CR_QUEUE_CONS.
Error while creating Queue consumer:.
Please examine the log file to determine the problem.
at oracle.tip.adapter.jms.JMS.JMSConnection.createConsumer(JMSConnection.java:346)
at oracle.tip.adapter.jms.JMS.JMSMessageConsumer.createConsumer(JMSMessageConsumer.java:214)
at oracle.tip.adapter.jms.JMS.JMSMessageConsumer.init(JMSMessageConsumer.java:158)
at oracle.tip.adapter.jms.inbound.JmsConsumer.init(JmsConsumer.java:115)
at oracle.tip.adapter.jms.JmsEndpoint.run(JmsEndpoint.java:113)
at oracle.tip.adapter.fw.jca.work.WorkerJob.go(WorkerJob.java:51)
at oracle.tip.adapter.fw.common.ThreadPool.run(ThreadPool.java:267)
at java.lang.Thread.run(Thread.java:534)
Caused by: oracle.jms.AQjmsException: JMS-190: Queue java:comp/resource/ojmstest/Queues/demoQueue not found
at oracle.jms.AQjmsError.throwEx(AQjmsError.java:346)
at oracle.jms.AQjmsSession.createQueue(AQjmsSession.java:1296)
at oracle.tip.adapter.jms.JMS.JMSDestination.getQueue(JMSDestination.java:83)
at oracle.tip.adapter.jms.JMS.JMSConnection.createConsumer(JMSConnection.java:330)
... 7 more
In my global application.xml, I have:
<resource-provider class="oracle.jms.OjmsContext" name="ojmstest">
<description>OJMS/AQ</description>
<property name="url" value="jdbc:oracle:thin:@eros.goldi.no:1521:orcl"/>
<property name="username" value="jmsuser"/>
<property name="password" value="jmsuser"/>
</resource-provider>
In oc4j-ra.xml, I have:
<connector-factory location="eis/aqjms/Queue" connector-name="Jms Adapter">
<config-property name="connectionFactoryLocation" value="java:comp/resource/ojmstest/QueueConnectionFactories/myQCF"/>
<config-property name="factoryProperties" value=""/>
<config-property name="acknowledgeMode" value="AUTO_ACKNOWLEDGE"/>
<config-property name="isTopic" value="false"/>
<config-property name="isTransacted" value="true"/>
<config-property name="username" value="jmsuser"/>
<config-property name="password" value="jmsuser"/>
</connector-factory>
I have checked that demoQueue exists in the database.
Any ideas?
AndréHi
I managed to get it to work now on a different database.
I probably didn't grant all the necessary rights to my jmsuser.
Thanks,
André -
JMS: problem removing JMSDestination
I am having a problem removing and cleaning JMsDestination. I get an error "Error cleaning database during destination delete". Below youse the code
Any thoughts?
zbestquest
Microsoft Windows 2000 [Version 5.00.2195]
(C) Copyright 1985-1999 Microsoft Corp.
D:\>cd j2sdkee1.3\bin
D:\j2sdkee1.3\bin>j2eeadmin -listJdbcDatasource
JdbcDatasource
< JDBC Resource : jdbc/Cloudscape , jdbc:cloudscape:rmi:CloudscapeDB;create=true
>
< JDBC Resource : jdbc/DB1 , jdbc:cloudscape:rmi:CloudscapeDB;create=true >
< JDBC Resource : jdbc/DB2 , jdbc:cloudscape:rmi:CloudscapeDB;create=true >
< JDBC Resource : jdbc/InventoryDB , jdbc:cloudscape:rmi:CloudscapeDB;create=tru
e >
< JDBC Resource : jdbc/EstoreDB , jdbc:cloudscape:rmi:CloudscapeDB;create=true >
D:\j2sdkee1.3\bin>j2eeadmin -listJmsDestination
JmsDestination
< JMS Destination : jms/Topic , javax.jms.Topic >
< JMS Destination : jms/Queue , javax.jms.Queue >
< JMS Destination : jms/Myqueue , javax.jms.Queue >
< JMS Destination : jms/MyQueue , javax.jms.Queue >
< JMS Destination : MyQueue , javax.jms.Queue >
D:\j2sdkee1.3\bin>j2eeadmin -removeAllJmsDestination
Error occurred: javax.jms.JMSException: Error cleaning database during destinati
on delete
D:\j2sdkee1.3\bin>j2eeadmin -removeJmsDestination jms/Queue
Error occurred: javax.jms.JMSException: Error cleaning database during destinati
on delete
D:\j2sdkee1.3\bin>j2eeadmin -removeJmsDestination MyQueue
Error occurred: javax.jms.JMSException: Error cleaning database during destinati
on delete
D:\j2sdkee1.3\bin>j2eeadmin -removeJmsDestination jms/Myqueue
Error occurred: javax.jms.JMSException: Error cleaning database during destinati
on delete
D:\j2sdkee1.3\bin>Need help : Any JMS client I run, not able to send a message, I am suspecting there might be a problem with the JMSDestination. Any one run through this before?
I am having a problem removing and cleaning
JMsDestination. I get an error "Error cleaning
database during destination delete". Below youse the
code
Any thoughts?
zbestquest
Microsoft Windows 2000 [Version 5.00.2195]
(C) Copyright 1985-1999 Microsoft Corp.
D:\>cd j2sdkee1.3\bin> D:\j2sdkee1.3\bin>j2eeadmin -listJmsDestination
JmsDestination
< JMS Destination : jms/Topic , javax.jms.Topic >
< JMS Destination : jms/Queue , javax.jms.Queue >
< JMS Destination : jms/Myqueue , javax.jms.Queue >
< JMS Destination : jms/MyQueue , javax.jms.Queue >
< JMS Destination : MyQueue , javax.jms.Queue >
D:\j2sdkee1.3\bin>j2eeadmin -removeAllJmsDestination
Error occurred: javax.jms.JMSException: Error cleaning
database during destinati
on delete
D:\j2sdkee1.3\bin>j2eeadmin -removeJmsDestination
jms/Queue
Error occurred: javax.jms.JMSException: Error cleaning
database during destinati
on delete
D:\j2sdkee1.3\bin>j2eeadmin -removeJmsDestination
MyQueue
Error occurred: javax.jms.JMSException: Error cleaning
database during destinati
on delete
D:\j2sdkee1.3\bin>j2eeadmin -removeJmsDestination
jms/Myqueue
Error occurred: javax.jms.JMSException: Error cleaning
database during destinati
on delete
D:\j2sdkee1.3\bin> -
Microsoft SQL Server JDBC driver and WLS JMS problem?
Greetings,
I'm using the Microsoft SQL Server JDBC driver with WLS with JMS
persisted to SQL Server, during WLS startup the JMS attempts to
read the JMSStore and JMSState tables in the db, if they are
already present (say, from a previous run) the driver kicks out:
java.sql.SQLException: [Microsoft][SQLServer 2000 Driver for JDBC]ResultSet can
not re-read row data for column 1.
If the tables are not present, then WLS creates them and
everything proceeds fine. Now, its not a good thing to attempt
to reread row data for a ResultSet, especially for portability. Why is WLS JMS
doing this? is there some config I can use to adjust JMS startup behavior for
persisted JMS stores?
Jay Houghton
Centiv
[email protected]
long exception trace follows:
<Oct 1, 2002 8:29:11 AM EDT> <Info> <JMS> <User connection factory "BroadcastTopicFactory"
is started.>
<Oct 1, 2002 8:29:18 AM EDT> <Info> <JMS> <JMSServer "EnergizerJMSServer", Opening
JDBC store tables "JMSStore
" and "JMSState" using connection pool "JMSConnectionPool".>
<Oct 1, 2002 8:29:20 AM EDT> <Alert> <JMS> <JMSServer "EnergizerJMSServer", store
failed to open, java.io.IOEx
ception: JMS JDBC store, connection pool = <JMSConnectionPool>, prefix = <null>:
recover
java.sql.SQLException: [Microsoft][SQLServer 2000 Driver for JDBC]ResultSet can
not re-read row data for colum
n 1.
at com.microsoft.jdbc.base.BaseResultSet.getLong(Unknown Source)
at com.microsoft.jdbc.base.BaseResultSet.getLong(Unknown Source)
at weblogic.jdbc.pool.ResultSet.getLong(ResultSet.java:304)
at weblogic.jms.store.JDBCIOStream.doRecover(JDBCIOStream.java:618)
at weblogic.jms.store.JDBCIOStream.recover(JDBCIOStream.java:728)
at weblogic.jms.store.JMSStore.recover(JMSStore.java:112)
at weblogic.jms.backend.BEStore.open(BEStore.java:179)
at weblogic.jms.backend.BackEnd.initialize(BackEnd.java:330)
at weblogic.jms.JMSService.createBackEnd(JMSService.java:923)
at weblogic.jms.JMSService.addJMSServer(JMSService.java:1277)
at weblogic.jms.JMSService.addDeployment(JMSService.java:1174)
at weblogic.management.mbeans.custom.DeploymentTarget.addDeployment(DeploymentTarget.java:329)
at weblogic.management.mbeans.custom.DeploymentTarget.addDeployments(DeploymentTarget.java:279)
at weblogic.management.mbeans.custom.DeploymentTarget.updateServerDeployments(DeploymentTarget.java:23
3)
at weblogic.management.mbeans.custom.DeploymentTarget.updateDeployments(DeploymentTarget.java:193)
at java.lang.reflect.Method.invoke(Native Method)
at weblogic.management.internal.DynamicMBeanImpl.invokeLocally(DynamicMBeanImpl.java:608)
at weblogic.management.internal.DynamicMBeanImpl.invoke(DynamicMBeanImpl.java:592)
at weblogic.management.internal.ConfigurationMBeanImpl.invoke(ConfigurationMBeanImpl.java:352)
at com.sun.management.jmx.MBeanServerImpl.invoke(MBeanServerImpl.java:1555)
at com.sun.management.jmx.MBeanServerImpl.invoke(MBeanServerImpl.java:1523)
at weblogic.management.internal.MBeanProxy.invoke(MBeanProxy.java:449)
at weblogic.management.internal.MBeanProxy.invoke(MBeanProxy.java:190)
at $Proxy40.updateDeployments(Unknown Source)
at weblogic.management.configuration.ServerMBean_CachingStub.updateDeployments(ServerMBean_CachingStub
.java:2734)
at weblogic.management.mbeans.custom.ApplicationManager.startConfigManager(ApplicationManager.java:362
at weblogic.management.mbeans.custom.ApplicationManager.start(ApplicationManager.java:154)
at java.lang.reflect.Method.invoke(Native Method)
at weblogic.management.internal.DynamicMBeanImpl.invokeLocally(DynamicMBeanImpl.java:608)
at weblogic.management.internal.DynamicMBeanImpl.invoke(DynamicMBeanImpl.java:592)
at weblogic.management.internal.ConfigurationMBeanImpl.invoke(ConfigurationMBeanImpl.java:352)
at com.sun.management.jmx.MBeanServerImpl.invoke(MBeanServerImpl.java:1555)
at com.sun.management.jmx.MBeanServerImpl.invoke(MBeanServerImpl.java:1523)
at weblogic.management.internal.MBeanProxy.invoke(MBeanProxy.java:449)
at weblogic.management.internal.MBeanProxy.invoke(MBeanProxy.java:190)
at $Proxy57.start(Unknown Source)
at weblogic.management.configuration.ApplicationManagerMBean_CachingStub.start(ApplicationManagerMBean
_CachingStub.java:480)
at weblogic.management.Admin.startApplicationManager(Admin.java:1151)
at weblogic.management.Admin.finish(Admin.java:571)
at weblogic.t3.srvr.T3Srvr.start(T3Srvr.java:508)
at weblogic.t3.srvr.T3Srvr.run(T3Srvr.java:203)
at weblogic.Server.main(Server.java:35)
Tom,
thanks for the info, I'll bring this to support.
I did try the weblogic jDriver for SQL Server and it works fine, so i think it
must be the way JMS is interacting with the MS driver.
here are my components:
WLS 6.1sp1
Microsoft® SQL Server™ 2000 Driver for JDBC™ is a (Type 4 JDBC) which provides
partial JDBC 2 support (no blobs, clobs, etc)
MS SQL Server 2000 (sp2?)
thanks!
Jay Houghton
[email protected]
Tom Barnes <[email protected]> wrote:
>Hi Jay,
>
>This is not a known issue at BEA as far as I know, perhaps it is the
>result
>of a new driver/database combination. Try using a different driver,
>or a different
>version of the current driver. Meanwhile, use a file store (just as
>reliable but faster) and log a case with customer support, including
>information on your version, service-pack, and what driver you are using.
>
>Tom, BEA
>
>Jay Houghton wrote:
>
>> Greetings,
>>
>> I'm using the Microsoft SQL Server JDBC driver with WLS with JMS
>> persisted to SQL Server, during WLS startup the JMS attempts to
>> read the JMSStore and JMSState tables in the db, if they are
>> already present (say, from a previous run) the driver kicks out:
>>
>> java.sql.SQLException: [Microsoft][SQLServer 2000 Driver for JDBC]ResultSet
>can
>> not re-read row data for column 1.
>>
>> If the tables are not present, then WLS creates them and
>> everything proceeds fine. Now, its not a good thing to attempt
>> to reread row data for a ResultSet, especially for portability. Why
>is WLS JMS
>> doing this? is there some config I can use to adjust JMS startup behavior
>for
>> persisted JMS stores?
>>
>> Jay Houghton
>> Centiv
>> [email protected]
>>
>> long exception trace follows:
>>
>> <Oct 1, 2002 8:29:11 AM EDT> <Info> <JMS> <User connection factory
>"BroadcastTopicFactory"
>> is started.>
>> <Oct 1, 2002 8:29:18 AM EDT> <Info> <JMS> <JMSServer "EnergizerJMSServer",
>Opening
>> JDBC store tables "JMSStore
>> " and "JMSState" using connection pool "JMSConnectionPool".>
>> <Oct 1, 2002 8:29:20 AM EDT> <Alert> <JMS> <JMSServer "EnergizerJMSServer",
>store
>> failed to open, java.io.IOEx
>> ception: JMS JDBC store, connection pool = <JMSConnectionPool>, prefix
>= <null>:
>> recover
>> java.sql.SQLException: [Microsoft][SQLServer 2000 Driver for JDBC]ResultSet
>can
>> not re-read row data for colum
>> n 1.
>> at com.microsoft.jdbc.base.BaseResultSet.getLong(Unknown Source)
>> at com.microsoft.jdbc.base.BaseResultSet.getLong(Unknown Source)
>> at weblogic.jdbc.pool.ResultSet.getLong(ResultSet.java:304)
>> at weblogic.jms.store.JDBCIOStream.doRecover(JDBCIOStream.java:618)
>> at weblogic.jms.store.JDBCIOStream.recover(JDBCIOStream.java:728)
>> at weblogic.jms.store.JMSStore.recover(JMSStore.java:112)
>> at weblogic.jms.backend.BEStore.open(BEStore.java:179)
>> at weblogic.jms.backend.BackEnd.initialize(BackEnd.java:330)
>> at weblogic.jms.JMSService.createBackEnd(JMSService.java:923)
>> at weblogic.jms.JMSService.addJMSServer(JMSService.java:1277)
>> at weblogic.jms.JMSService.addDeployment(JMSService.java:1174)
>> at weblogic.management.mbeans.custom.DeploymentTarget.addDeployment(DeploymentTarget.java:329)
>> at weblogic.management.mbeans.custom.DeploymentTarget.addDeployments(DeploymentTarget.java:279)
>> at weblogic.management.mbeans.custom.DeploymentTarget.updateServerDeployments(DeploymentTarget.java:23
>> 3)
>> at weblogic.management.mbeans.custom.DeploymentTarget.updateDeployments(DeploymentTarget.java:193)
>> at java.lang.reflect.Method.invoke(Native Method)
>> at weblogic.management.internal.DynamicMBeanImpl.invokeLocally(DynamicMBeanImpl.java:608)
>> at weblogic.management.internal.DynamicMBeanImpl.invoke(DynamicMBeanImpl.java:592)
>> at weblogic.management.internal.ConfigurationMBeanImpl.invoke(ConfigurationMBeanImpl.java:352)
>> at com.sun.management.jmx.MBeanServerImpl.invoke(MBeanServerImpl.java:1555)
>> at com.sun.management.jmx.MBeanServerImpl.invoke(MBeanServerImpl.java:1523)
>> at weblogic.management.internal.MBeanProxy.invoke(MBeanProxy.java:449)
>> at weblogic.management.internal.MBeanProxy.invoke(MBeanProxy.java:190)
>> at $Proxy40.updateDeployments(Unknown Source)
>> at weblogic.management.configuration.ServerMBean_CachingStub.updateDeployments(ServerMBean_CachingStub
>> java:2734)
>> at weblogic.management.mbeans.custom.ApplicationManager.startConfigManager(ApplicationManager.java:362
>> )
>> at weblogic.management.mbeans.custom.ApplicationManager.start(ApplicationManager.java:154)
>> at java.lang.reflect.Method.invoke(Native Method)
>> at weblogic.management.internal.DynamicMBeanImpl.invokeLocally(DynamicMBeanImpl.java:608)
>> at weblogic.management.internal.DynamicMBeanImpl.invoke(DynamicMBeanImpl.java:592)
>> at weblogic.management.internal.ConfigurationMBeanImpl.invoke(ConfigurationMBeanImpl.java:352)
>> at com.sun.management.jmx.MBeanServerImpl.invoke(MBeanServerImpl.java:1555)
>> at com.sun.management.jmx.MBeanServerImpl.invoke(MBeanServerImpl.java:1523)
>> at weblogic.management.internal.MBeanProxy.invoke(MBeanProxy.java:449)
>> at weblogic.management.internal.MBeanProxy.invoke(MBeanProxy.java:190)
>> at $Proxy57.start(Unknown Source)
>> at weblogic.management.configuration.ApplicationManagerMBean_CachingStub.start(ApplicationManagerMBean
>> _CachingStub.java:480)
>> at weblogic.management.Admin.startApplicationManager(Admin.java:1151)
>> at weblogic.management.Admin.finish(Admin.java:571)
>> at weblogic.t3.srvr.T3Srvr.start(T3Srvr.java:508)
>> at weblogic.t3.srvr.T3Srvr.run(T3Srvr.java:203)
>> at weblogic.Server.main(Server.java:35)
>
-
package com.tpc.jms.simpleProducer;
import javax.jms.*;
import javax.naming.*;
import java.util.Hashtable;
import java.util.Properties;
public class SimpleJMSTest {
public static final String PROVIDER_URL = "jms://localhost:7676";
public static final String CONTEXT_FAC = "com.sun.jndi.cosnaming.CNCtxFactory";
public static void main (String argv[]) {
try {
Properties properties = new Properties();
properties.put(Context.PROVIDER_URL, PROVIDER_URL);
properties.put(Context.INITIAL_CONTEXT_FACTORY, CONTEXT_FAC);
properties.put(Context.SECURITY_PRINCIPAL, "guest");
properties.put(Context.SECURITY_CREDENTIALS, "guest");
InitialContext initialCtx = new InitialContext(properties);
System.out.println("Good!");
//TopicConnectionFactory topicConnFactory = (TopicConnectionFactory) initialCtx.lookup (fac);
//Topic nasdaqTopic = (Topic)initialCtx.lookup(topic);
/* System.out.println("Creating topic connection");
TopicConnection topicConnection = topicConnFactory.createTopicConnection();
topicConnection.start ();
System.out.println("Creating topic session: not transacted, auto ack");
TopicSession topicSession = topicConnection.createTopicSession(false, Session.AUTO_ACKNOWLEDGE);
System.out.println("Creating topic, subscriber");
TopicSubscriber nasdaqTopicSubscriber = topicSession.createSubscriber (nasdaqTopic);
System.out.println ("Ready to subscribe for messages :");
nasdaqTopicSubscriber.setMessageListener(new SubscriberListener());*/
catch (Exception e) {
e.printStackTrace ();
This gives me an exception:
javax.naming.ConfigurationException: Invalid URL: mq:localhost:7676 [Root exception is java.net.MalformedURLException: unknown protocol: mq]
What is the protocol? I've tried http, mq, jms, mqtcp (I know its running on a TCP port).
What is going on here?the protocol depends on ur jms vendor..say for weblogic they use t3..try uisng "iiop" btw..whats ur server?
-
Hi,
Weblogic throws the following exception when the JMS Server do not return messages.
Any idea,the Weblogic server do not shutdown, but it increases the Queue Length
Thanks in avance
weblogic.utils.AssertionError: ***** ASSERTION FAILED *****[ Unexpected IOException
marshalling on server-side ]
Start server side stack trace:
weblogic.utils.AssertionError: ***** ASSERTION FAILED *****[ Unexpected IOException
marshalling on server-side ]
at weblogic.rmi.internal.OutboundServerResponse.sendThrowable(OutboundServerResponse.java:64)
at weblogic.rmi.internal.BasicServerRef.handleThrowable(BasicServerRef.java(Compiled
Code))
at weblogic.rmi.internal.BasicServerRef.postInvoke(BasicServerRef.java(Compiled
Code))
at weblogic.rmi.internal.BasicServerRef.handleRequest(BasicServerRef.java(Compiled
Code))
at weblogic.rmi.internal.BasicServerRef.dispatch(BasicServerRef.java(Compiled
Code))
at weblogic.rmi.internal.ServerRequest.sendOneWayRaw(ServerRequest.java(Compiled
Code))
at weblogic.rmi.internal.ServerRequest.sendReceive(ServerRequest.java(Compiled
Code))
at weblogic.rmi.cluster.ReplicaAwareRemoteRef.invoke(ReplicaAwareRemoteRef.java(Compiled
Code))
at weblogic.rmi.cluster.ReplicaAwareRemoteRef.invoke(ReplicaAwareRemoteRef.java(Compiled
Code))
at weblogic.rmi.internal.ProxyStub.invoke(ProxyStub.java(Compiled Code))
at $Proxy168.sendMessage(Unknown Source)
at com.cajarural.transactionmanager.XMLJMS.process(XMLJMS.java(Compiled Code))
at multicanal.negocio.ruralvia.pasivo.PasivoEJB.pasConMovs(PasivoEJB.java(Compiled
Code))
at multicanal.negocio.ruralvia.pasivo.PasivoEJB_d9s8ki_EOImpl.pasConMovs(PasivoEJB_d9s8ki_EOImpl.java(Compiled
Code))
at java.lang.reflect.Method.invoke(Native Method)
at multicanal.servlet.ServletDirector.performTask(ServletDirector.java(Compiled
Code))
at multicanal.servlet.ServletDirector.doPost(ServletDirector.java(Compiled Code))
at javax.servlet.http.HttpServlet.service(HttpServlet.java(Compiled Code))
at javax.servlet.http.HttpServlet.service(HttpServlet.java(Compiled Code))
at weblogic.servlet.internal.ServletStubImpl.invokeServlet(ServletStubImpl.java(Compiled
Code))
at weblogic.servlet.internal.WebAppServletContext.invokeServlet(WebAppServletContext.java(Compiled
Code))
at weblogic.servlet.internal.WebAppServletContext.invokeServlet(WebAppServletContext.java(Compiled
Code))
at weblogic.servlet.internal.ServletRequestImpl.execute(ServletRequestImpl.java(Compiled
Code))
at weblogic.kernel.ExecuteThread.execute(ExecuteThread.java(Compiled Code))
at weblogic.kernel.ExecuteThread.run(ExecuteThread.java:120)
End server side stack trace
--------------- nested within: ------------------
weblogic.rmi.extensions.RemoteRuntimeException - with nested exception:
[weblogic.utils.AssertionError: ***** ASSERTION FAILED *****[ Unexpected IOException
marshalling on server-side ]
There is no JMS in the stack trace. Perhaps this is an RMI or EJB
invoke? Try the weblogic.developer.interest.rmi newsgroup. Try putting
trace code in your "sendMessage(" method to see if it is getting called
on the server, and see what it is attempting to return.
Tom
barbyware wrote:
> Hi,
>
> Weblogic throws the following exception when the JMS Server do not return messages.
>
> Any idea,the Weblogic server do not shutdown, but it increases the Queue Length
>
> Thanks in avance
>
>
>
> weblogic.utils.AssertionError: ***** ASSERTION FAILED *****[ Unexpected IOException
> marshalling on server-side ]
>
> Start server side stack trace:
> weblogic.utils.AssertionError: ***** ASSERTION FAILED *****[ Unexpected IOException
> marshalling on server-side ]
> at weblogic.rmi.internal.OutboundServerResponse.sendThrowable(OutboundServerResponse.java:64)
> at weblogic.rmi.internal.BasicServerRef.handleThrowable(BasicServerRef.java(Compiled
> Code))
> at weblogic.rmi.internal.BasicServerRef.postInvoke(BasicServerRef.java(Compiled
> Code))
> at weblogic.rmi.internal.BasicServerRef.handleRequest(BasicServerRef.java(Compiled
> Code))
> at weblogic.rmi.internal.BasicServerRef.dispatch(BasicServerRef.java(Compiled
> Code))
> at weblogic.rmi.internal.ServerRequest.sendOneWayRaw(ServerRequest.java(Compiled
> Code))
> at weblogic.rmi.internal.ServerRequest.sendReceive(ServerRequest.java(Compiled
> Code))
> at weblogic.rmi.cluster.ReplicaAwareRemoteRef.invoke(ReplicaAwareRemoteRef.java(Compiled
> Code))
> at weblogic.rmi.cluster.ReplicaAwareRemoteRef.invoke(ReplicaAwareRemoteRef.java(Compiled
> Code))
> at weblogic.rmi.internal.ProxyStub.invoke(ProxyStub.java(Compiled Code))
> at $Proxy168.sendMessage(Unknown Source)
> at com.cajarural.transactionmanager.XMLJMS.process(XMLJMS.java(Compiled Code))
> at multicanal.negocio.ruralvia.pasivo.PasivoEJB.pasConMovs(PasivoEJB.java(Compiled
> Code))
> at multicanal.negocio.ruralvia.pasivo.PasivoEJB_d9s8ki_EOImpl.pasConMovs(PasivoEJB_d9s8ki_EOImpl.java(Compiled
> Code))
> at java.lang.reflect.Method.invoke(Native Method)
> at multicanal.servlet.ServletDirector.performTask(ServletDirector.java(Compiled
> Code))
> at multicanal.servlet.ServletDirector.doPost(ServletDirector.java(Compiled Code))
> at javax.servlet.http.HttpServlet.service(HttpServlet.java(Compiled Code))
> at javax.servlet.http.HttpServlet.service(HttpServlet.java(Compiled Code))
> at weblogic.servlet.internal.ServletStubImpl.invokeServlet(ServletStubImpl.java(Compiled
> Code))
> at weblogic.servlet.internal.WebAppServletContext.invokeServlet(WebAppServletContext.java(Compiled
> Code))
> at weblogic.servlet.internal.WebAppServletContext.invokeServlet(WebAppServletContext.java(Compiled
> Code))
> at weblogic.servlet.internal.ServletRequestImpl.execute(ServletRequestImpl.java(Compiled
> Code))
> at weblogic.kernel.ExecuteThread.execute(ExecuteThread.java(Compiled Code))
> at weblogic.kernel.ExecuteThread.run(ExecuteThread.java:120)
> End server side stack trace
>
> --------------- nested within: ------------------
> weblogic.rmi.extensions.RemoteRuntimeException - with nested exception:
> [weblogic.utils.AssertionError: ***** ASSERTION FAILED *****[ Unexpected IOException
> marshalling on server-side ]
>
-
when I run the example in
OracleHome/RDBMS/demo/aqjmsdemo01.java
the exception throws
Successfully created TopicSession
Creating Input Queue Table...
Creating Topic input_queue...
Successfully setup Topic
Get the Topic...
Creating Topic Subscribers...
Error in performJmsOperations: oracle.jms.AQjmsException: sxIW: oracle-character-set-852
End of Demo
Why ? who can tell me!!!
nullPlease send me the information on the specific doc with the issue and what was wrong with it ... I will forward it to the author and get it fixed.
Thank you.
You can email me (remove spaces) at damorgan12c @ gmail.com. -
HELP - Another simple JMS Problem
I'm getting:
JNDI API lookup failed: javax.naming.NameNotFoundException [Root exception is org.omg.CosNaming.NamingContextPackage.NotFound: IDL:omg.org/CosNaming/NamingContext/NotFound:1.0]
javax.naming.NameNotFoundException [Root exception is org.omg.CosNaming.NamingContextPackage.NotFound: IDL:omg.org/CosNaming/NamingContext/NotFound:1.0]
When I try to look up a JMS ConnectionFactory I've defined in Sun App Server. I'm not sure whether the protocol is correct...the documentation says to use "jmsmq" as the protocol, but I get "unsupported protocol" when I try that.
Here is the code:
package com.tpc.jms.simpleProducer;
import javax.jms.*;
import javax.naming.*;
import java.util.Hashtable;
import java.util.Properties;
public class SimpleJMSTest {
public static final String PROVIDER_URL = "iiop://localhost:3700";
public static final String CONTEXT_FAC = "com.sun.jndi.cosnaming.CNCtxFactory";
public static void main (String argv[]) {
try {
Properties properties = new Properties();
properties.put(Context.PROVIDER_URL, PROVIDER_URL);
properties.put(Context.INITIAL_CONTEXT_FACTORY, CONTEXT_FAC);
properties.put(Context.SECURITY_PRINCIPAL, "guest");
properties.put(Context.SECURITY_CREDENTIALS, "guest");
properties.put("server.jms-service.init-timeout-in-seconds", "60");
properties.put("server.jms-service.type", "EMBEDDED");
properties.put("server.jms-service.start-args", "");
properties.put("server.jms-service.default-jms-host", "default_JMS_host");
properties.put("server.jms-service.reconnect-interval-in-seconds",60);
properties.put("server.jms-service.reconnect-attempts", 3);
properties.put("server.jms-service.reconnect-enabled", true);
properties.put("server.jms-service.addresslist-behavior", "random");
properties.put("server.jms-service.addresslist-iterations", 3);
properties.put("server.jms-service.mq-scheme","mq");
properties.put("server.jms-service.mq-service","jms");
properties.put("server.jms-service.property.instance-name", "imqbroker");
properties.put("server.jms-service.property.instance-name-suffix", "");
properties.put("server.jms-service.property.append-version", false);
properties.put("server.jms-service.property.user-name", "admin");
properties.put("server.jms-service.property.password", "admin");
InitialContext initialCtx = new InitialContext(properties);
ConnectionFactory connectionFactory = null;
Destination dest = null;
try {
connectionFactory = (ConnectionFactory) initialCtx.lookup(
"jms/ConnectionFactory");
} catch (Exception e) {
System.out.println("JNDI API lookup failed: " + e.toString());
e.printStackTrace();
System.exit(1);
catch (Exception e) {
e.printStackTrace ();
}why iiop?
-
Message-driven bean problem (re-delivering of JMS msg)
Sorry for crossposting this (already posted in JMS forum), but perhaps someone here (who doesn't read JMS forum) knows the answer to this problem - it's basically a JMS problem, but closely related to EJB:
I browsed through all available docs but found no answer to this question: How can I force the re-delivery of a JMS message to happen in a few minutes instead of immediately?
I use JMS in an EJB container (SonicQ in Borland Enterprise Server 5.0.1) and messages are consumed by a message-driven bean. The problem arises when the bean sets the transaction in which the onMessage() function is called to rollback-only: Then, the message is redelivered immediately again causing an infinte processing loop and 100% CPU load on the machine until the message is finally consumed.
Is it possible to set a timeout for such a "temporarily rejected" message so that it is retries in a few minutes? Would that be a programming issue, or a configuration issue of the container and/or JMS?Hi Chranq,
What you are talkin about is a container configuration thing as far as I can figure out. I may be that your JMS implementation doesn't support it.
/Stig
Maybe you are looking for
-
Can I install os 9 on a MacBook Pro
Hello, I have a MacBook Pro and here are the specs: Born Feb 25th 2011 USED UNIBODY MACBOOK PRO I7/2.7 GHZ 4 GB of RAM 500 GB internal drive Internal SuperDrive Airport Extreme and Bluetooth installed Intel HD Graphics 3000 13in. Glossy Display OS 10
-
Pressing the ENTER key in first tab -- a button in another tab is pressed?
Hi guys, I am facing a problem. I have a tab with 4 different tabs. When I am in the first tab, and trying to change a control's value by pressing the Enter key, it suddently switches to the seconds tab and presses a button there. Any idea how that
-
Wondering if my computer is ok for CS5 Master collection
This is my computer info. (whitch I don't know what everything means) I was wondering if I perched Adobe Creative Suite CS5 Master Collection, would it run properly on this Computer & if not!! what else would I have to add to this computer to run t
-
How can i download itunes software in my laptop for my iphone 3.1.3?
how can i download itunes software in my laptop for my iphone 3.1.3?
-
Hi all, I just purchased a Ipod nano 16GB. I synched around 770 songs last night. I found that if I unchecked some playlists, artists they would disappear from my Ipod nano and I have to go back in and check the box to synch them back in. Is this nor