You are viewing a plain text version of this content. The canonical link for it is here.
Posted to dev@tuscany.apache.org by "Simon Nash (JIRA)" <tu...@ws.apache.org> on 2007/07/01 00:53:04 UTC

[jira] Updated: (TUSCANY-1341) Callback over WS Binding is not functioning various issues

     [ https://issues.apache.org/jira/browse/TUSCANY-1341?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel ]

Simon Nash updated TUSCANY-1341:
--------------------------------

    Attachment: jira1341-patch1

Because my patch for supporting callbacks across the Web Service binding is quite large, I am splitting it into a series of smaller patches to make it easier to apply.

The first of these patches adds some methods to ReferenceBindingProvider and ServiceBinding Provider.  At present I have have placed default implementations of the new methods in all the affected places.  These will be replaced by fully implemented versions later.  The code to call these new methods will be added in the next stages of this multi-part patch.

I have rebuilt the trunk with this patch and everything seems OK.  Since the new code isn't being called yet, there should be no effect (either good or bad) at this stage.

Here is a brief description of the new methods:

ReferenceBindingProvider.createInvoker(Operation) is a replacement for the current method of the same name that also has a boolean isCallback parameter.  This second parameter is no longer needed because binding callback invokers will be created using the new method ServiceBindingProvider.createCallbackInvoker(Operation) instead.

The supportsAsyncOneWayInvocation() method on ReferenceBindingProvider indicates whether the provider supports non-blocking semantics for one-way forward invocations.

The supportsAsyncOneWayInvocation() method on ServiceBindingProvider indicates whether the provider supports non-blocking semantics for one-way callback invocations.

The ServiceBindingProvider.createCallbackInvoker(Operation) method creates a callback invoker for the binding.

> Callback over WS Binding is not functioning various issues
> ----------------------------------------------------------
>
>                 Key: TUSCANY-1341
>                 URL: https://issues.apache.org/jira/browse/TUSCANY-1341
>             Project: Tuscany
>          Issue Type: Bug
>          Components: Java SCA Misc Binding Extensions
>    Affects Versions: Java-SCA-0.90
>            Reporter: Lou Amodeo
>         Attachments: jira1341-patch1
>
>
> The callback function using WS bindings doesnt appear to be operation.  So far I have :
> 1) WebServiceBindingProcessor.java 
> -  The resolve() method does not setup the callbackInterface on its InterfaceContract resulting in NPE.
>     (i.e. interfaceContract.setCallbackInterface(wsdlCallbackInterface); )
> [6/11/07 13:33:02:220 EDT] 00000025 SystemOut     O 	... 87 more
> [6/11/07 13:33:02:220 EDT] 00000025 SystemOut     O Caused by: java.lang.NullPointerException
> 	at org.apache.tuscany.sca.interfacedef.impl.InterfaceContractMapperImpl.map(InterfaceContractMapperImpl.java:246)
> 	at org.apache.tuscany.sca.core.runtime.CompositeActivatorImpl.createWires(CompositeActivatorImpl.java:337)
> 	at org.apache.tuscany.sca.core.runtime.CompositeActivatorImpl.createRuntimeWires(CompositeActivatorImpl.java:269)
> 	at org.apache.tuscany.sca.core.runtime.CompositeActivatorImpl.activate(CompositeActivatorImpl.java:580)
> 	at org.apache.tuscany.sca.host.embedded.impl.EmbeddedSCADomain$DomainCompositeHelper.addComposite(EmbeddedSCADomain.java:124)
> 	at com.ibm.ws.sca2.tuscany.util.TuscanyInterfaceImpl.startModule(TuscanyInterfaceImpl.java:223)
> 	at com.ibm.ws.soa.sca.admin.runtime.tuscany.SCATuscanyRuntimeHandlerImpl.startModule(SCATuscanyRuntimeHandlerImpl.java:82)
> 	at com.ibm.ws.soa.sca.admin.runtime.impl.SCARuntimeImpl.start(SCARuntimeImpl.java:366)
> 	at com.ibm.ws.soa.sca.admin.runtime.impl.SCARuntimeImpl.stateChanged(SCARuntimeImpl.java:286)
> 	at com.ibm.ws.runtime.component.ApplicationMgrImpl.stateChanged(ApplicationMgrImpl.java:1264)
> 	at com.ibm.ws.runtime.component.DeployedApplicationImpl.fireDeployedObjectEvent(DeployedApplicationImpl.java:1112)
> 	at com.ibm.ws.runtime.component.DeployedModuleImpl.setState(DeployedModuleImpl.java:206)
> 	at com.ibm.ws.runtime.component.DeployedModuleImpl.start(DeployedModuleImpl.java:566)
> 	at com.ibm.ws.runtime.component.DeployedApplicationImpl.start(DeployedApplicationImpl.java:814)
> 	at com.ibm.ws.runtime.component.ApplicationMgrImpl.startApplication(ApplicationMgrImpl.java:965)
> 	at com.ibm.ws.runtime.component.ApplicationMgrImpl$1.run(ApplicationMgrImpl.java:1495)
> 	at com.ibm.ws.security.auth.ContextManagerImpl.runAs(ContextManagerImpl.java:3924)
> 	at com.ibm.ws.security.auth.ContextManagerImpl.runAsSystem(ContextManagerImpl.java:4001)
> 	at com.ibm.ws.security.core.SecurityContext.runAsSystem(SecurityContext.java:245)
> 	at com.ibm.ws.runtime.component.ApplicationMgrImpl.startApplication(ApplicationMgrImpl.java:1500)
> 	at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
> 	at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:64)
> 	at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
> 	at java.lang.reflect.Method.invoke(Method.java:615)
> 	at sun.reflect.misc.Trampoline.invoke(MethodUtil.java:62)
> 	at sun.reflect.GeneratedMethodAccessor28.invoke(Unknown Source)
> 	at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
> 	at java.lang.reflect.Method.invoke(Method.java:615)
> 	at sun.reflect.misc.MethodUtil.invoke(MethodUtil.java:265)
> 	at javax.management.modelmbean.RequiredModelMBean.invokeMethod(RequiredModelMBean.java:1089)
> 	at javax.management.modelmbean.RequiredModelMBean.invoke(RequiredModelMBean.java:971)
> 	at com.sun.jmx.mbeanserver.DynamicMetaDataImpl.invoke(DynamicMetaDataImpl.java:231)
> 	at com.sun.jmx.mbeanserver.MetaDataImpl.invoke(MetaDataImpl.java:238)
> 	at com.sun.jmx.interceptor.DefaultMBeanServerInterceptor.invoke(DefaultMBeanServerInterceptor.java:833)
> 	at com.sun.jmx.mbeanserver.JmxMBeanServer.invoke(JmxMBeanServer.java:802)
> 	at com.ibm.ws.management.AdminServiceImpl$1.run(AdminServiceImpl.java:1080)
> 	at com.ibm.ws.security.util.AccessController.doPrivileged(AccessController.java:118)
> 	at com.ibm.ws.management.AdminServiceImpl.invoke(AdminServiceImpl.java:973)
> 	at com.ibm.ws.management.commands.AdminServiceCommands$InvokeCmd.execute(AdminServiceCommands.java:251)
> 	at com.ibm.ws.console.core.mbean.MBeanHelper.invoke(MBeanHelper.java:239)
> 	at com.ibm.ws.console.appdeployment.ApplicationDeploymentCollectionAction.execute(ApplicationDeploymentCollectionAction.java:536)
> 	at org.apache.struts.action.RequestProcessor.processActionPerform(RequestProcessor.java:484)
> 	at org.apache.struts.action.RequestProcessor.process(RequestProcessor.java:274)
> 	at org.apache.struts.action.ActionServlet.process(ActionServlet.java:1486)
> 	at org.apache.struts.action.ActionServlet.doPost(ActionServlet.java:528)
> 	at javax.servlet.http.HttpServlet.service(HttpServlet.java:763)
> 	at javax.servlet.http.HttpServlet.service(HttpServlet.java:856)
> 	at com.ibm.ws.webcontainer.servlet.ServletWrapper.service(ServletWrapper.java:995)
> 	at com.ibm.ws.webcontainer.servlet.ServletWrapper.service(ServletWrapper.java:930)
> 	at com.ibm.ws.webcontainer.filter.WebAppFilterChain.doFilter(WebAppFilterChain.java:118)
> 	at com.ibm.ws.webcontainer.filter.WebAppFilterChain._doFilter(WebAppFilterChain.java:87)
> 	at com.ibm.ws.webcontainer.filter.WebAppFilterManager.doFilter(WebAppFilterManager.java:761)
> 	at com.ibm.ws.webcontainer.filter.WebAppFilterManager.doFilter(WebAppFilterManager.java:673)
> 	at com.ibm.ws.webcontainer.servlet.ServletWrapper.handleRequest(ServletWrapper.java:498)
> 	at com.ibm.ws.wswebcontainer.servlet.ServletWrapper.handleRequest(ServletWrapper.java:464)
> 	at com.ibm.ws.webcontainer.webapp.WebAppRequestDispatcher.forward(WebAppRequestDispatcher.java:308)
> 	at org.apache.struts.action.RequestProcessor.doForward(RequestProcessor.java:1070)
> 	at org.apache.struts.tiles.TilesRequestProcessor.doForward(TilesRequestProcessor.java:273)
> 	at org.apache.struts.action.RequestProcessor.processForwardConfig(RequestProcessor.java:455)
> 	at org.apache.struts.tiles.TilesRequestProcessor.processForwardConfig(TilesRequestProcessor.java:319)
> 	at com.ibm.isclite.container.controller.InformationController.processForwardConfig(InformationController.java:159)
> 	at org.apache.struts.action.RequestProcessor.process(RequestProcessor.java:279)
> 	at org.apache.struts.action.ActionServlet.process(ActionServlet.java:1486)
> 	at org.apache.struts.action.ActionServlet.doPost(ActionServlet.java:528)
> 	at javax.servlet.http.HttpServlet.service(HttpServlet.java:763)
> 	at javax.servlet.http.HttpServlet.service(HttpServlet.java:856)
> 	at com.ibm.ws.webcontainer.servlet.ServletWrapper.service(ServletWrapper.java:995)
> 	at com.ibm.ws.webcontainer.servlet.ServletWrapper.service(ServletWrapper.java:930)
> 	at com.ibm.ws.webcontainer.filter.WebAppFilterChain.doFilter(WebAppFilterChain.java:145)
> 	at com.ibm.ws.console.core.servlet.WSCUrlFilter.setUpCommandAssistence(WSCUrlFilter.java:792)
> 	at com.ibm.ws.console.core.servlet.WSCUrlFilter.continueStoringTaskState(WSCUrlFilter.java:363)
> 	at com.ibm.ws.console.core.servlet.WSCUrlFilter.doFilter(WSCUrlFilter.java:229)
> 	at com.ibm.ws.webcontainer.filter.FilterInstanceWrapper.doFilter(FilterInstanceWrapper.java:190)           		   
> If you set the callbackInterface above and proceeed you hit the following: 
> 2) Axis2ReferenceBindingProvider.java
> - I dont think this requires a wire as this provider already knows abouts its InterfaceContract.   
>   wire is null resulting in a NPE 
>  private Operation findCallbackOperation(RuntimeWire wire) {
>     	/*
>         InterfaceContract contract = wire.getTarget().getInterfaceContract(); // TODO:
>                                                                                 // which
>                                                                                 // end?     LAA Hack  */   
>         
>         InterfaceContract contract = this.getBindingInterfaceContract();  // LAA hack 
>         List callbackOperations = contract.getCallbackInterface().getOperations();
>         if (callbackOperations.size() != 1) {
>             throw new RuntimeException("Can only handle one callback operation");
>         }
>         Operation callbackOperation = (Operation)callbackOperations.get(0);
>         return callbackOperation;
>     }
> If you obtain contract directly using getBindingInterfaceContract() you proceed and get the following: 
> 3) DataBindingRuntimeProcessor
> Caused by: java.lang.NullPointerException
> 	at org.apache.tuscany.core.databinding.wire.DataBindingRuntimeWireProcessor.isTransformationRequired(DataBindingRuntimeWireProcessor.java:51)
> 	at org.apache.tuscany.core.databinding.wire.DataBindingRuntimeWireProcessor.isTransformationRequired(DataBindingRuntimeWireProcessor.java:72)
> 	at org.apache.tuscany.core.databinding.wire.DataBindingRuntimeWireProcessor.isTransformationRequired(DataBindingRuntimeWireProcessor.java:99)
> 	at org.apache.tuscany.core.databinding.wire.DataBindingRuntimeWireProcessor.process(DataBindingRuntimeWireProcessor.java:116)
> 	at org.apache.tuscany.sca.core.invocation.ExtensibleWireProcessor.process(ExtensibleWireProcessor.java:40)
> 	at org.apache.tuscany.sca.core.runtime.CompositeActivatorImpl.createWires(CompositeActivatorImpl.java:348)
> 	at org.apache.tuscany.sca.core.runtime.CompositeActivatorImpl.createRuntimeWires(CompositeActivatorImpl.java:269)
> 	at org.apache.tuscany.sca.core.runtime.CompositeActivatorImpl.activate(CompositeActivatorImpl.java:580)
> 	... 14 more
> [6/13/07 9:54:51:646 EDT] 00000018 SystemOut     O 	at org.apache.tuscany.sca.core.runtime.CompositeActivatorImpl.activate(CompositeActivatorImpl.java:582)
> [6/13/07 9:54:51:646 EDT] 00000018 SystemOut     O 	at org.apache.tuscany.sca.host.embedded.impl.EmbeddedSCADomain$DomainCompositeHelper.addComposite(EmbeddedSCADomain.java:124)
> [6/13/07 9:54:51:646 EDT] 00000018 SystemOut     O 	at com.ibm.ws.sca2.tuscany.util.TuscanyInterfaceImpl.startModule(TuscanyInterfaceImpl.java:223)
> [6/13/07 9:54:51:646 EDT] 00000018 SystemOut     O 	at com.ibm.ws.soa.sca.admin.runtime.tuscany.SCATuscanyRuntimeHandlerImpl.startModule(SCATuscanyRuntimeHandlerImpl.java:82)
> [6/13/07 9:54:51:646 EDT] 00000018 SystemOut     O 	at com.ibm.ws.soa.sca.admin.runtime.impl.SCARuntimeImpl.start(SCARuntimeImpl.java:366)
> [6/13/07 9:54:51:646 EDT] 00000018 SystemOut     O 	... 10 more
> [6/13/07 9:54:51:646 EDT] 00000018 SystemOut     O Caused by: java.lang.NullPointerException
> 	at org.apache.tuscany.core.databinding.wire.DataBindingRuntimeWireProcessor.isTransformationRequired(DataBindingRuntimeWireProcessor.java:51)
> 	at org.apache.tuscany.core.databinding.wire.DataBindingRuntimeWireProcessor.isTransformationRequired(DataBindingRuntimeWireProcessor.java:72)
> 	at org.apache.tuscany.core.databinding.wire.DataBindingRuntimeWireProcessor.isTransformationRequired(DataBindingRuntimeWireProcessor.java:99)
> 	at org.apache.tuscany.core.databinding.wire.DataBindingRuntimeWireProcessor.process(DataBindingRuntimeWireProcessor.java:116)
> 	at org.apache.tuscany.sca.core.invocation.ExtensibleWireProcessor.process(ExtensibleWireProcessor.java:40)
> 	at org.apache.tuscany.sca.core.runtime.CompositeActivatorImpl.createWires(CompositeActivatorImpl.java:348)
> 	at org.apache.tuscany.sca.core.runtime.CompositeActivatorImpl.createRuntimeWires(CompositeActivatorImpl.java:269)
> 	at org.apache.tuscany.sca.core.runtime.CompositeActivatorImpl.activate(CompositeActivatorImpl.java:580)
> 	at org.apache.tuscany.sca.host.embedded.impl.EmbeddedSCADomain$DomainCompositeHelper.addComposite(EmbeddedSCADomain.java:124)  
> 4) I see this comment in Axis2CallbackInvocationHandler which is not being executed anyway:  
>   public Axis2CallbackInvocationHandler(MessageFactory messageFactory, RuntimeWire wire) {
>         super(messageFactory, false);
>         this.wire = wire;
>     }
>     public Object invoke(Operation operation, Object[] args, LinkedList<URI> callbackRoutingChain) throws Throwable {
> //        Object targetAddress = callbackRoutingChain.removeFirst();
> //        if (targetAddress == null) {
> //            throw new AssertionError("Popped a null from address from stack");
> //        }
> //        //TODO optimize as this is slow in local invocations
> //        Map<Operation, InvocationChain> sourceCallbackInvocationChains =
> //            wire.getCallbackInvocationChains();
> //        InvocationChain chain = sourceCallbackInvocationChains.get(operation);
> //        chain.g
> //        TargetInvoker invoker = chain.getTargetInvoker();
> //        return invoke(chain, invoker, args, null, callbackRoutingChain, null);
>         throw new UnsupportedOperationException("not yet implemented");
>     }

-- 
This message is automatically generated by JIRA.
-
You can reply to this email to add a comment to the issue online.


---------------------------------------------------------------------
To unsubscribe, e-mail: tuscany-dev-unsubscribe@ws.apache.org
For additional commands, e-mail: tuscany-dev-help@ws.apache.org