Kevin,

Inline inside <Jaime></Jaime> tags.

Thanks,
Jaime 

-----Original Message-----
From: Kevin Wang [mailto:[EMAIL PROTECTED]] 
Sent: Tuesday, November 19, 2002 10:19 AM
To: [EMAIL PROTECTED]
Subject: RE: JMS sample can not run


Thanks Jaime and David,

I think I followed the instruction in AxisJMSSample.pdf, and I'm using
the
file-based jndi provider as methioned in the pdf file. Attached you can
find
the bindings file in "JNDIStore" folder. It is fine, isn't it?

<Jaime> 
It does look fine.  I'm not sure why you are experiencing the JNDI
issues.  Perhaps you should try the Sonic vendor adapter.  If we can get
that working then at least we know that the problem is in our JNDI
vendor adapter. Given this information it should be a little easier to
debug on our side
</Jaime>

By the way, can I ask several questions?

1. We need implement request/response, if the message producer and
consumer
locate in different VM, the temporary queue and JMSReplyTo mechnism will
not
work, because the scope of temporary queue is connection, right?

<Jaime>There are two separate issues here.  You are correct in that the
temporary destination mechanism is bound to the connection lifecycle.
Therefore this solution will not work across different connections or
JVMs.  To resolve this issue, we can make modifications to the JMS
transport that allows the client code to explicitly state the reply to
destination as a non-temporary location.  This would allow client code
in the same VM to survive request/response when a connection drops.  

However, this does not resolve the issue of multiple VMs.  To use
multiple VMs, you have to send in one VM (let's call it VM1) and receive
the response in another, VM2.  If you could explicitly set the ReplyTo
as described above, you could send from VM1 with the WAIT_FOR_RESPONSE
flag set to false.  This allows the sender to publish a message to a Q
or topic and continue processing without waiting for a response.  The
server process in VM3 would get the message and invoke the web service.
Upon completion, it sends the message to the replyTo destination that
was explicitly set by the client.  Now here's the problem.  VM2 in this
configuration must be setup to wait for responses to the request sent by
VM1.  From the client side, there exists no API to wait for unsolicited
messages so you are unable to receive the responses.  We are currently
working on this functionality and expect to publish a proposal early
next week.  

There is however a workaround (read as hack) using the current code
base.  You could set up VM2 to be a SimpleJMSListener that receives
messages from the ReplyTo destination you sent in VM1.  Your response
processing code would in effect be another web service running within an
AxisServer.  However, the request message that generated this response
would be unavailable in this configuration.  I am assuming that since
you want to run in separate VMs that the correlation mechanism and
message persistence is externally provided.  

If you want to give this configuration a try and need more information I
would be happy to help.
</Jaime>

2. There is no way to let a servlet receive message in an async way,
correct?

<Jaime>
Do you mean you want a JMS message to be received and dispatched to a
servlet for processing?  Please clarify what you are trying to do in
this use case.  With a little more information we may be able to find a
solution that works out for you.
</Jaime>

Thanks again,
Kevin




-----Original Message-----
From: Jaime Meritt [mailto:[EMAIL PROTECTED]]
Sent: Monday, November 18, 2002 5:24 PM
To: [EMAIL PROTECTED]
Subject: RE: JMS sample can not run


Kevin,

It looks like the Connection Factory you are pulling out of JNDI is not
configured correctly.  Did you follow the steps in the document to setup
your connection factory in the JNDI repository?  Which JNDI
implementation are you using?

Since you are using SonicMQ, another option exists instead of JNDI.  You
can use the SonicMQVendorAdapter to automatically create your connection
factory upon startup as opposed to looking it up from the JNDI
repository.  This gives you the added benefit of zero-administration (no
JNDI setup).  You can try using this mechanism if the JNDI way doesn't
work.  To use the Sonic vendor adapter you need to set the system
property org.apache.axis.components.jms to the fully qualified classname
of the SonicMQVendorAdapter.  Instead of
jndi-connection-factory.properties, you should use
sonic-connection-factory.properties in the sample directory.  Let me
know how this works for you.

Thanks,
Jaime
Sonic Software Corporation

-----Original Message-----
From: Kevin Wang [mailto:[EMAIL PROTECTED]]
Sent: Monday, November 18, 2002 5:09 PM
To: [EMAIL PROTECTED]
Subject: JMS sample can not run

Hi,

I'm new to Axis, now I'm trying to run the JMS sample with SonicMQ.

But I got an exception like this:

C:\xml-axis-10\samples\jms>java samples.jms.JMSTest -c
jndi-connection-factory.p
roperties -d "MyQ" IBM PRGS
Nov 18, 2002 4:57:57 PM org.apache.axis.transport.jms.SimpleJMSListener
<init>
SEVERE: Exception:
java.lang.ClassCastException: javax.naming.Reference
        at
org.apache.axis.components.jms.JNDIVendorAdapter.getConnectionFactory
(JNDIVendorAdapter.java:106)
        at
org.apache.axis.components.jms.JNDIVendorAdapter.getQueueConnectionFa
ctory(JNDIVendorAdapter.java:86)
        at
org.apache.axis.transport.jms.JMSConnectorFactory.createConnector(JMS
ConnectorFactory.java:168)
        at
org.apache.axis.transport.jms.JMSConnectorFactory.createServerConnect
or(JMSConnectorFactory.java:101)
        at
org.apache.axis.transport.jms.SimpleJMSListener.<init>(SimpleJMSListe
ner.java:120)
        at samples.jms.JMSTest.main(JMSTest.java:115)
Exception in thread "main" java.lang.ClassCastException:
javax.naming.Reference
        at
org.apache.axis.components.jms.JNDIVendorAdapter.getConnectionFactory
(JNDIVendorAdapter.java:106)
        at
org.apache.axis.components.jms.JNDIVendorAdapter.getQueueConnectionFa
ctory(JNDIVendorAdapter.java:86)
        at
org.apache.axis.transport.jms.JMSConnectorFactory.createConnector(JMS
ConnectorFactory.java:168)
        at
org.apache.axis.transport.jms.JMSConnectorFactory.createServerConnect
or(JMSConnectorFactory.java:101)
        at
org.apache.axis.transport.jms.SimpleJMSListener.<init>(SimpleJMSListe
ner.java:120)
        at samples.jms.JMSTest.main(JMSTest.java:115)

Can anybody help out?

Thanks in advance.

Kevin




Reply via email to