Hi Jens,
Jens Goldhammer wrote:
Hello Chamikara,
Chamikara Jayalath schrieb:
Hi Jens,
Jens Goldhammer wrote:
Hello wso2 userlist,
It´s my first post here, so I hope my questions are clear and
welcome :-).
After a hard configuration fight with Axis2 and jms, I get a simple
example working where the client put a message on a activemq queue
and the service listens to that queue, puts the message on an other
queue and the client gets the message. (see
http://wso2.org/forum/thread/3111)
There are some open questions I have posted in the axis2 user forum
(http://www.nabble.com/further-questions-to-Axis2-and-JMS-to15241641.html).
Maybe you know the answer, too?
Now I am trying to do this stuff with Axis2 /http/ws-rm. I take the
client from the example with jms. I have followed the configuration
guide shipped with Sandesha2 1.3.
After 20 minutes it is working with http and ws-rm...
I have following ongoing questions:
1. What is happening if I don´t close the sequence by setting
lastMessage in the client? If you look in the attached zip-file,
you can see two log files. The file client_messages.xml shows that
the client tries several times to establish a connection to the
server by sending a makeConnection-message. The server acks this
with a 202-response. What does that mean?
In the second file good_conversation.xml the conversations end by
sending a terminateSequence-message from the client which is
accepted by the server. I think this looks good...
The make connection message tries to grab any message pending in the
server. But in this case there were not any.
Ok, this makes sense in my eyes now.
You have to mark your final message with the LastMessage tag to
terminate the message exchange smoothly.
Yes, I used that too, but I have wondered if there is no other
possiblity?
2. How is the best approach to get a response from the server after
sending it a request and the client terminates after the request
without getting the response. How can I get the pending messages
from the server? Do I have to take the used sequence-ID to make a
conversation with the server? In my eyes it is the same problem like
axis2/jms :-)
This can be done only with a persistent RM storage. We still do not
have a full working one. An experimental one is available at,
https://wso2.org/repos/wso2/trunk/commons/sandesha2-persistence/.
What does experimental imply? Can I get it working? Is there any
documentation online? Does anybody work on it?
Maybe it is very helpful to have it on the wso2 esb. Is there any
control mechanism to say the esb as rm source that the service as rm
destination is online and the esb should get all pending messages of
the service? That would be a great feature in my eyes... The esb than
can handle the messages and wait for another rm source, a service
client, which asks for the pending messages on the esb...
Maybe you can show me a coding example how to get all messages from
the server on client side?
I believe Amila is having a look at this. May be he can comment on the
latest status.
What you have to do is checking out the source I pointed to above and
building it with Maven2. You will get a new Sandesha2 mar with which u
should replace the old Sandesha2 mar file (the module file). Then you
need to add a property to the axis2.xml file.
<parameter name="Sandesha2StorageManager"
locked="false">persistent</parameter>
I don't know much about the internals of the WSO2 ESB though, probably a
person from the ESB team can comment on the exact mechanism to replace
the mar file and to add the property.
3. How is the best approach to generate a sequence-id? At the moment
I have to put it manually in the message by setting the property
because I use a synchronous invocation...
What you specify in the client is not the actual sequence ID. It is
something called a SequenceKey which is used to identify messages
that belong to different sequences. Actual sequenceID get generated
by Sandesha2.
Ok. I know that every sequence has to have a unique identifier. I
think this is the sequenceID. But what is the sequenceKey? Maybe it
marks the first initial identifier value of the rm source request?
In TCPMon-log I only see that the first message with an offer
statement has my set property... the response instead has a new
identifier.
1. request
<wsrm:Offer>
<wsrm:Identifier>test3</wsrm:Identifier>
<wsrm:Endpoint>
<wsa:Address>http://www.w3.org/2005/08/addressing/anonymous</wsa:Address>
</wsrm:Endpoint>
</wsrm:Offer>
1.response
<wsrm:CreateSequenceResponse
xmlns:wsrm="http://docs.oasis-open.org/ws-rx/wsrm/200702">
<wsrm:Identifier>urn:uuid:ED2375C5775467DED01201955723589</wsrm:Identifier>
<wsrm:Accept>
<wsrm:AcksTo>
<wsa:Address>http://192.168.88.1:8180/esbQueueService/services/QueueService</wsa:Address>
</wsrm:AcksTo>
</wsrm:Accept>
</wsrm:CreateSequenceResponse>
Can you tell me the exact way u set the sequenceID in the client ?
Thanks,
Chamikara
Maybe you can give me some links according ws-rm in general. I know
there is the spec- maybe you have a shorter version :-) A video
tutorial would be great...
Hope you went through Sandesha2 architecture and user guides. There
are some stuff in WSO2 Oxygen Tank (wso2.org) as well. No video
tutorials yet though :-(
Ok, thanks for the hints.
Thanks,
Chamikara
Thanks,
Jens
Thanks in advance for your effort.
Jens Goldhammer
------------------------------------------------------------------------
_______________________________________________
Esb-java-user mailing list
[email protected]
http://wso2.org/cgi-bin/mailman/listinfo/esb-java-user
------------------------------------------------------------------------
_______________________________________________
Esb-java-user mailing list
[email protected]
http://wso2.org/cgi-bin/mailman/listinfo/esb-java-user
_______________________________________________
Esb-java-user mailing list
[email protected]
http://wso2.org/cgi-bin/mailman/listinfo/esb-java-user
_______________________________________________
Esb-java-user mailing list
[email protected]
http://wso2.org/cgi-bin/mailman/listinfo/esb-java-user