Hi Michal

Could you please provide a small complete sample? I have changed the
route as described in your email, but it works (I had to install the
camel-jetty) feature. You have implemented the class WsDelegate but you
have not written where do you use it - probably somewhere in the process
definition.

The stack trace says

Caused by: java.lang.ClassNotFoundException:
javax.xml.namespace.QNameat

In my opinion your bundle is missing the import of this package. If you look in 
one of the jaxws samples (e.g. cxf-osg), import of the package 
javax.xml.namespace is added to the maven bundle plugin configuration. 

<Import-Package>
     javax.jws,
     javax.wsdl,
     *javax.xml.namespace,*
     org.springframework.beans.factory.config,
     *
 </Import-Package>


I think, you should add this (and perhaps some additional) packages into the 
import definition


Best regards
Krysztof

 

On 24.04.2014 08:38, mtomi wrote:
> *My goal is to call succesfully a WebService in activity process.I'm working
> with Servicemix 5.0.0. I started with example
> apache-servicemix-5.0.0/examples/activiti/activiti-camel , which I run
> succesfully via features:install.Then I modified file OrderProcess.bpmn.xml
> and the main process in it looks like below now:*                             
>                                                 
> *I use the class WsDelegate I found as a sample to help calling WebService
> from activiti process, and it looks like below:*package
> org.apache.servicemix.examples.activiti; import java.util.ArrayList;import
> java.util.StringTokenizer; import
> org.activiti.engine.delegate.DelegateExecution;import
> org.activiti.engine.delegate.Expression;import
> org.activiti.engine.delegate.JavaDelegate;import
> org.apache.cxf.endpoint.Client;import
> org.apache.cxf.jaxws.endpoint.dynamic.JaxWsDynamicClientFactory;import
> javax.xml.namespace.*;public class WsDelegate implements JavaDelegate {       
> private Expression wsdl;        private Expression operation;   private
> Expression parameters;          private Expression returnValue;         
> public void
> execute(DelegateExecution execution) throws Exception {           String
> wsdlString = (String)wsdl.getValue(execution);           
> JaxWsDynamicClientFactory dcf = JaxWsDynamicClientFactory.newInstance();      
>    
> Client client = dcf.createClient(wsdlString);             ArrayList 
> paramStrings =
> new ArrayList();          if (parameters!=null) {           StringTokenizer 
> st = new
> StringTokenizer( (String)parameters.getValue(execution), ",");              
> while
> (st.hasMoreTokens()) {                
> paramStrings.add(st.nextToken().trim());             
> }         }       Object response =
> client.invoke((String)operation.getValue(execution),
> paramStrings.toArray(new Object[0]));     if (returnValue!=null) {         
> String returnVariableName = (String) returnValue.getValue(execution);      
> execution.setVariable(returnVariableName, response);      }     }}*I modified
> example class ActivitiRouteBuilder and this is the code after
> modification:*package org.apache.servicemix.examples.activiti; import static
> org.activiti.camel.ActivitiProducer.PROCESS_KEY_PROPERTY; import
> java.util.HashMap;import java.util.Map; import
> org.apache.camel.Exchange;import org.apache.camel.Handler;import
> org.apache.camel.Message;import org.apache.camel.builder.RouteBuilder; /** *
> Camel routes that interact with the business process defined in the *
> OSGI-INF/activiti/OrderProcess.bpmn20.xml file */public class
> ActivitiRouteBuilder extends RouteBuilder {     private final Helper helper
> = new Helper();     @Override    public void configure() throws Exception {   
>     
> /*         * This route will start a new OrderProcess instance.  Using the
> PROCESS_KEY_PROPERTY, we are assigning a         * business key to our
> process to allow for easier correlation in later processing steps.  We are
> also         * sending a Map containing additional variables to add to the
> process instance.         */        from("jetty:http://0.0.0.0:8484/test";)    
>        
> .setBody(bean(helper))            .setProperty(PROCESS_KEY_PROPERTY,
> simple("file:name"))            .to("activiti:OrderProcess")           
> .log("Process to handle incoming order file has been started (process
> instance id ${body})");         /*         * This route will notify a
> running OrderProcess of an order delivery event.  Here too, we are setting
> the         * PROCESS_KEY_PROPERTY to correlate the delivery message with
> right order process instance.         */       
> from("file:var/activiti-camel/delivery")            .log("Notifying process
> about delivery for order ${file:name}")           
> .setProperty(PROCESS_KEY_PROPERTY, simple("file:name"))           
> .to("activiti:OrderProcess:receiveDelivery");         /*         * The BPMN
> process can also trigger Camel routes as part of the process.  In these
> routes, the variables that         * you added to the process are available
> as Exchange properties.  The next two routes will be triggered while        
> * processing the order and the order delivery.         */       
> from("activiti:OrderProcess:processOrder")            .log("Processing order
> ${property.orderid} created on ${property:timestamp}")            .log(" 
> original message: ${property.message}");        
> from("activiti:OrderProcess:processDelivery")            .log("Processing
> delivery for order ${property.orderid} created on ${property:timestamp}")     
>       
> .log("  original message: ${property.message}");    }     /*     * A few
> helper methods used for routing     */    public static final class Helper {  
>       
> /*         * This method will extract information from the Exchange (using
> Camel annotations) and put them in a         * Map that will be used for
> setting up the process' variables.         */        @Handler        public
> Map getProcessVariables(Exchange exchange) {          Message in =
> exchange.getIn();            Map<String, Object> variables = new
> HashMap<String, Object>();            variables.put("message", "pusto");      
>      
> variables.put("orderid", in.getHeader("id"));           
> variables.put("timestamp", "teraz");            return variables;        }   
> }}*And when I try to start the process through calling
> http://localhost:8484/test i get this stack
> trace:*org.apache.camel.CamelExecutionException: Exception occurred during
> execution on the exchange: Exchange[Message: {timestamp=teraz,
> message=pusto, orderid=null}]at
> org.apache.camel.util.ObjectHelper.wrapCamelExecutionException(ObjectHelper.java:1379)at
> org.apache.camel.impl.DefaultExchange.setException(DefaultExchange.java:283)at
> org.apache.camel.util.AsyncProcessorConverterHelper$ProcessorToAsyncProcessorBridge.process(AsyncProcessorConverterHelper.java:64)at
> org.apache.camel.processor.SendProcessor.process(SendProcessor.java:110)at
> org.apache.camel.management.InstrumentationProcessor.process(InstrumentationProcessor.java:72)at
> org.apache.camel.processor.RedeliveryErrorHandler.process(RedeliveryErrorHandler.java:398)at
> org.apache.camel.processor.CamelInternalProcessor.process(CamelInternalProcessor.java:191)at
> org.apache.camel.processor.Pipeline.process(Pipeline.java:118)at
> org.apache.camel.processor.Pipeline.process(Pipeline.java:80)at
> org.apache.camel.processor.CamelInternalProcessor.process(CamelInternalProcessor.java:191)at
> org.apache.camel.component.jetty.CamelContinuationServlet.service(CamelContinuationServlet.java:151)at
> javax.servlet.http.HttpServlet.service(HttpServlet.java:806)at
> org.eclipse.jetty.servlet.ServletHolder.handle(ServletHolder.java:652)at
> org.eclipse.jetty.servlet.ServletHandler$CachedChain.doFilter(ServletHandler.java:1320)at
> org.eclipse.jetty.servlets.MultiPartFilter.doFilter(MultiPartFilter.java:119)at
> org.apache.camel.component.jetty.CamelFilterWrapper.doFilter(CamelFilterWrapper.java:44)at
> org.eclipse.jetty.servlet.ServletHandler$CachedChain.doFilter(ServletHandler.java:1291)at
> org.eclipse.jetty.servlet.ServletHandler.doHandle(ServletHandler.java:443)at
> org.eclipse.jetty.server.handler.ContextHandler.doHandle(ContextHandler.java:1044)at
> org.eclipse.jetty.servlet.ServletHandler.doScope(ServletHandler.java:372)at
> org.eclipse.jetty.server.handler.ContextHandler.doScope(ContextHandler.java:978)at
> org.eclipse.jetty.server.handler.ScopedHandler.handle(ScopedHandler.java:135)at
> org.eclipse.jetty.server.handler.HandlerWrapper.handle(HandlerWrapper.java:116)at
> org.eclipse.jetty.server.Server.handle(Server.java:363)at
> org.eclipse.jetty.server.AbstractHttpConnection.handleRequest(AbstractHttpConnection.java:486)at
> org.eclipse.jetty.server.AbstractHttpConnection.headerComplete(AbstractHttpConnection.java:926)at
> org.eclipse.jetty.server.AbstractHttpConnection$RequestHandler.headerComplete(AbstractHttpConnection.java:988)at
> org.eclipse.jetty.http.HttpParser.parseNext(HttpParser.java:640)at
> org.eclipse.jetty.http.HttpParser.parseAvailable(HttpParser.java:235)at
> org.eclipse.jetty.server.AsyncHttpConnection.handle(AsyncHttpConnection.java:82)at
> org.eclipse.jetty.io.nio.SelectChannelEndPoint.handle(SelectChannelEndPoint.java:628)at
> org.eclipse.jetty.io.nio.SelectChannelEndPoint$1.run(SelectChannelEndPoint.java:52)at
> org.eclipse.jetty.util.thread.QueuedThreadPool.runJob(QueuedThreadPool.java:608)at
> org.eclipse.jetty.util.thread.QueuedThreadPool$3.run(QueuedThreadPool.java:543)at
> java.lang.Thread.run(Thread.java:722)Caused by:
> java.lang.NoClassDefFoundError: Ljavax/xml/namespace/QName;at
> java.lang.Class.getDeclaredFields0(Native Method)at
> java.lang.Class.privateGetDeclaredFields(Class.java:2308)at
> java.lang.Class.getDeclaredFields(Class.java:1760)at
> com.sun.xml.bind.v2.model.nav.ReflectionNavigator.getDeclaredFields(ReflectionNavigator.java:274)at
> com.sun.xml.bind.v2.model.nav.ReflectionNavigator.getDeclaredFields(ReflectionNavigator.java:57)at
> com.sun.xml.bind.v2.model.impl.ClassInfoImpl.findFieldProperties(ClassInfoImpl.java:377)at
> com.sun.xml.bind.v2.model.impl.ClassInfoImpl.getProperties(ClassInfoImpl.java:308)at
> com.sun.xml.bind.v2.model.impl.RuntimeClassInfoImpl.getProperties(RuntimeClassInfoImpl.java:176)at
> com.sun.xml.bind.v2.model.impl.ModelBuilder.getClassInfo(ModelBuilder.java:243)at
> com.sun.xml.bind.v2.model.impl.RuntimeModelBuilder.getClassInfo(RuntimeModelBuilder.java:100)at
> com.sun.xml.bind.v2.model.impl.RuntimeModelBuilder.getClassInfo(RuntimeModelBuilder.java:81)at
> com.sun.xml.bind.v2.model.impl.ModelBuilder.getClassInfo(ModelBuilder.java:209)at
> com.sun.xml.bind.v2.model.impl.RuntimeModelBuilder.getClassInfo(RuntimeModelBuilder.java:95)at
> com.sun.xml.bind.v2.model.impl.RuntimeModelBuilder.getClassInfo(RuntimeModelBuilder.java:81)at
> com.sun.xml.bind.v2.model.impl.ModelBuilder.getTypeInfo(ModelBuilder.java:315)at
> com.sun.xml.bind.v2.model.impl.ModelBuilder.getTypeInfo(ModelBuilder.java:330)at
> com.sun.xml.bind.v2.runtime.JAXBContextImpl.getTypeInfoSet(JAXBContextImpl.java:466)at
> com.sun.xml.bind.v2.runtime.JAXBContextImpl.(JAXBContextImpl.java:302)at
> com.sun.xml.bind.v2.runtime.JAXBContextImpl$JAXBContextBuilder.build(JAXBContextImpl.java:1140)at
> com.sun.xml.bind.v2.ContextFactory.createContext(ContextFactory.java:154)at
> com.sun.xml.bind.v2.ContextFactory.createContext(ContextFactory.java:121)at
> com.sun.xml.bind.v2.ContextFactory.createContext(ContextFactory.java:202)at
> sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)at
> sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:57)at
> sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)at
> java.lang.reflect.Method.invoke(Method.java:601)at
> javax.xml.bind.ContextFinder.newInstance(ContextFinder.java:143)at
> javax.xml.bind.ContextFinder.find(ContextFinder.java:310)at
> javax.xml.bind.JAXBContext.newInstance(JAXBContext.java:446)at
> org.apache.cxf.endpoint.dynamic.DynamicClientFactory.createClient(DynamicClientFactory.java:393)at
> org.apache.cxf.endpoint.dynamic.DynamicClientFactory.createClient(DynamicClientFactory.java:240)at
> org.apache.cxf.endpoint.dynamic.DynamicClientFactory.createClient(DynamicClientFactory.java:233)at
> org.apache.cxf.endpoint.dynamic.DynamicClientFactory.createClient(DynamicClientFactory.java:188)at
> org.apache.servicemix.examples.activiti.WsDelegate.execute(WsDelegate.java:22)at
> org.activiti.engine.impl.delegate.JavaDelegateInvocation.invoke(JavaDelegateInvocation.java:34)at
> org.activiti.engine.impl.delegate.DelegateInvocation.proceed(DelegateInvocation.java:37)at
> org.activiti.engine.impl.delegate.DefaultDelegateInterceptor.handleInvocation(DefaultDelegateInterceptor.java:25)at
> org.activiti.engine.impl.bpmn.behavior.ServiceTaskJavaDelegateActivityBehavior.execute(ServiceTaskJavaDelegateActivityBehavior.java:49)at
> org.activiti.engine.impl.bpmn.behavior.ServiceTaskJavaDelegateActivityBehavior.execute(ServiceTaskJavaDelegateActivityBehavior.java:40)at
> org.activiti.engine.impl.bpmn.helper.ClassDelegate.execute(ClassDelegate.java:115)at
> org.activiti.engine.impl.pvm.runtime.AtomicOperationActivityExecute.execute(AtomicOperationActivityExecute.java:44)at
> org.activiti.engine.impl.interceptor.CommandContext.performOperation(CommandContext.java:80)at
> org.activiti.engine.impl.persistence.entity.ExecutionEntity.performOperationSync(ExecutionEntity.java:546)at
> org.activiti.engine.impl.persistence.entity.ExecutionEntity.performOperation(ExecutionEntity.java:541)at
> org.activiti.engine.impl.pvm.runtime.AtomicOperationTransitionNotifyListenerStart.eventNotificationsCompleted(AtomicOperationTransitionNotifyListenerStart.java:52)at
> org.activiti.engine.impl.pvm.runtime.AbstractEventAtomicOperation.execute(AbstractEventAtomicOperation.java:56)at
> org.activiti.engine.impl.interceptor.CommandContext.performOperation(CommandContext.java:80)at
> org.activiti.engine.impl.persistence.entity.ExecutionEntity.performOperationSync(ExecutionEntity.java:546)at
> org.activiti.engine.impl.persistence.entity.ExecutionEntity.performOperation(ExecutionEntity.java:541)at
> org.activiti.engine.impl.pvm.runtime.AbstractEventAtomicOperation.execute(AbstractEventAtomicOperation.java:49)at
> org.activiti.engine.impl.interceptor.CommandContext.performOperation(CommandContext.java:80)at
> org.activiti.engine.impl.persistence.entity.ExecutionEntity.performOperationSync(ExecutionEntity.java:546)at
> org.activiti.engine.impl.persistence.entity.ExecutionEntity.performOperation(ExecutionEntity.java:541)at
> org.activiti.engine.impl.pvm.runtime.AtomicOperationTransitionCreateScope.execute(AtomicOperationTransitionCreateScope.java:49)at
> org.activiti.engine.impl.interceptor.CommandContext.performOperation(CommandContext.java:80)at
> org.activiti.engine.impl.persistence.entity.ExecutionEntity.performOperationSync(ExecutionEntity.java:546)at
> org.activiti.engine.impl.persistence.entity.ExecutionEntity.performOperation(ExecutionEntity.java:541)at
> org.activiti.engine.impl.pvm.runtime.AtomicOperationTransitionNotifyListenerTake.execute(AtomicOperationTransitionNotifyListenerTake.java:65)at
> org.activiti.engine.impl.interceptor.CommandContext.performOperation(CommandContext.java:80)at
> org.activiti.engine.impl.persistence.entity.ExecutionEntity.performOperationSync(ExecutionEntity.java:546)at
> org.activiti.engine.impl.persistence.entity.ExecutionEntity.performOperation(ExecutionEntity.java:541)at
> org.activiti.engine.impl.pvm.runtime.AtomicOperationTransitionDestroyScope.execute(AtomicOperationTransitionDestroyScope.java:115)at
> org.activiti.engine.impl.interceptor.CommandContext.performOperation(CommandContext.java:80)at
> org.activiti.engine.impl.persistence.entity.ExecutionEntity.performOperationSync(ExecutionEntity.java:546)at
> org.activiti.engine.impl.persistence.entity.ExecutionEntity.performOperation(ExecutionEntity.java:541)at
> org.activiti.engine.impl.pvm.runtime.AtomicOperationTransitionNotifyListenerEnd.eventNotificationsCompleted(AtomicOperationTransitionNotifyListenerEnd.java:36)at
> org.activiti.engine.impl.pvm.runtime.AbstractEventAtomicOperation.execute(AbstractEventAtomicOperation.java:56)at
> org.activiti.engine.impl.interceptor.CommandContext.performOperation(CommandContext.java:80)at
> org.activiti.engine.impl.persistence.entity.ExecutionEntity.performOperationSync(ExecutionEntity.java:546)at
> org.activiti.engine.impl.persistence.entity.ExecutionEntity.performOperation(ExecutionEntity.java:541)at
> org.activiti.engine.impl.pvm.runtime.AbstractEventAtomicOperation.execute(AbstractEventAtomicOperation.java:49)at
> org.activiti.engine.impl.interceptor.CommandContext.performOperation(CommandContext.java:80)at
> org.activiti.engine.impl.persistence.entity.ExecutionEntity.performOperationSync(ExecutionEntity.java:546)at
> org.activiti.engine.impl.persistence.entity.ExecutionEntity.performOperation(ExecutionEntity.java:541)at
> org.activiti.engine.impl.persistence.entity.ExecutionEntity.take(ExecutionEntity.java:381)at
> org.activiti.engine.impl.bpmn.behavior.BpmnActivityBehavior.performOutgoingBehavior(BpmnActivityBehavior.java:102)at
> org.activiti.engine.impl.bpmn.behavior.BpmnActivityBehavior.performDefaultOutgoingBehavior(BpmnActivityBehavior.java:51)at
> org.activiti.engine.impl.bpmn.behavior.FlowNodeActivityBehavior.leave(FlowNodeActivityBehavior.java:44)at
> org.activiti.engine.impl.bpmn.behavior.FlowNodeActivityBehavior.execute(FlowNodeActivityBehavior.java:36)at
> org.activiti.engine.impl.pvm.runtime.AtomicOperationActivityExecute.execute(AtomicOperationActivityExecute.java:44)at
> org.activiti.engine.impl.interceptor.CommandContext.performOperation(CommandContext.java:80)at
> org.activiti.engine.impl.persistence.entity.ExecutionEntity.performOperationSync(ExecutionEntity.java:546)at
> org.activiti.engine.impl.persistence.entity.ExecutionEntity.performOperation(ExecutionEntity.java:541)at
> org.activiti.engine.impl.pvm.runtime.AtomicOperationProcessStartInitial.eventNotificationsCompleted(AtomicOperationProcessStartInitial.java:46)at
> org.activiti.engine.impl.pvm.runtime.AbstractEventAtomicOperation.execute(AbstractEventAtomicOperation.java:56)at
> org.activiti.engine.impl.interceptor.CommandContext.performOperation(CommandContext.java:80)at
> org.activiti.engine.impl.persistence.entity.ExecutionEntity.performOperationSync(ExecutionEntity.java:546)at
> org.activiti.engine.impl.persistence.entity.ExecutionEntity.performOperation(ExecutionEntity.java:541)at
> org.activiti.engine.impl.pvm.runtime.AtomicOperationProcessStart.eventNotificationsCompleted(AtomicOperationProcessStart.java:45)at
> org.activiti.engine.impl.pvm.runtime.AbstractEventAtomicOperation.execute(AbstractEventAtomicOperation.java:56)at
> org.activiti.engine.impl.interceptor.CommandContext.performOperation(CommandContext.java:80)at
> org.activiti.engine.impl.persistence.entity.ExecutionEntity.performOperationSync(ExecutionEntity.java:546)at
> org.activiti.engine.impl.persistence.entity.ExecutionEntity.performOperation(ExecutionEntity.java:541)at
> org.activiti.engine.impl.persistence.entity.ExecutionEntity.start(ExecutionEntity.java:335)at
> org.activiti.engine.impl.cmd.StartProcessInstanceCmd.execute(StartProcessInstanceCmd.java:72)at
> org.activiti.engine.impl.cmd.StartProcessInstanceCmd.execute(StartProcessInstanceCmd.java:31)at
> org.activiti.engine.impl.interceptor.CommandExecutorImpl.execute(CommandExecutorImpl.java:24)at
> org.activiti.engine.impl.interceptor.CommandContextInterceptor.execute(CommandContextInterceptor.java:42)at
> org.activiti.engine.impl.interceptor.JtaTransactionInterceptor.execute(JtaTransactionInterceptor.java:59)at
> org.activiti.engine.impl.interceptor.LogInterceptor.execute(LogInterceptor.java:33)at
> org.activiti.engine.impl.RuntimeServiceImpl.startProcessInstanceByKey(RuntimeServiceImpl.java:55)at
> Proxyf138e743_9da0_45a4_be4e_6b2c8e65cd48.startProcessInstanceByKey(Unknown
> Source)at
> org.activiti.camel.ActivitiProducer.startProcess(ActivitiProducer.java:93)at
> org.activiti.camel.ActivitiProducer.process(ActivitiProducer.java:48)at
> org.apache.camel.util.AsyncProcessorConverterHelper$ProcessorToAsyncProcessorBridge.process(AsyncProcessorConverterHelper.java:61)...
> 32 moreCaused by: java.lang.ClassNotFoundException:
> javax.xml.namespace.QNameat
> java.net.URLClassLoader$1.run(URLClassLoader.java:366)at
> java.net.URLClassLoader$1.run(URLClassLoader.java:355)at
> java.security.AccessController.doPrivileged(Native Method)at
> java.net.URLClassLoader.findClass(URLClassLoader.java:354)at
> java.lang.ClassLoader.loadClass(ClassLoader.java:423)at
> java.lang.ClassLoader.loadClass(ClassLoader.java:356)... 137 more*What
> should I do to make it run?*
>
>
>
> --
> View this message in context: 
> http://servicemix.396122.n5.nabble.com/Problem-with-calling-WebService-from-serviceTask-tp5720072.html
> Sent from the ServiceMix - Dev mailing list archive at Nabble.com.


-- 
Krzysztof Sobkowiak

JEE & OSS Architect | Technical Architect @ Capgemini
Capgemini <http://www.pl.capgemini.com/> | Software Solutions Center
<http://www.pl.capgemini-sdm.com/> | Wroclaw
e-mail: [email protected] <mailto:[email protected]> |
Twitter: @KSobkowiak

Reply via email to