Hello,
i am new to this list, and i am currently working on my diploma thesis
around web service transactions.
In the meantime i am trying to establish a transactinal communication
between a servlet client on JBoss 4.2.2 with JBoss TS 4.2.3 SP7
correctly installed (all demo applications run) and a simple HelloWorld
web service on a glassfish v2 with wsit 1.1.
When my client servlet invokes the web service, the transaction context
is correctly attached to the soap message, the registration of the
participant fails. Following Exception occurs:
javax.xml.ws.soap.SOAPFaultException: WSTX-AT-0022: Registration with
durable parent failed: ' coordId=urn:-3f574dec:545:489b0928:6a partId:2 '
at
org.jboss.ws.core.jaxws.SOAPFaultHelperJAXWS.getSOAPFaultException(SOAPFaultHelperJAXWS.java:69)
at
org.jboss.ws.core.jaxws.binding.SOAP11BindingJAXWS.throwFaultException(SOAP11BindingJAXWS.java:109)
at
org.jboss.ws.core.CommonSOAPBinding.unbindResponseMessage(CommonSOAPBinding.java:553)
at org.jboss.ws.core.CommonClient.invoke(CommonClient.java:371)
at org.jboss.ws.core.jaxws.client.ClientImpl.invoke(ClientImpl.java:243)
at
org.jboss.ws.core.jaxws.client.ClientProxy.invoke(ClientProxy.java:164)
at
org.jboss.ws.core.jaxws.client.ClientProxy.invoke(ClientProxy.java:150)
at $Proxy82.sayHello(Unknown Source)
at
de.mabu.interop.glassfish.client.ClientServlet.doPost(ClientServlet.java:46)
at
de.mabu.interop.glassfish.client.ClientServlet.doGet(ClientServlet.java:33)
at javax.servlet.http.HttpServlet.service(HttpServlet.java:690)
at javax.servlet.http.HttpServlet.service(HttpServlet.java:803)
at
org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:290)
at
org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:206)
at
org.jboss.web.tomcat.filters.ReplyHeaderFilter.doFilter(ReplyHeaderFilter.java:96)
at
org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:235)
at
org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:206)
at
org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:230)
at
org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:175)
at
org.jboss.web.tomcat.security.SecurityAssociationValve.invoke(SecurityAssociationValve.java:179)
at
org.jboss.web.tomcat.security.JaccContextValve.invoke(JaccContextValve.java:84)
at
org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:127)
at
org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:102)
at
org.jboss.web.tomcat.service.jca.CachedConnectionValve.invoke(CachedConnectionValve.java:157)
at
org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:109)
at
org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:262)
at
org.apache.coyote.http11.Http11Processor.process(Http11Processor.java:844)
at
org.apache.coyote.http11.Http11Protocol$Http11ConnectionHandler.process(Http11Protocol.java:583)
at
org.apache.tomcat.util.net.JIoEndpoint$Worker.run(JIoEndpoint.java:446)
at java.lang.Thread.run(Thread.java:595)
In the upper fault scenario the two application servers are located on
different machines, when i run both on the same machine the behavior is
different but also without success.
In that case the web service is invoked correctly but the commit failed.
If i understand the stack trace the problem is the failing ssl
handshake, but i have never configured such a mechanism.
Following stack trace can be seen in the jboss logfile:
javax.net.ssl.SSLHandshakeException:
sun.security.validator.ValidatorException: PKIX path building failed:
sun.security.provider.certpath.SunCertPathBuilderException: unable to
find valid certification path to requested target
at com.sun.net.ssl.internal.ssl.Alerts.getSSLException(Alerts.java:150)
at
com.sun.net.ssl.internal.ssl.SSLSocketImpl.fatal(SSLSocketImpl.java:1584)
at com.sun.net.ssl.internal.ssl.Handshaker.fatalSE(Handshaker.java:174)
at com.sun.net.ssl.internal.ssl.Handshaker.fatalSE(Handshaker.java:168)
at
com.sun.net.ssl.internal.ssl.ClientHandshaker.serverCertificate(ClientHandshaker.java:848)
at
com.sun.net.ssl.internal.ssl.ClientHandshaker.processMessage(ClientHandshaker.java:106)
at
com.sun.net.ssl.internal.ssl.Handshaker.processLoop(Handshaker.java:495)
at
com.sun.net.ssl.internal.ssl.Handshaker.process_record(Handshaker.java:433)
at
com.sun.net.ssl.internal.ssl.SSLSocketImpl.readRecord(SSLSocketImpl.java:877)
at
com.sun.net.ssl.internal.ssl.SSLSocketImpl.performInitialHandshake(SSLSocketImpl.java:1089)
at
com.sun.net.ssl.internal.ssl.SSLSocketImpl.startHandshake(SSLSocketImpl.java:1116)
at
com.sun.net.ssl.internal.ssl.SSLSocketImpl.startHandshake(SSLSocketImpl.java:1100)
at
sun.net.www.protocol.https.HttpsClient.afterConnect(HttpsClient.java:402)
at
sun.net.www.protocol.https.AbstractDelegateHttpsURLConnection.connect(AbstractDelegateHttpsURLConnection.java:170)
at
sun.net.www.protocol.https.HttpsURLConnectionImpl.connect(HttpsURLConnectionImpl.java:133)
at
com.arjuna.webservices.transport.http.HttpClient.invokeRequest(HttpClient.java:174)
at
com.arjuna.webservices.transport.http.HttpClient.invokeOneWay(HttpClient.java:93)
at
com.arjuna.webservices.wsaddr.client.BaseWSAddrClient.sendOneWay(BaseWSAddrClient.java:125)
at
com.arjuna.webservices.wsat.client.ParticipantClient.sendRollback(ParticipantClient.java:141)
at
com.arjuna.wst.messaging.engines.CoordinatorEngine.sendRollback(CoordinatorEngine.java:576)
at
com.arjuna.wst.messaging.engines.CoordinatorEngine.rollback(CoordinatorEngine.java:403)
at
com.arjuna.wst.stub.ParticipantStub.rollback(ParticipantStub.java:146)
at
com.arjuna.mwlabs.wst.at.participants.DurableTwoPhaseCommitParticipant.cancel(DurableTwoPhaseCommitParticipant.java:158)
at
com.arjuna.mwlabs.wst.at.participants.DurableTwoPhaseCommitParticipant.confirmOnePhase(DurableTwoPhaseCommitParticipant.java:214)
at
com.arjuna.mwlabs.wscf.model.twophase.arjunacore.ParticipantRecord.topLevelOnePhaseCommit(ParticipantRecord.java:492)
at
com.arjuna.ats.arjuna.coordinator.BasicAction.onePhaseCommit(BasicAction.java:2619)
at
com.arjuna.ats.arjuna.coordinator.BasicAction.End(BasicAction.java:1779)
at
com.arjuna.ats.arjuna.coordinator.TwoPhaseCoordinator.end(TwoPhaseCoordinator.java:88)
at
com.arjuna.mwlabs.wscf.model.twophase.arjunacore.CoordinatorControl.complete(CoordinatorControl.java:140)
at
com.arjuna.mwlabs.wscf.model.twophase.arjunacore.TwoPhaseHLSImple.complete(TwoPhaseHLSImple.java:124)
at
com.arjuna.mwlabs.wsas.activity.ActivityImple.end(ActivityImple.java:312)
at
com.arjuna.mwlabs.wsas.UserActivityImple.end(UserActivityImple.java:279)
at
com.arjuna.mwlabs.wscf.model.twophase.arjunacore.CoordinatorServiceImple.confirm(CoordinatorServiceImple.java:160)
at
com.arjuna.mwlabs.wst.at.participants.CompletionCoordinatorImple.commit(CompletionCoordinatorImple.java:64)
at
com.arjuna.wst.messaging.CompletionCoordinatorProcessorImpl.commit(CompletionCoordinatorProcessorImpl.java:112)
at
com.arjuna.webservices.wsat.handlers.CompletionCoordinatorCommitHandler$1.executeTask(CompletionCoordinatorCommitHandler.java:64)
at com.arjuna.services.framework.task.TaskWorker.run(TaskWorker.java:65)
at java.lang.Thread.run(Thread.java:595)
Caused by: sun.security.validator.ValidatorException: PKIX path building
failed: sun.security.provider.certpath.SunCertPathBuilderException:
unable to find valid certification path to requested target
at sun.security.validator.PKIXValidator.doBuild(PKIXValidator.java:221)
at
sun.security.validator.PKIXValidator.engineValidate(PKIXValidator.java:145)
at sun.security.validator.Validator.validate(Validator.java:203)
at
com.sun.net.ssl.internal.ssl.X509TrustManagerImpl.checkServerTrusted(X509TrustManagerImpl.java:172)
at
com.sun.net.ssl.internal.ssl.JsseX509TrustManager.checkServerTrusted(SSLContextImpl.java:320)
at
com.sun.net.ssl.internal.ssl.ClientHandshaker.serverCertificate(ClientHandshaker.java:841)
... 33 more
Caused by: sun.security.provider.certpath.SunCertPathBuilderException:
unable to find valid certification path to requested target
at
sun.security.provider.certpath.SunCertPathBuilder.engineBuild(SunCertPathBuilder.java:236)
at java.security.cert.CertPathBuilder.build(CertPathBuilder.java:194)
at sun.security.validator.PKIXValidator.doBuild(PKIXValidator.java:216)
... 38 more
on the glassfish side only a warning that the transaction registration
could not be established is logged:
[#|2008-08-08T10:03:08.647+0200|WARNING|sun-appserver9.1|javax.enterprise.resource.webservices.jaxws.wstx.wscoord|_ThreadID=22;_ThreadName=httpSSLWorkerThread-1284-0;_RequestID=be323618-14ea-427f-9d43-50ec97c4c136;|WSTX-COORDINATOR-3007:
registration timed out for activity id: 'urn:a003f16:4c5:489bfcb0:6b'
Attempted to register with:
'<?xml version="1.0" encoding="UTF-8"
standalone="yes"?>
<EndpointReference
xmlns="http://schemas.xmlsoap.org/ws/2004/08/addressing">
<Address>http://localhost:8080/xts/soap/RegistrationCoordinator</Address>
<ReferenceParameters>
<wsarj:InstanceIdentifier
xmlns:wsa="http://schemas.xmlsoap.org/ws/2004/08/addressing"
xmlns:wscoor="http://schemas.xmlsoap.org/ws/2004/10/wscoor"
xmlns:wsarj="http://schemas.arjuna.com/ws/2005/10/wsarj">a00...
</ReferenceParameters>
</EndpointReference>'|#]
Does anyone know what i have to do?
Best regards
Matthias