]
Paul Robinson commented on JBTM-937:
------------------------------------
We shouldn't use @HandlerChain on a generated client SEI:
I've fixed the Bistro demo to add the client side handler chain through the binding
provider and removed the @HandlerChain annotation from the Restaurant SEI.
TxBridge demo app fails with ServiceConstructionException: Could not
find portType named {http://client.demo.txbridge.jbossts.jboss.org/}Restaurant when run
with JTA parent tx option
--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
Key: JBTM-937
URL:
https://issues.jboss.org/browse/JBTM-937
Project: JBoss Transaction Manager
Issue Type: Bug
Security Level: Public(Everyone can see)
Components: Demonstrator, TxBridge
Affects Versions: 4.15.3
Reporter: Ivo Studensky
Assignee: Paul Robinson
Fix For: 4.15.4
With the latest AS7 (7.1.0.Alpha2-SNAPSHOT) the txbridge demo app fails due
'ServiceConstructionException: Could not find portType named
{http://client.demo.txbridge.jbossts.jboss.org/}Restaurant' when run with JTA parent
tx option. See the stacktrace:
{noformat}
12:22:32,368 INFO [stdout] (http-thinkpax.localdomain-127.0.0.1-8080-1)
javax.xml.ws.WebServiceException:
org.apache.cxf.service.factory.ServiceConstructionException: Could not find portType named
{http://client.demo.txbridge.jbossts.jboss.org/}Restaurant
12:22:32,368 INFO [stdout] (http-thinkpax.localdomain-127.0.0.1-8080-1) at
org.apache.cxf.jaxws.ServiceImpl.getPort(ServiceImpl.java:313)
12:22:32,369 INFO [stdout] (http-thinkpax.localdomain-127.0.0.1-8080-1) at
org.apache.cxf.jaxws.ServiceImpl.getPort(ServiceImpl.java:306)
12:22:32,369 INFO [stdout] (http-thinkpax.localdomain-127.0.0.1-8080-1) at
javax.xml.ws.Service.getPort(Service.java:168)
12:22:32,369 INFO [stdout] (http-thinkpax.localdomain-127.0.0.1-8080-1) at
org.jboss.jbossts.txbridge.demo.client.BasicClient.testJTATransaction(BasicClient.java:221)
12:22:32,369 INFO [stdout] (http-thinkpax.localdomain-127.0.0.1-8080-1) at
org.jboss.jbossts.txbridge.demo.client.BasicClient.doGet(BasicClient.java:122)
12:22:32,369 INFO [stdout] (http-thinkpax.localdomain-127.0.0.1-8080-1) at
javax.servlet.http.HttpServlet.service(HttpServlet.java:734)
12:22:32,369 INFO [stdout] (http-thinkpax.localdomain-127.0.0.1-8080-1) at
javax.servlet.http.HttpServlet.service(HttpServlet.java:847)
12:22:32,369 INFO [stdout] (http-thinkpax.localdomain-127.0.0.1-8080-1) at
org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:329)
12:22:32,370 INFO [stdout] (http-thinkpax.localdomain-127.0.0.1-8080-1) at
org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:248)
12:22:32,370 INFO [stdout] (http-thinkpax.localdomain-127.0.0.1-8080-1) at
org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:275)
12:22:32,370 INFO [stdout] (http-thinkpax.localdomain-127.0.0.1-8080-1) at
org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:161)
12:22:32,370 INFO [stdout] (http-thinkpax.localdomain-127.0.0.1-8080-1) at
org.jboss.as.web.security.SecurityContextAssociationValve.invoke(SecurityContextAssociationValve.java:155)
12:22:32,370 INFO [stdout] (http-thinkpax.localdomain-127.0.0.1-8080-1) at
org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:155)
12:22:32,370 INFO [stdout] (http-thinkpax.localdomain-127.0.0.1-8080-1) at
org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:102)
12:22:32,370 INFO [stdout] (http-thinkpax.localdomain-127.0.0.1-8080-1) at
org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:109)
12:22:32,371 INFO [stdout] (http-thinkpax.localdomain-127.0.0.1-8080-1) at
org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:362)
12:22:32,371 INFO [stdout] (http-thinkpax.localdomain-127.0.0.1-8080-1) at
org.apache.coyote.http11.Http11Processor.process(Http11Processor.java:877)
12:22:32,371 INFO [stdout] (http-thinkpax.localdomain-127.0.0.1-8080-1) at
org.apache.coyote.http11.Http11Protocol$Http11ConnectionHandler.process(Http11Protocol.java:670)
12:22:32,371 INFO [stdout] (http-thinkpax.localdomain-127.0.0.1-8080-1) at
org.apache.tomcat.util.net.JIoEndpoint$Worker.run(JIoEndpoint.java:952)
12:22:32,371 INFO [stdout] (http-thinkpax.localdomain-127.0.0.1-8080-1) at
java.lang.Thread.run(Thread.java:662)
12:22:32,371 INFO [stdout] (http-thinkpax.localdomain-127.0.0.1-8080-1) Caused by:
org.apache.cxf.service.factory.ServiceConstructionException: Could not find portType named
{http://client.demo.txbridge.jbossts.jboss.org/}Restaurant
12:22:32,372 INFO [stdout] (http-thinkpax.localdomain-127.0.0.1-8080-1) at
org.apache.cxf.service.factory.ReflectionServiceFactoryBean.getInterfaceInfo(ReflectionServiceFactoryBean.java:611)
12:22:32,372 INFO [stdout] (http-thinkpax.localdomain-127.0.0.1-8080-1) at
org.apache.cxf.service.factory.ReflectionServiceFactoryBean.initializeWSDLOperations(ReflectionServiceFactoryBean.java:619)
12:22:32,372 INFO [stdout] (http-thinkpax.localdomain-127.0.0.1-8080-1) at
org.apache.cxf.jaxws.support.JaxWsServiceFactoryBean.initializeWSDLOperations(JaxWsServiceFactoryBean.java:289)
12:22:32,372 INFO [stdout] (http-thinkpax.localdomain-127.0.0.1-8080-1) at
org.apache.cxf.service.factory.ReflectionServiceFactoryBean.buildServiceFromWSDL(ReflectionServiceFactoryBean.java:392)
12:22:32,372 INFO [stdout] (http-thinkpax.localdomain-127.0.0.1-8080-1) at
org.apache.cxf.service.factory.ReflectionServiceFactoryBean.initializeServiceModel(ReflectionServiceFactoryBean.java:499)
12:22:32,372 INFO [stdout] (http-thinkpax.localdomain-127.0.0.1-8080-1) at
org.apache.cxf.service.factory.ReflectionServiceFactoryBean.create(ReflectionServiceFactoryBean.java:241)
12:22:32,373 INFO [stdout] (http-thinkpax.localdomain-127.0.0.1-8080-1) at
org.apache.cxf.jaxws.support.JaxWsServiceFactoryBean.create(JaxWsServiceFactoryBean.java:202)
12:22:32,373 INFO [stdout] (http-thinkpax.localdomain-127.0.0.1-8080-1) at
org.apache.cxf.jaxws.ServiceImpl.createPort(ServiceImpl.java:438)
12:22:32,373 INFO [stdout] (http-thinkpax.localdomain-127.0.0.1-8080-1) at
org.apache.cxf.jaxws.ServiceImpl.getPort(ServiceImpl.java:311)
12:22:32,373 INFO [stdout] (http-thinkpax.localdomain-127.0.0.1-8080-1) ... 19
more
{noformat}
After my change which is:
{noformat}
$ svn diff
Index: src/org/jboss/jbossts/txbridge/demo/client/BasicClient.java
===================================================================
--- src/org/jboss/jbossts/txbridge/demo/client/BasicClient.java (revision 37673)
+++ src/org/jboss/jbossts/txbridge/demo/client/BasicClient.java (working copy)
@@ -218,7 +218,8 @@
Service service = Service.create(wsdlLocation, serviceName);
// use a modified client interface with @HandlerChain configured on it.
- Restaurant restaurant = service.getPort(Restaurant.class);
+ QName portName = new
QName("http://www.jboss.com/jbosstm/xts/demo/Restaurant",
"RestaurantServiceAT");
+ Restaurant restaurant = service.getPort(portName, Restaurant.class);
System.out.println("CLIENT: calling business Web Services...");
{noformat}
..the demo app passes, but according to the server log the tx is not propagated to the
web service (which could, however, be caused by my modification). Moreover, the demo app
cannot identify such failure since the exception is eaten (and not further propagated) on
the 'Restaurant' web service side. See the server log snippet:
{noformat}
12:31:04,840 INFO [org.apache.cxf.service.factory.ReflectionServiceFactoryBean]
(http-thinkpax.localdomain-127.0.0.1-8080-1) Creating Service
{http://bistro.demo.txbridge.jbossts.jboss.org/}BistroImplService from WSDL:
http://localhost:8080/txbridge-demo-service/BistroImpl?wsdl
12:31:04,861 INFO [stdout] (http-thinkpax.localdomain-127.0.0.1-8080-1) CLIENT:
Obtaining userTransaction...
12:31:04,862 INFO [stdout] (http-thinkpax.localdomain-127.0.0.1-8080-1) CLIENT: starting
the transaction...
12:31:04,864 INFO [stdout] (http-thinkpax.localdomain-127.0.0.1-8080-1) CLIENT:
transaction ID= Transaction: TransactionImple < ac, BasicAction:
0:ffff7f000001:-3f25763a:4eaa83e2:17 status: ActionStatus.RUNNING >
12:31:04,874 INFO [org.apache.cxf.service.factory.ReflectionServiceFactoryBean]
(http-thinkpax.localdomain-127.0.0.1-8080-1) Creating Service
{http://www.jboss.com/jbosstm/xts/demo/Restaurant}RestaurantServiceATService from WSDL:
http://localhost:8080/xtsdemowebservices/RestaurantServiceAT?wsdl
12:31:04,878 INFO [stdout] (http-thinkpax.localdomain-127.0.0.1-8080-1) CLIENT: calling
business Web Services...
12:31:05,356 INFO [stdout] (http-thinkpax.localdomain-127.0.0.1-8080-2)
RestaurantServiceAT transaction id =Unknown
12:31:05,368 INFO [stdout] (http-thinkpax.localdomain-127.0.0.1-8080-2)
RestaurantServiceAT - enrolling...
12:31:05,404 ERROR [stderr] (http-thinkpax.localdomain-127.0.0.1-8080-2) bookSeats:
Participant enrolment failed
12:31:05,404 ERROR [stderr] (http-thinkpax.localdomain-127.0.0.1-8080-2)
com.arjuna.wst.UnknownTransactionException
12:31:05,404 ERROR [stderr] (http-thinkpax.localdomain-127.0.0.1-8080-2) at
com.arjuna.mwlabs.wst11.at.remote.TransactionManagerImple.enlistForDurableTwoPhase(TransactionManagerImple.java:56)
12:31:05,404 ERROR [stderr] (http-thinkpax.localdomain-127.0.0.1-8080-2) at
com.jboss.jbosstm.xts.demo.services.restaurant.RestaurantServiceAT.bookSeats(RestaurantServiceAT.java:98)
12:31:05,404 ERROR [stderr] (http-thinkpax.localdomain-127.0.0.1-8080-2) at
sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
12:31:05,405 ERROR [stderr] (http-thinkpax.localdomain-127.0.0.1-8080-2) at
sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39)
12:31:05,405 ERROR [stderr] (http-thinkpax.localdomain-127.0.0.1-8080-2) at
sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
12:31:05,405 ERROR [stderr] (http-thinkpax.localdomain-127.0.0.1-8080-2) at
java.lang.reflect.Method.invoke(Method.java:597)
12:31:05,405 ERROR [stderr] (http-thinkpax.localdomain-127.0.0.1-8080-2) at
org.jboss.ws.common.invocation.AbstractInvocationHandlerJSE.invoke(AbstractInvocationHandlerJSE.java:111)
12:31:05,405 ERROR [stderr] (http-thinkpax.localdomain-127.0.0.1-8080-2) at
org.jboss.wsf.stack.cxf.JBossWSInvoker._invokeInternal(JBossWSInvoker.java:169)
12:31:05,405 ERROR [stderr] (http-thinkpax.localdomain-127.0.0.1-8080-2) at
org.jboss.wsf.stack.cxf.JBossWSInvoker.invoke(JBossWSInvoker.java:117)
12:31:05,406 ERROR [stderr] (http-thinkpax.localdomain-127.0.0.1-8080-2) at
org.apache.cxf.interceptor.ServiceInvokerInterceptor$1.run(ServiceInvokerInterceptor.java:58)
12:31:05,406 ERROR [stderr] (http-thinkpax.localdomain-127.0.0.1-8080-2) at
java.util.concurrent.Executors$RunnableAdapter.call(Executors.java:441)
12:31:05,406 ERROR [stderr] (http-thinkpax.localdomain-127.0.0.1-8080-2) at
java.util.concurrent.FutureTask$Sync.innerRun(FutureTask.java:303)
12:31:05,406 ERROR [stderr] (http-thinkpax.localdomain-127.0.0.1-8080-2) at
java.util.concurrent.FutureTask.run(FutureTask.java:138)
12:31:05,406 ERROR [stderr] (http-thinkpax.localdomain-127.0.0.1-8080-2) at
org.apache.cxf.workqueue.SynchronousExecutor.execute(SynchronousExecutor.java:37)
12:31:05,406 ERROR [stderr] (http-thinkpax.localdomain-127.0.0.1-8080-2) at
org.apache.cxf.interceptor.ServiceInvokerInterceptor.handleMessage(ServiceInvokerInterceptor.java:106)
12:31:05,407 ERROR [stderr] (http-thinkpax.localdomain-127.0.0.1-8080-2) at
org.apache.cxf.phase.PhaseInterceptorChain.doIntercept(PhaseInterceptorChain.java:263)
12:31:05,407 ERROR [stderr] (http-thinkpax.localdomain-127.0.0.1-8080-2) at
org.apache.cxf.transport.ChainInitiationObserver.onMessage(ChainInitiationObserver.java:121)
12:31:05,407 ERROR [stderr] (http-thinkpax.localdomain-127.0.0.1-8080-2) at
org.apache.cxf.transport.http.AbstractHTTPDestination.invoke(AbstractHTTPDestination.java:206)
12:31:05,407 ERROR [stderr] (http-thinkpax.localdomain-127.0.0.1-8080-2) at
org.jboss.wsf.stack.cxf.RequestHandlerImpl.handleHttpRequest(RequestHandlerImpl.java:91)
12:31:05,407 ERROR [stderr] (http-thinkpax.localdomain-127.0.0.1-8080-2) at
org.jboss.wsf.stack.cxf.transport.ServletHelper.callRequestHandler(ServletHelper.java:174)
12:31:05,408 ERROR [stderr] (http-thinkpax.localdomain-127.0.0.1-8080-2) at
org.jboss.wsf.stack.cxf.CXFServletExt.invoke(CXFServletExt.java:87)
12:31:05,408 ERROR [stderr] (http-thinkpax.localdomain-127.0.0.1-8080-2) at
org.apache.cxf.transport.servlet.AbstractHTTPServlet.handleRequest(AbstractHTTPServlet.java:184)
12:31:05,408 ERROR [stderr] (http-thinkpax.localdomain-127.0.0.1-8080-2) at
org.apache.cxf.transport.servlet.AbstractHTTPServlet.doPost(AbstractHTTPServlet.java:107)
12:31:05,408 ERROR [stderr] (http-thinkpax.localdomain-127.0.0.1-8080-2) at
javax.servlet.http.HttpServlet.service(HttpServlet.java:754)
12:31:05,408 ERROR [stderr] (http-thinkpax.localdomain-127.0.0.1-8080-2) at
org.jboss.wsf.stack.cxf.CXFServletExt.service(CXFServletExt.java:135)
12:31:05,408 ERROR [stderr] (http-thinkpax.localdomain-127.0.0.1-8080-2) at
org.jboss.wsf.spi.deployment.WSFServlet.service(WSFServlet.java:140)
12:31:05,409 ERROR [stderr] (http-thinkpax.localdomain-127.0.0.1-8080-2) at
javax.servlet.http.HttpServlet.service(HttpServlet.java:847)
12:31:05,409 ERROR [stderr] (http-thinkpax.localdomain-127.0.0.1-8080-2) at
org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:329)
12:31:05,409 ERROR [stderr] (http-thinkpax.localdomain-127.0.0.1-8080-2) at
org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:248)
12:31:05,409 ERROR [stderr] (http-thinkpax.localdomain-127.0.0.1-8080-2) at
org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:275)
12:31:05,409 ERROR [stderr] (http-thinkpax.localdomain-127.0.0.1-8080-2) at
org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:161)
12:31:05,409 ERROR [stderr] (http-thinkpax.localdomain-127.0.0.1-8080-2) at
org.jboss.as.web.security.SecurityContextAssociationValve.invoke(SecurityContextAssociationValve.java:155)
12:31:05,410 ERROR [stderr] (http-thinkpax.localdomain-127.0.0.1-8080-2) at
org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:155)
12:31:05,411 ERROR [stderr] (http-thinkpax.localdomain-127.0.0.1-8080-2) at
org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:102)
12:31:05,411 ERROR [stderr] (http-thinkpax.localdomain-127.0.0.1-8080-2) at
org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:109)
12:31:05,411 ERROR [stderr] (http-thinkpax.localdomain-127.0.0.1-8080-2) at
org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:362)
12:31:05,412 ERROR [stderr] (http-thinkpax.localdomain-127.0.0.1-8080-2) at
org.apache.coyote.http11.Http11Processor.process(Http11Processor.java:877)
12:31:05,412 ERROR [stderr] (http-thinkpax.localdomain-127.0.0.1-8080-2) at
org.apache.coyote.http11.Http11Protocol$Http11ConnectionHandler.process(Http11Protocol.java:670)
12:31:05,412 ERROR [stderr] (http-thinkpax.localdomain-127.0.0.1-8080-2) at
org.apache.tomcat.util.net.JIoEndpoint$Worker.run(JIoEndpoint.java:952)
12:31:05,416 ERROR [stderr] (http-thinkpax.localdomain-127.0.0.1-8080-2) at
java.lang.Thread.run(Thread.java:662)
12:31:05,425 INFO [stdout] (http-thinkpax.localdomain-127.0.0.1-8080-1) CLIENT: calling
commit on the transaciton...
12:31:05,426 INFO [stdout] (http-thinkpax.localdomain-127.0.0.1-8080-1) done
{noformat}
So there seems to be two issues actually. First, the txbridge demo app does not work with
JTA parent tx type option. Second, the demo app does not fail when the transaction is not
propagated to the web service.
--
This message is automatically generated by JIRA.
If you think it was sent incorrectly, please contact your JIRA administrators: