Jochen, my comment in +++> ... <+++ below
-----Ursprüngliche Nachricht----- Von: Jochen Zink [mailto:[EMAIL PROTECTED] Gesendet: Mittwoch, 14. März 2007 12:28 An: [email protected] Betreff: Re: [axis2] session management fails with invalidServiceGroupID Exception I use soapsession scope. I'm sure that every client invokes a creation of a new ServicesClass. I control it with hashcodes of the instances. Every client talks to another instance. A single client talks, every method call to is own Service Instance. The Timeout on the service is set to 30000. After the first method call, the Client waits 40seconds before he calls the next method. +++> Jochen, can you check that the message sent with the 2nd call of client#1 which has timed-out still sends the ServiceGroupId? also we migth talk about similar not exactly equal problems. does your clinet#1 second message look similar like (carry a ServiceGroupID)? - <soapenv:Header> <wsa:To>http://www.w3.org/2005/08/addressing/anonymous</wsa:To> - <wsa:ReplyTo> <wsa:Address>http://www.w3.org/2005/08/addressing/anonymous</wsa:Address> - <wsa:ReferenceParameters> <axis2:ServiceGroupId xmlns:axis2="http://ws.apache.org/namespaces/axis2">urn:uuid:AEDE11BE4497D9478F117316759348254</axis2:ServiceGroupId> </wsa:ReferenceParameters> </wsa:ReplyTo> <wsa:MessageID>urn:uuid:AEDE11BE4497D9478F117316759399760</wsa:MessageID> <wsa:Action>urn:echo</wsa:Action> <wsa:RelatesTo wsa:RelationshipType="http://www.w3.org/2005/08/addressing/reply">urn:uuid:C1D5F6754451BC782111731675939823</wsa:RelatesTo> </soapenv:Header> if a ServiceGroupID is sent to a timed-out service-object in a ServiceGroup your initial fault should show up. if no ServiceGroupId is sent, that would explain why no fault "invalid Service Group ID", is raised. in this case, I would expect that a new ServicegroupID is created and that the old ServiceGroupID is removed and hence destroy() is called on the first service-object. is this the case? And the question to the developers would remain: is this intended behaviour? Josef <+++ The servers log messages are: init [EMAIL PROTECTED] openTransferSession [EMAIL PROTECTED] // Here is the client waiting closetransferSession [EMAIL PROTECTED] last touching Time 40031 As you can see, it is always the same Instance. The strange thing is, if I invoke another client, the service Instance of the first client should be destroyed after the 30 seconds. Example: Client1.firstMethod: Client1.wait: Client2.firstMethod: Know, the destroy Method is invoked Client 2.wait: Client1.secondMethod: java.lang.NullPointerException at org.apache.axis2.context.MessageContext.isHeaderPresent(MessageContext.java:1054) at org.apache.axis2.handlers.addressing.AddressingInHandler.invoke(AddressingInHandler.java:72) at org.apache.axis2.engine.Phase.invoke(Phase.java:382) at org.apache.axis2.engine.AxisEngine.invoke(AxisEngine.java:522) at org.apache.axis2.engine.AxisEngine.receiveFault(AxisEngine.java:600) at org.apache.axis2.description.RobustOutOnlyAxisOperation$RobustOperationClient.send(RobustOutOnlyAxisOperation.java:99) at org.apache.axis2.description.OutInAxisOperationClient.execute(OutInAxisOperation.java:202) at de.nepatec.edocbox.comserver.client.DocumentTransferServiceStub.closeTransferSession(DocumentTransferServiceStub.java:561) at de.nepatec.edocbox.comserver.client.Client.run(Client.java:99) Client2.secondMethod: Works fine, but the TimeOut is expired. A session runs only in timeout, if a other client invokes his own Instance. Do you understnad what I mean?! The log messages on the server wich printent with invoking the above example init [EMAIL PROTECTED] openTransferSession [EMAIL PROTECTED] destroy [EMAIL PROTECTED] init [EMAIL PROTECTED] openTransferSession [EMAIL PROTECTED] transferDocument [EMAIL PROTECTED] closetransferSession [EMAIL PROTECTED] last touching Time 50016 +++> Yes, I have seen the same sequence, destroy() before init() but on two different service-objects, in case you reset the axis2 value to 30 then you have nearly constant a time-out condition, as explained by rob, which made my client#n fail as soon as client#n+1 was starting. Since axis2.xml raised this value to 30000 this my problem is gone, and perhaps similra problems too. Josef <+++ The Client Code is like this: ConfigurationContext ctx = ConfigurationContextFactory.createConfigurationContextFromFileSystem("repos", "repos/conf/axis2.xml"); DocumentTransferServiceStub serviceStub = new DocumentTransferServiceStub( ctx, "http://localhost:8080/comchannel/services/DocumentTransferService"); serviceStub._getServiceClient().getOptions().setManageSession(true); serviceStub._getServiceClient().getOptions().setProperty(Constants.Configuration.ENABLE_MTOM, Constants.VALUE_TRUE); serviceStub._getServiceClient().getOptions().setTimeOutInMilliSeconds(100000); DocumentTransferServiceStub.OpenTransferSession open = new DocumentTransferServiceStub.OpenTransferSession(); // ... some stuff // call first method serviceStub.openTransferSession(open); // wait 40 seconds Thread.sleep(40000); // call next Method serviceStub.closeTransferSession(); Thanks! > -----Ursprüngliche Nachricht----- > Von: [email protected] > Gesendet: 14.03.07 11:32:46 > An: <[email protected]> > Betreff: AW: [axis2] session management fails with invalidServiceGroupID > Exception > Jochen > > **** BTW - what scope= are you using? The original problem I had was with > scope=soapsession only. > > with scope=application your talking to only one instance of your > service-class and not to a statefull-objects. > > > > The problem with the invalidServiceGroupeContextID is because after timeout > the ID is no longer valid! > > client-threads calling afterr timeoutn with the same previous used > sender-handle will because they send the wrong timed out ID > client-threads calling with a fresh sender-handle will not fail because the > do not pass an ID but receive one in the reply-message > > > > Regarding Instances of Service Classes (also called statefull-Objects, > objects are instances of a class) be sure that you can cleanly > tell a) when you talk to different instances of a service-object (instance of > a service-class) or b) when you talk to the same instance of a service-object > (singelton). > > Sometimes just a matter of having certain variables defined as static, and > since variables in jave defined static are shared among objects! > > I was once running into the same trap. Be aware that you know the real > instance your talking to, maybe identify each object by unique hash value or > UUID. > > Josef > > > > > -----Ursprüngliche Nachricht----- > Von: Jochen Zink [mailto:[EMAIL PROTECTED] > Gesendet: Mittwoch, 14. März 2007 10:40 > An: [email protected] > Betreff: Re: [axis2] session management fails with invalidServiceGroupID > Exception > > > A big Thank you!!!! I don't believe it... in axis2.xml the > ConfigContextTimeout are milliseconds and not seconds like the comment tells. > > But... there is another thing, which I don't understand. > > Know, the ConfigContextTimeout Parameter has the value 30000 (30seconds). > > My client invokes the login method, sleeps 60000 milliseconds (1min) and > after this wait period, it invokes a second method. It works... but why?! > Normally I think, the session run into a timeout. The client has not touch > the service over a minute and can successfully call a method. ... > > Thanks! > > > > > -----Ursprüngliche Nachricht----- > > Von: [email protected] > > Gesendet: 14.03.07 10:19:22 > > An: <[email protected]> > > Betreff: AW: [axis2] session management fails with invalidServiceGroupID > > Exception > > > > Hi Jochen, > > > > Maybe you have the same problem then I had. > > For that I have had logged a JIRA and meanwhile it' sfixed. Look at > > > > > > [ > > https://issues.apache.org/jira/browse/AXIS2-1991?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel > > ] > > > > > > and more in the e-mail thread at > > > > http://marc.theaimsgroup.com/?l=axis-user&m=117316427720305&w=2 > > > > > > I hope for you that it is that easy to fix your problem. > > > > Regards > > Josef > > > > > > > > -----Ursprüngliche Nachricht----- > > Von: Jochen Zink [mailto:[EMAIL PROTECTED] > > Gesendet: Mittwoch, 14. März 2007 10:01 > > An: [email protected] > > Betreff: [axis2] session management fails with invalidServiceGroupID > > Exception > > > > > > Hello at all, > > > > I have a session based Webservice with three Methods. A client has 2 > > threads with 2 different clients, which use the webservice. Only the second > > client can invoke more than the first method of the service. > > > > Example: > > Client 1 invoke Method login -> everything okay. > > Client 2 invole Method login -> invoking works fine BUT on the service > > class, that is created by the call of client 1, the destroy method is called > > > > Client 1 invokes method transfer -> The following exception is thrown on > > client side: > > org.apache.axis2.AxisFault: Invalid Service Group Id > > urn:uuid:4489A6CEFA71AF964F1173862161488 > > at > > org.apache.axis2.description.OutInAxisOperationClient.send(OutInAxisOperation.java:271) > > at > > org.apache.axis2.description.OutInAxisOperationClient.execute(OutInAxisOperation.java:202) > > at > > de.nepatec.edocbox.comserver.client.DocumentTransferServiceStub.transferDocument(DocumentTransferServiceStub.java:212) > > at de.nepatec.edocbox.comserver.client.Client.run(Client.java:84) > > > > Client 2 invokes Method transfer -> everything okay > > > > > > It seems that only the last instance of the service class is alive. > > > > The service is correct state full. With only one client, all member > > attributes are available over all method calls. > > > > Here is the services.xml: > > <service name="DocumentTransferService" scope="soapsession"> > > > > <parameter name="enableMTOM" locked="false">true</parameter> > > > > > > <!-- Message Receivers --> > > > > <parameter locked="false" name="ServiceClass"> > > > > de.nepatec.edocbox.comserver.comchannel.serviceimpl.DocumentTransferServiceSkeleton > > </parameter> > > > > <!-- Operations --> > > > > > > </service> > > </serviceGroup> > > > > In the servers axis2.xml addressing module is engaged. > > > > On client side the Sessionmanagement is enabled: > > serviceStub._getServiceClient().getOptions().setManageSession(true); > > > > > > > > I found the same problem in the mailinglist ( > > http://marc.theaimsgroup.com/?t=116282349800006&r=1&w=2) but without a > > solution. > > > > Is this a axis2 Bug or did I something wrong? What can I do, to have a > > session based webservice that can handle mutltiple clients? > > > > Thanks for all! > > > > > > > > _______________________________________________________________________ > > Viren-Scan für Ihren PC! Jetzt für jeden. Sofort, online und kostenlos. > > Gleich testen! http://www.pc-sicherheit.web.de/freescan/?mc=022222 > > > > > > --------------------------------------------------------------------- > > To unsubscribe, e-mail: [EMAIL PROTECTED] > > For additional commands, e-mail: [EMAIL PROTECTED] > > > > > > --------------------------------------------------------------------- > > To unsubscribe, e-mail: [EMAIL PROTECTED] > > For additional commands, e-mail: [EMAIL PROTECTED] > > > > > > > _________________________________________________________________________ > In 5 Schritten zur eigenen Homepage. Jetzt Domain sichern und gestalten! > Nur 3,99 EUR/Monat! http://www.maildomain.web.de/?mc=021114 > > > --------------------------------------------------------------------- > To unsubscribe, e-mail: [EMAIL PROTECTED] > For additional commands, e-mail: [EMAIL PROTECTED] > > > --------------------------------------------------------------------- > To unsubscribe, e-mail: [EMAIL PROTECTED] > For additional commands, e-mail: [EMAIL PROTECTED] > > _______________________________________________________________________ Viren-Scan für Ihren PC! Jetzt für jeden. Sofort, online und kostenlos. Gleich testen! http://www.pc-sicherheit.web.de/freescan/?mc=022222 --------------------------------------------------------------------- To unsubscribe, e-mail: [EMAIL PROTECTED] For additional commands, e-mail: [EMAIL PROTECTED] --------------------------------------------------------------------- To unsubscribe, e-mail: [EMAIL PROTECTED] For additional commands, e-mail: [EMAIL PROTECTED]
