cancel
Showing results for 
Search instead for 
Did you mean: 

Deploying Web Service Task - class not found exception

ct1
Champ in-the-making
Champ in-the-making
In Activiti 5.8, I am trying to impement a Web Service task that uses information from a Weather Web Service.  When I attempt to deploy the BPMN20 file in Activiti Explorer, I get an ActivitiClassLoadingException.  Should the deploy throw a Class not found exception when the Web Service returns a response in the form of one of the Web Service classes?  It seems that that might happen when the BPMN20 process is started.  Could you please look at the information below to see what I may have done incorrectly?

Again, this happens when I try to deploy the project in Activiti Explorer.

The BPMN20 file:


<?xml version="1.0" encoding="UTF-8"?>
<definitions xmlns="http://www.omg.org/spec/BPMN/20100524/MODEL"
      xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
      xmlns:activiti="http://activiti.org/bpmn"
      xmlns:bpmndi="http://www.omg.org/spec/BPMN/20100524/DI"
      xmlns:omgdc="http://www.omg.org/spec/DD/20100524/DC"
      xmlns:omgdi="http://www.omg.org/spec/DD/20100524/DI"
      typeLanguage="http://www.w3.org/2001/XMLSchema"
      expressionLanguage="http://www.w3.org/1999/XPath"
      targetNamespace="http://www.activiti.org/test"
      xmlns:weatherNS="http://wsf.cdyne.com/WeatherWS/"
      xmlns:tns="http://argo.com/thisNS">
      
      <import importType="http://schemas.xmlsoap.org/wsdl/"
            location="http://wsf.cdyne.com/WeatherWS/Weather.asmx?wsdl"
            namespace="http://wsf.cdyne.com/WeatherWS" />
      
      <message id="findCityWeatherForecastRequestMessage"
         itemRef="tns:GetCityForecastByZIPSoapInItem" />
      <message id="findCityWeatherForecastResponseMessage"
         itemRef="tns:GetCityForecastbyZIPSoapOutItem" />
         
      <itemDefinition id="GetCityForecastByZIPSoapInItem"
         structureRef="weatherNS:GetCityForecastByZIPSoapIn" />
      <itemDefinition id="GetCityForecastbyZIPSoapOutItem"
         structureRef="weatherNS:GetCityForecastByZIPSoapOut" />
         
      <interface name="Find City Forecast"
         implementationRef="weatherNS:Weather">
         <operation id="GetCityForecastByZIP"
                  name="Find City Forecast Operation"
                  implementationRef="weatherNS:GetCityForecastByZIP">
            <inMessageRef>
               tns:findCityWeatherForecastRequestMessage
            </inMessageRef>
            
            <outMessageRef>
               tns:findCityWeatherForecastResponseMessage
            </outMessageRef>
            
         </operation>
      </interface>
      
      <itemDefinition id="cityZip" structureRef="string" />
      <itemDefinition id="zip" structureRef="string" />
      <itemDefinition id="GetCityForecastByZIPResponse"
                     structureRef="string" />
      <itemDefinition id="replyFromService" structureRef="string" />
      
  <process id="UseWeatherWebService" name="UseWeatherWebService">
    <documentation>Place documentation for the 'UseWeatherWebService' process here.</documentation>
    <startEvent id="useWsStart" name="Use WS Start">
      <extensionElements>
        <activiti:formProperty id="zipCode" name="Zip Code of City" type="string" required="true" readable="true" writable="true"></activiti:formProperty>
      </extensionElements>
    </startEvent>
    <serviceTask id="callTheWS" name="Call the WS"
          activiti:implementation="##WebService"
          operationRef="weatherNS:GetCityForecastByZIP" >
          
          <ioSpecification>
             <dataInput
                itemSubjectRef="weatherNS:GetCityForecastByZIPSoapIn"
                id="dataInput" />
             
             <dataOutput
                itemSubjectRef="weatherNS:GetCityForecastByZIPSoapOut"
                id="dataOutput" />
                
             <inputSet>
                <dataInputRefs>dataInput</dataInputRefs>
             </inputSet>
             
             <outputSet>
                <dataOutputRefs>dataOutput</dataOutputRefs>
             </outputSet>         
          </ioSpecification>
          
          <dataInputAssociation>
             <sourceRef>cityZip</sourceRef>
             <targetRef>GetCityForecastByZIP</targetRef>        
          </dataInputAssociation>
          <dataOutputAssociation>
             <sourceRef>GetCityForecastByZIPResponse</sourceRef>
             <targetRef>replyFromService</targetRef>
          </dataOutputAssociation>
          
    </serviceTask>
    <scriptTask id="scripttask1" name="Script Task" scriptFormat="groovy">
      <script><![CDATA[print "Weather for ZIP ${cityZip} is ${replyFromWS}.\n"]]></script>
    </scriptTask>
    <endEvent id="useWsEnd" name="Use WS End"></endEvent>
    <sequenceFlow id="flow1" name="" sourceRef="useWsStart" targetRef="callTheWS"></sequenceFlow>
    <sequenceFlow id="flow2" name="" sourceRef="callTheWS" targetRef="scripttask1"></sequenceFlow>
    <sequenceFlow id="flow3" name="" sourceRef="scripttask1" targetRef="useWsEnd"></sequenceFlow>
  </process>
  <bpmndi:BPMNDiagram id="BPMNDiagram_UseWeatherWebService">
    <bpmndi:BPMNPlane bpmnElement="UseWeatherWebService" id="BPMNPlane_UseWeatherWebService">
      <bpmndi:BPMNShape bpmnElement="useWsStart" id="BPMNShape_useWsStart">
        <omgdc:Bounds height="35" width="35" x="100" y="110"></omgdc:Bounds>
      </bpmndi:BPMNShape>
      <bpmndi:BPMNShape bpmnElement="callTheWS" id="BPMNShape_callTheWS">
        <omgdc:Bounds height="55" width="105" x="230" y="100"></omgdc:Bounds>
      </bpmndi:BPMNShape>
      <bpmndi:BPMNShape bpmnElement="scripttask1" id="BPMNShape_scripttask1">
        <omgdc:Bounds height="55" width="105" x="470" y="100"></omgdc:Bounds>
      </bpmndi:BPMNShape>
      <bpmndi:BPMNShape bpmnElement="useWsEnd" id="BPMNShape_useWsEnd">
        <omgdc:Bounds height="35" width="35" x="720" y="110"></omgdc:Bounds>
      </bpmndi:BPMNShape>
      <bpmndi:BPMNEdge bpmnElement="flow1" id="BPMNEdge_flow1">
        <omgdi:waypoint x="135" y="127"></omgdi:waypoint>
        <omgdi:waypoint x="230" y="127"></omgdi:waypoint>
      </bpmndi:BPMNEdge>
      <bpmndi:BPMNEdge bpmnElement="flow2" id="BPMNEdge_flow2">
        <omgdi:waypoint x="335" y="127"></omgdi:waypoint>
        <omgdi:waypoint x="470" y="127"></omgdi:waypoint>
      </bpmndi:BPMNEdge>
      <bpmndi:BPMNEdge bpmnElement="flow3" id="BPMNEdge_flow3">
        <omgdi:waypoint x="575" y="127"></omgdi:waypoint>
        <omgdi:waypoint x="720" y="127"></omgdi:waypoint>
      </bpmndi:BPMNEdge>
    </bpmndi:BPMNPlane>
  </bpmndi:BPMNDiagram>
</definitions>

The Tomcat log:


Jan 9, 2012 4:00:58 PM org.activiti.engine.impl.bpmn.parser.BpmnParse execute
SEVERE: Uknown exception
org.activiti.engine.ActivitiClassLoadingException: Class not found: java.util.List<com.cdyne.ws.weat
herws.WeatherDescription>
        at org.activiti.engine.impl.util.ReflectUtil.loadClass(ReflectUtil.java:81)
        at org.activiti.engine.impl.webservice.CxfWSDLImporter.importStructure(CxfWSDLImporter.java:
159)
        at org.activiti.engine.impl.webservice.CxfWSDLImporter.importTypes(CxfWSDLImporter.java:146)

        at org.activiti.engine.impl.webservice.CxfWSDLImporter.importFrom(CxfWSDLImporter.java:106)
        at org.activiti.engine.impl.webservice.CxfWSDLImporter.importFrom(CxfWSDLImporter.java:69)
        at org.activiti.engine.impl.bpmn.parser.BpmnParse.parseImports(BpmnParse.java:283)
        at org.activiti.engine.impl.bpmn.parser.BpmnParse.parseRootElement(BpmnParse.java:213)
        at org.activiti.engine.impl.bpmn.parser.BpmnParse.execute(BpmnParse.java:192)
        at org.activiti.engine.impl.bpmn.deployer.BpmnDeployer.deploy(BpmnDeployer.java:81)
        at org.activiti.engine.impl.persistence.deploy.DeploymentCache.deploy(DeploymentCache.java:3
7)
        at org.activiti.engine.impl.persistence.entity.DeploymentManager.insertDeployment(Deployment
Manager.java:39)
        at org.activiti.engine.impl.cmd.DeployCmd.execute(DeployCmd.java:58)
        at org.activiti.engine.impl.cmd.DeployCmd.execute(DeployCmd.java:30)
        at org.activiti.engine.impl.interceptor.CommandExecutorImpl.execute(CommandExecutorImpl.java
:24)
        at org.activiti.engine.impl.interceptor.CommandContextInterceptor.execute(CommandContextInte
rceptor.java:42)
        at org.activiti.spring.SpringTransactionInterceptor$1.doInTransaction(SpringTransactionInter
ceptor.java:42)
        at org.springframework.transaction.support.TransactionTemplate.execute(TransactionTemplate.j
ava:130)
        at org.activiti.spring.SpringTransactionInterceptor.execute(SpringTransactionInterceptor.jav
a:40)
        at org.activiti.engine.impl.interceptor.LogInterceptor.execute(LogInterceptor.java:33)
        at org.activiti.engine.impl.RepositoryServiceImpl.deploy(RepositoryServiceImpl.java:43)
        at org.activiti.engine.impl.repository.DeploymentBuilderImpl.deploy(DeploymentBuilderImpl.ja
va:106)
        at org.activiti.explorer.ui.management.deployment.DeploymentUploadReceiver.deployUploadedFil
e(DeploymentUploadReceiver.java:88)
        at org.activiti.explorer.ui.management.deployment.DeploymentUploadReceiver.uploadFinished(De
ploymentUploadReceiver.java:71)
        at org.activiti.explorer.ui.custom.UploadComponent.uploadFinished(UploadComponent.java:173)
        at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
        at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39)
        at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
        at java.lang.reflect.Method.invoke(Method.java:597)
        at com.vaadin.event.ListenerMethod.receiveEvent(ListenerMethod.java:490)
        at com.vaadin.event.EventRouter.fireEvent(EventRouter.java:164)
        at com.vaadin.ui.AbstractComponent.fireEvent(AbstractComponent.java:1193)
        at com.vaadin.ui.Upload.fireUploadSuccess(Upload.java:744)
        at com.vaadin.ui.Upload$1.streamingFinished(Upload.java:1022)
        at com.vaadin.terminal.gwt.server.AbstractCommunicationManager.streamToReceiver(AbstractComm
unicationManager.java:593)
        at com.vaadin.terminal.gwt.server.AbstractCommunicationManager.doHandleSimpleMultipartFileUp
load(AbstractCommunicationManager.java:469)
        at com.vaadin.terminal.gwt.server.CommunicationManager.handleFileUpload(CommunicationManager
.java:257)
        at com.vaadin.terminal.gwt.server.AbstractApplicationServlet.service(AbstractApplicationServ
let.java:495)
        at javax.servlet.http.HttpServlet.service(HttpServlet.java:717)
        at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.j
ava:290)
        at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:206)

        at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:233)
        at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:191)
        at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:127)
        at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:102)
        at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:109)
        at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:298)
        at org.apache.coyote.http11.Http11Processor.process(Http11Processor.java:859)
        at org.apache.coyote.http11.Http11Protocol$Http11ConnectionHandler.process(Http11Protocol.ja
va:588)
        at org.apache.tomcat.util.net.JIoEndpoint$Worker.run(JIoEndpoint.java:489)
        at java.lang.Thread.run(Thread.java:662)
Caused by: java.lang.ClassNotFoundException: java.util.List<com.cdyne.ws.weatherws.WeatherDescriptio
n>
        at org.apache.catalina.loader.WebappClassLoader.loadClass(WebappClassLoader.java:1680)
        at org.apache.catalina.loader.WebappClassLoader.loadClass(WebappClassLoader.java:1526)
        at java.lang.Class.forName0(Native Method)
        at java.lang.Class.forName(Class.java:247)
        at org.activiti.engine.impl.util.ReflectUtil.loadClass(ReflectUtil.java:62)
        … 49 more
Jan 9, 2012 4:00:58 PM org.activiti.engine.impl.bpmn.deployer.BpmnDeployer deploy
INFO: Processing resource RenameAFile.png
Jan 9, 2012 4:00:58 PM org.activiti.engine.impl.bpmn.deployer.BpmnDeployer deploy
INFO: Processing resource TestTimerStartEventProcess.png
Jan 9, 2012 4:00:58 PM org.activiti.engine.impl.bpmn.deployer.BpmnDeployer deploy
INFO: Processing resource ResumeScreeningProcess.png
Jan 9, 2012 4:00:58 PM org.activiti.engine.impl.bpmn.deployer.BpmnDeployer deploy
INFO: Processing resource Application Screening Process.png


The WSDL of the Web Service:


<?xml version="1.0" encoding="utf-8" ?>
<wsdl:definitions xmlns:s="http://www.w3.org/2001/XMLSchema"
   xmlns:soap12="http://schemas.xmlsoap.org/wsdl/soap12/"
   xmlns:mime="http://schemas.xmlsoap.org/wsdl/mime/"
   xmlns:tns="http://ws.cdyne.com/WeatherWS/"
   xmlns:soap="http://schemas.xmlsoap.org/wsdl/soap/"
   xmlns:tm="http://microsoft.com/wsdl/mime/textMatching/"
   xmlns:http="http://schemas.xmlsoap.org/wsdl/http/"
   xmlns:soapenc="http://schemas.xmlsoap.org/soap/encoding/"
   targetNamespace="http://ws.cdyne.com/WeatherWS/"
   xmlns:wsdl="http://schemas.xmlsoap.org/wsdl/">
   <wsdl:types>
      <s:schema elementFormDefault="qualified" targetNamespace="http://ws.cdyne.com/WeatherWS/">
         <s:element name="GetWeatherInformation">
            <s:complexType />
         </s:element>
         <s:element name="GetWeatherInformationResponse">
            <s:complexType>
               <s:sequence>
                  <s:element minOccurs="0" maxOccurs="1"
                     name="GetWeatherInformationResult" type="tns:ArrayOfWeatherDescription" />
               </s:sequence>
            </s:complexType>
         </s:element>
         <s:complexType name="ArrayOfWeatherDescription">
            <s:sequence>
               <s:element minOccurs="0" maxOccurs="unbounded" name="WeatherDescription"
                  type="tns:WeatherDescription" />
            </s:sequence>
         </s:complexType>
         <s:complexType name="WeatherDescription">
            <s:sequence>
               <s:element minOccurs="1" maxOccurs="1" name="WeatherID"
                  type="s:short" />
               <s:element minOccurs="0" maxOccurs="1" name="Description"
                  type="s:string" />
               <s:element minOccurs="0" maxOccurs="1" name="PictureURL"
                  type="s:string" />
            </s:sequence>
         </s:complexType>
         <s:element name="GetCityForecastByZIP">
            <s:complexType>
               <s:sequence>
                  <s:element minOccurs="0" maxOccurs="1" name="ZIP" type="s:string" />
               </s:sequence>
            </s:complexType>
         </s:element>
         <s:element name="GetCityForecastByZIPResponse">
            <s:complexType>
               <s:sequence>
                  <s:element minOccurs="0" maxOccurs="1"
                     name="GetCityForecastByZIPResult" type="tns:ForecastReturn" />
               </s:sequence>
            </s:complexType>
         </s:element>
         <s:complexType name="ForecastReturn">
            <s:sequence>
               <s:element minOccurs="1" maxOccurs="1" name="Success"
                  type="s:boolean" />
               <s:element minOccurs="0" maxOccurs="1" name="ResponseText"
                  type="s:string" />
               <s:element minOccurs="0" maxOccurs="1" name="State" type="s:string" />
               <s:element minOccurs="0" maxOccurs="1" name="City" type="s:string" />
               <s:element minOccurs="0" maxOccurs="1" name="WeatherStationCity"
                  type="s:string" />
               <s:element minOccurs="0" maxOccurs="1" name="ForecastResult"
                  type="tns:ArrayOfForecast" />
            </s:sequence>
         </s:complexType>
         <s:complexType name="ArrayOfForecast">
            <s:sequence>
               <s:element minOccurs="0" maxOccurs="unbounded" name="Forecast"
                  nillable="true" type="tns:Forecast" />
            </s:sequence>
         </s:complexType>
         <s:complexType name="Forecast">
            <s:sequence>
               <s:element minOccurs="1" maxOccurs="1" name="Date" type="s:dateTime" />
               <s:element minOccurs="1" maxOccurs="1" name="WeatherID"
                  type="s:short" />
               <s:element minOccurs="0" maxOccurs="1" name="Desciption"
                  type="s:string" />
               <s:element minOccurs="1" maxOccurs="1" name="Temperatures"
                  type="tns:temp" />
               <s:element minOccurs="1" maxOccurs="1"
                  name="ProbabilityOfPrecipiation" type="tns:POP" />
            </s:sequence>
         </s:complexType>
         <s:complexType name="temp">
            <s:sequence>
               <s:element minOccurs="0" maxOccurs="1" name="MorningLow"
                  type="s:string" />
               <s:element minOccurs="0" maxOccurs="1" name="DaytimeHigh"
                  type="s:string" />
            </s:sequence>
         </s:complexType>
         <s:complexType name="POP">
            <s:sequence>
               <s:element minOccurs="0" maxOccurs="1" name="Nighttime"
                  type="s:string" />
               <s:element minOccurs="0" maxOccurs="1" name="Daytime"
                  type="s:string" />
            </s:sequence>
         </s:complexType>
         <s:element name="GetCityWeatherByZIP">
            <s:complexType>
               <s:sequence>
                  <s:element minOccurs="0" maxOccurs="1" name="ZIP" type="s:string" />
               </s:sequence>
            </s:complexType>
         </s:element>
         <s:element name="GetCityWeatherByZIPResponse">
            <s:complexType>
               <s:sequence>
                  <s:element minOccurs="1" maxOccurs="1"
                     name="GetCityWeatherByZIPResult" type="tns:WeatherReturn" />
               </s:sequence>
            </s:complexType>
         </s:element>
         <s:complexType name="WeatherReturn">
            <s:sequence>
               <s:element minOccurs="1" maxOccurs="1" name="Success"
                  type="s:boolean" />
               <s:element minOccurs="0" maxOccurs="1" name="ResponseText"
                  type="s:string" />
               <s:element minOccurs="0" maxOccurs="1" name="State" type="s:string" />
               <s:element minOccurs="0" maxOccurs="1" name="City" type="s:string" />
               <s:element minOccurs="0" maxOccurs="1" name="WeatherStationCity"
                  type="s:string" />
               <s:element minOccurs="1" maxOccurs="1" name="WeatherID"
                  type="s:short" />
               <s:element minOccurs="0" maxOccurs="1" name="Description"
                  type="s:string" />
               <s:element minOccurs="0" maxOccurs="1" name="Temperature"
                  type="s:string" />
               <s:element minOccurs="0" maxOccurs="1" name="RelativeHumidity"
                  type="s:string" />
               <s:element minOccurs="0" maxOccurs="1" name="Wind" type="s:string" />
               <s:element minOccurs="0" maxOccurs="1" name="Pressure"
                  type="s:string" />
               <s:element minOccurs="0" maxOccurs="1" name="Visibility"
                  type="s:string" />
               <s:element minOccurs="0" maxOccurs="1" name="WindChill"
                  type="s:string" />
               <s:element minOccurs="0" maxOccurs="1" name="Remarks"
                  type="s:string" />
            </s:sequence>
         </s:complexType>
         <s:element name="ArrayOfWeatherDescription" nillable="true"
            type="tns:ArrayOfWeatherDescription" />
         <s:element name="ForecastReturn" nillable="true"
            type="tns:ForecastReturn" />
         <s:element name="WeatherReturn" type="tns:WeatherReturn" />
      </s:schema>
   </wsdl:types>
   <wsdl:message name="GetWeatherInformationSoapIn">
      <wsdl:part name="parameters" element="tns:GetWeatherInformation" />
   </wsdl:message>
   <wsdl:message name="GetWeatherInformationSoapOut">
      <wsdl:part name="parameters" element="tns:GetWeatherInformationResponse" />
   </wsdl:message>
   <wsdl:message name="GetCityForecastByZIPSoapIn">
      <wsdl:part name="parameters" element="tns:GetCityForecastByZIP" />
   </wsdl:message>
   <wsdl:message name="GetCityForecastByZIPSoapOut">
      <wsdl:part name="parameters" element="tns:GetCityForecastByZIPResponse" />
   </wsdl:message>
   <wsdl:message name="GetCityWeatherByZIPSoapIn">
      <wsdl:part name="parameters" element="tns:GetCityWeatherByZIP" />
   </wsdl:message>
   <wsdl:message name="GetCityWeatherByZIPSoapOut">
      <wsdl:part name="parameters" element="tns:GetCityWeatherByZIPResponse" />
   </wsdl:message>
   <wsdl:message name="GetWeatherInformationHttpGetIn" />
   <wsdl:message name="GetWeatherInformationHttpGetOut">
      <wsdl:part name="Body" element="tns:ArrayOfWeatherDescription" />
   </wsdl:message>
   <wsdl:message name="GetCityForecastByZIPHttpGetIn">
      <wsdl:part name="ZIP" type="s:string" />
   </wsdl:message>
   <wsdl:message name="GetCityForecastByZIPHttpGetOut">
      <wsdl:part name="Body" element="tns:ForecastReturn" />
   </wsdl:message>
   <wsdl:message name="GetCityWeatherByZIPHttpGetIn">
      <wsdl:part name="ZIP" type="s:string" />
   </wsdl:message>
   <wsdl:message name="GetCityWeatherByZIPHttpGetOut">
      <wsdl:part name="Body" element="tns:WeatherReturn" />
   </wsdl:message>
   <wsdl:message name="GetWeatherInformationHttpPostIn" />
   <wsdl:message name="GetWeatherInformationHttpPostOut">
      <wsdl:part name="Body" element="tns:ArrayOfWeatherDescription" />
   </wsdl:message>
   <wsdl:message name="GetCityForecastByZIPHttpPostIn">
      <wsdl:part name="ZIP" type="s:string" />
   </wsdl:message>
   <wsdl:message name="GetCityForecastByZIPHttpPostOut">
      <wsdl:part name="Body" element="tns:ForecastReturn" />
   </wsdl:message>
   <wsdl:message name="GetCityWeatherByZIPHttpPostIn">
      <wsdl:part name="ZIP" type="s:string" />
   </wsdl:message>
   <wsdl:message name="GetCityWeatherByZIPHttpPostOut">
      <wsdl:part name="Body" element="tns:WeatherReturn" />
   </wsdl:message>
   <wsdl:portType name="WeatherSoap">
      <wsdl:operation name="GetWeatherInformation">
         <wsdl:documentation xmlns:wsdl="http://schemas.xmlsoap.org/wsdl/">Gets Information
            for each WeatherID</wsdl:documentation>
         <wsdl:input message="tns:GetWeatherInformationSoapIn" />
         <wsdl:output message="tns:GetWeatherInformationSoapOut" />
      </wsdl:operation>
      <wsdl:operation name="GetCityForecastByZIP">
         <wsdl:documentation xmlns:wsdl="http://schemas.xmlsoap.org/wsdl/">Allows you to get
            your City Forecast Over the Next 7 Days, which is updated hourly.
            U.S. Only</wsdl:documentation>
         <wsdl:input message="tns:GetCityForecastByZIPSoapIn" />
         <wsdl:output message="tns:GetCityForecastByZIPSoapOut" />
      </wsdl:operation>
      <wsdl:operation name="GetCityWeatherByZIP">
         <wsdl:documentation xmlns:wsdl="http://schemas.xmlsoap.org/wsdl/">Allows you to get
            your City's Weather, which is updated hourly. U.S. Only
         </wsdl:documentation>
         <wsdl:input message="tns:GetCityWeatherByZIPSoapIn" />
         <wsdl:output message="tns:GetCityWeatherByZIPSoapOut" />
      </wsdl:operation>
   </wsdl:portType>
   <wsdl:portType name="WeatherHttpGet">
      <wsdl:operation name="GetWeatherInformation">
         <wsdl:documentation xmlns:wsdl="http://schemas.xmlsoap.org/wsdl/">Gets Information
            for each WeatherID</wsdl:documentation>
         <wsdl:input message="tns:GetWeatherInformationHttpGetIn" />
         <wsdl:output message="tns:GetWeatherInformationHttpGetOut" />
      </wsdl:operation>
      <wsdl:operation name="GetCityForecastByZIP">
         <wsdl:documentation xmlns:wsdl="http://schemas.xmlsoap.org/wsdl/">Allows you to get
            your City Forecast Over the Next 7 Days, which is updated hourly.
            U.S. Only</wsdl:documentation>
         <wsdl:input message="tns:GetCityForecastByZIPHttpGetIn" />
         <wsdl:output message="tns:GetCityForecastByZIPHttpGetOut" />
      </wsdl:operation>
      <wsdl:operation name="GetCityWeatherByZIP">
         <wsdl:documentation xmlns:wsdl="http://schemas.xmlsoap.org/wsdl/">Allows you to get
            your City's Weather, which is updated hourly. U.S. Only
         </wsdl:documentation>
         <wsdl:input message="tns:GetCityWeatherByZIPHttpGetIn" />
         <wsdl:output message="tns:GetCityWeatherByZIPHttpGetOut" />
      </wsdl:operation>
   </wsdl:portType>
   <wsdl:portType name="WeatherHttpPost">
      <wsdl:operation name="GetWeatherInformation">
         <wsdl:documentation xmlns:wsdl="http://schemas.xmlsoap.org/wsdl/">Gets Information
            for each WeatherID</wsdl:documentation>
         <wsdl:input message="tns:GetWeatherInformationHttpPostIn" />
         <wsdl:output message="tns:GetWeatherInformationHttpPostOut" />
      </wsdl:operation>
      <wsdl:operation name="GetCityForecastByZIP">
         <wsdl:documentation xmlns:wsdl="http://schemas.xmlsoap.org/wsdl/">Allows you to get
            your City Forecast Over the Next 7 Days, which is updated hourly.
            U.S. Only</wsdl:documentation>
         <wsdl:input message="tns:GetCityForecastByZIPHttpPostIn" />
         <wsdl:output message="tns:GetCityForecastByZIPHttpPostOut" />
      </wsdl:operation>
      <wsdl:operation name="GetCityWeatherByZIP">
         <wsdl:documentation xmlns:wsdl="http://schemas.xmlsoap.org/wsdl/">Allows you to get
            your City's Weather, which is updated hourly. U.S. Only
         </wsdl:documentation>
         <wsdl:input message="tns:GetCityWeatherByZIPHttpPostIn" />
         <wsdl:output message="tns:GetCityWeatherByZIPHttpPostOut" />
      </wsdl:operation>
   </wsdl:portType>
   <wsdl:binding name="WeatherSoap" type="tns:WeatherSoap">
      <soap:binding transport="http://schemas.xmlsoap.org/soap/http" />
      <wsdl:operation name="GetWeatherInformation">
         <soap:operation soapAction="http://ws.cdyne.com/WeatherWS/GetWeatherInformation"
            style="document" />
         <wsdl:input>
            <soap:body use="literal" />
         </wsdl:input>
         <wsdl:output>
            <soap:body use="literal" />
         </wsdl:output>
      </wsdl:operation>
      <wsdl:operation name="GetCityForecastByZIP">
         <soap:operation soapAction="http://ws.cdyne.com/WeatherWS/GetCityForecastByZIP"
            style="document" />
         <wsdl:input>
            <soap:body use="literal" />
         </wsdl:input>
         <wsdl:output>
            <soap:body use="literal" />
         </wsdl:output>
      </wsdl:operation>
      <wsdl:operation name="GetCityWeatherByZIP">
         <soap:operation soapAction="http://ws.cdyne.com/WeatherWS/GetCityWeatherByZIP"
            style="document" />
         <wsdl:input>
            <soap:body use="literal" />
         </wsdl:input>
         <wsdl:output>
            <soap:body use="literal" />
         </wsdl:output>
      </wsdl:operation>
   </wsdl:binding>
   <wsdl:binding name="WeatherSoap12" type="tns:WeatherSoap">
      <soap12:binding transport="http://schemas.xmlsoap.org/soap/http" />
      <wsdl:operation name="GetWeatherInformation">
         <soap12:operation
            soapAction="http://ws.cdyne.com/WeatherWS/GetWeatherInformation"
            style="document" />
         <wsdl:input>
            <soap12:body use="literal" />
         </wsdl:input>
         <wsdl:output>
            <soap12:body use="literal" />
         </wsdl:output>
      </wsdl:operation>
      <wsdl:operation name="GetCityForecastByZIP">
         <soap12:operation
            soapAction="http://ws.cdyne.com/WeatherWS/GetCityForecastByZIP"
            style="document" />
         <wsdl:input>
            <soap12:body use="literal" />
         </wsdl:input>
         <wsdl:output>
            <soap12:body use="literal" />
         </wsdl:output>
      </wsdl:operation>
      <wsdl:operation name="GetCityWeatherByZIP">
         <soap12:operation soapAction="http://ws.cdyne.com/WeatherWS/GetCityWeatherByZIP"
            style="document" />
         <wsdl:input>
            <soap12:body use="literal" />
         </wsdl:input>
         <wsdl:output>
            <soap12:body use="literal" />
         </wsdl:output>
      </wsdl:operation>
   </wsdl:binding>
   <wsdl:binding name="WeatherHttpGet" type="tns:WeatherHttpGet">
      <http:binding verb="GET" />
      <wsdl:operation name="GetWeatherInformation">
         <http:operation location="/GetWeatherInformation" />
         <wsdl:input>
            <http:urlEncoded />
         </wsdl:input>
         <wsdl:output>
            <mime:mimeXml part="Body" />
         </wsdl:output>
      </wsdl:operation>
      <wsdl:operation name="GetCityForecastByZIP">
         <http:operation location="/GetCityForecastByZIP" />
         <wsdl:input>
            <http:urlEncoded />
         </wsdl:input>
         <wsdl:output>
            <mime:mimeXml part="Body" />
         </wsdl:output>
      </wsdl:operation>
      <wsdl:operation name="GetCityWeatherByZIP">
         <http:operation location="/GetCityWeatherByZIP" />
         <wsdl:input>
            <http:urlEncoded />
         </wsdl:input>
         <wsdl:output>
            <mime:mimeXml part="Body" />
         </wsdl:output>
      </wsdl:operation>
   </wsdl:binding>
   <wsdl:binding name="WeatherHttpPost" type="tns:WeatherHttpPost">
      <http:binding verb="POST" />
      <wsdl:operation name="GetWeatherInformation">
         <http:operation location="/GetWeatherInformation" />
         <wsdl:input>
            <mime:content type="application/x-www-form-urlencoded" />
         </wsdl:input>
         <wsdl:output>
            <mime:mimeXml part="Body" />
         </wsdl:output>
      </wsdl:operation>
      <wsdl:operation name="GetCityForecastByZIP">
         <http:operation location="/GetCityForecastByZIP" />
         <wsdl:input>
            <mime:content type="application/x-www-form-urlencoded" />
         </wsdl:input>
         <wsdl:output>
            <mime:mimeXml part="Body" />
         </wsdl:output>
      </wsdl:operation>
      <wsdl:operation name="GetCityWeatherByZIP">
         <http:operation location="/GetCityWeatherByZIP" />
         <wsdl:input>
            <mime:content type="application/x-www-form-urlencoded" />
         </wsdl:input>
         <wsdl:output>
            <mime:mimeXml part="Body" />
         </wsdl:output>
      </wsdl:operation>
   </wsdl:binding>
   <wsdl:service name="Weather">
      <wsdl:port name="WeatherSoap" binding="tns:WeatherSoap">
         <soap:address location="http://wsf.cdyne.com/WeatherWS/Weather.asmx" />
      </wsdl:port>
      <wsdl:port name="WeatherSoap12" binding="tns:WeatherSoap12">
         <soap12:address location="http://wsf.cdyne.com/WeatherWS/Weather.asmx" />
      </wsdl:port>
      <wsdl:port name="WeatherHttpGet" binding="tns:WeatherHttpGet">
         <http:address location="http://wsf.cdyne.com/WeatherWS/Weather.asmx" />
      </wsdl:port>
      <wsdl:port name="WeatherHttpPost" binding="tns:WeatherHttpPost">
         <http:address location="http://wsf.cdyne.com/WeatherWS/Weather.asmx" />
      </wsdl:port>
   </wsdl:service>
</wsdl:definitions>

Thank you.
12 REPLIES 12

atifelkhachine
Champ in-the-making
Champ in-the-making
Hi,

A simple way is to create a .jar from your project (be sure to have your com.cdyne.ws.weatherws.WeatherDescription within the .jar). Then add the generated jar to your tomcat/lib and restart it.

Please let me know if it has solved your problem.

Best Regards,
Atif

ct1
Champ in-the-making
Champ in-the-making
That is what I thought, but the CDYNE organization is not willing to give me a .jar file with their classes.

However, my real surprise was that the exception happened when I was trying to deploy the BPMN20 file, not when I was trying to run the process. Does the demployment actually try to load all the classes used by the process rather than waiting until the process is executed to attemp to load the classes?

Thank you.

ct1
Champ in-the-making
Champ in-the-making
I was looking for a way to mark this post completed, but I clicked the "Bump this post".  Please disregard.

vvstraet
Champ in-the-making
Champ in-the-making
Hello, have you succeeded in making this work?
I used the same webservice and got the same error upon deployment.

Adding the classes to the lib folder did not seem to help, so I wonder if you got any further?

ct1
Champ in-the-making
Champ in-the-making
vvstraet,

I did not get the Weather Web Service to work, so I wrote my own web service using Eclipse and was able to get the Activiti web-service interface to work.

CT1

vvstraet
Champ in-the-making
Champ in-the-making
OK, thanks for the reply. Will try that as well, hopefully with the same result 🙂

jhordies
Champ in-the-making
Champ in-the-making
Hello, I'm facing the exact same problem:
I found the implementation of the missing class at
http://ftp.java2s.com/Open-Source/Android-Open-Source-App/Development/ack-soap-example/com/cdyne/ws/...
I compiled it and placed it in the lib folder of activiti-explorer.

But the exception remains the same.

org.activiti.engine.ActivitiClassLoadingException: Class not found: java.util.List<com.cdyne.ws.weatherws.WeatherDescription>
        at org.activiti.engine.impl.util.ReflectUtil.loadClass(ReflectUtil.java:82)



Did someone manage to get the example working at the end ?

sarkar92
Champ in-the-making
Champ in-the-making
I also face the same problem while try to deploy my process.

any solution??????

perpetuum_mobil
Champ in-the-making
Champ in-the-making
Hello! I also have this problem. But I think activity can't find java.util.List…
I have simple web service:
<code>
package com.cnv.ws.srv.hello;

@WebService
public class Hello {
    @WebMethod(operationName="sayHello")
    @WebResult(name="helloResult")
    public String sayHello(@WebParam(name="mess")List<String> shello) {
        // …
        // some operations with list
        // …
        return "some string";
    }

    public static void main(String[] args) {
        Endpoint.publish("http://localhost:9080/WS/hello", new Hello());
    }
}
</code>

Web method call takes as a parameter the list of strings. And I have the same error when deploying my bpmn with this WS call
(java.lang.ClassNotFoundException: java.util.List<java.lang.String>):

<code>
04:55:02,188 [http-bio-8080-exec-1] INFO  org.activiti.engine.impl.bpmn.deployer.BpmnDeployer  - Processing resource aiaProcess.bpmn
10.07.2013 16:55:02 org.apache.cxf.common.jaxb.JAXBUtils logGeneratedClassNames
INFO: Created classes: com.cnv.ws.srv.hello.ObjectFactory, com.cnv.ws.srv.hello.SayHello, com.cnv.ws.srv.hello.SayHelloResponse
04:55:02,398 [http-bio-8080-exec-1] ERROR org.activiti.engine.impl.interceptor.CommandContext  - Error while closing command context
org.activiti.engine.ActivitiClassLoadingException: Class not found: java.util.List<java.lang.String>
at org.activiti.engine.impl.util.ReflectUtil.loadClass(ReflectUtil.java:82)
at org.activiti.engine.impl.webservice.CxfWSDLImporter.importStructure(CxfWSDLImporter.java:163)
at org.activiti.engine.impl.webservice.CxfWSDLImporter.importTypes(CxfWSDLImporter.java:150)
at org.activiti.engine.impl.webservice.CxfWSDLImporter.importFrom(CxfWSDLImporter.java:109)
at org.activiti.engine.impl.webservice.CxfWSDLImporter.importFrom(CxfWSDLImporter.java:70)
at org.activiti.engine.impl.bpmn.parser.BpmnParse.createImports(BpmnParse.java:266)
at org.activiti.engine.impl.bpmn.parser.BpmnParse.execute(BpmnParse.java:179)
at org.activiti.engine.impl.bpmn.deployer.BpmnDeployer.deploy(BpmnDeployer.java:86)
at org.activiti.engine.impl.persistence.deploy.DeploymentManager.deploy(DeploymentManager.java:42)
at org.activiti.engine.impl.cmd.DeployCmd.execute(DeployCmd.java:68)
at org.activiti.engine.impl.cmd.DeployCmd.execute(DeployCmd.java:33)
at org.activiti.engine.impl.interceptor.CommandExecutorImpl.execute(CommandExecutorImpl.java:24)
at org.activiti.engine.impl.interceptor.CommandContextInterceptor.execute(CommandContextInterceptor.java:61)
at org.activiti.spring.SpringTransactionInterceptor$1.doInTransaction(SpringTransactionInterceptor.java:42)
at org.springframework.transaction.support.TransactionTemplate.execute(TransactionTemplate.java:130)
at org.activiti.spring.SpringTransactionInterceptor.execute(SpringTransactionInterceptor.java:40)
at org.activiti.engine.impl.interceptor.LogInterceptor.execute(LogInterceptor.java:31)
at org.activiti.engine.impl.RepositoryServiceImpl.deploy(RepositoryServiceImpl.java:70)
at org.activiti.engine.impl.repository.DeploymentBuilderImpl.deploy(DeploymentBuilderImpl.java:134)
at org.activiti.explorer.ui.management.deployment.DeploymentUploadReceiver.deployUploadedFile(DeploymentUploadReceiver.java:96)
at org.activiti.explorer.ui.management.deployment.DeploymentUploadReceiver.uploadFinished(DeploymentUploadReceiver.java:71)
at org.activiti.explorer.ui.custom.UploadComponent.uploadFinished(UploadComponent.java:173)
at sun.reflect.GeneratedMethodAccessor359.invoke(Unknown Source)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
at java.lang.reflect.Method.invoke(Method.java:597)
at com.vaadin.event.ListenerMethod.receiveEvent(ListenerMethod.java:510)
at com.vaadin.event.EventRouter.fireEvent(EventRouter.java:164)
at com.vaadin.ui.AbstractComponent.fireEvent(AbstractComponent.java:1219)
at com.vaadin.ui.Upload.fireUploadInterrupted(Upload.java:731)
at com.vaadin.ui.Upload$1.streamingFailed(Upload.java:1037)
at com.vaadin.terminal.gwt.server.AbstractCommunicationManager.streamToReceiver(AbstractCommunicationManager.java:619)
at com.vaadin.terminal.gwt.server.AbstractCommunicationManager.doHandleSimpleMultipartFileUpload(AbstractCommunicationManager.java:476)
at com.vaadin.terminal.gwt.server.CommunicationManager.handleFileUpload(CommunicationManager.java:259)
at com.vaadin.terminal.gwt.server.AbstractApplicationServlet.service(AbstractApplicationServlet.java:495)
at javax.servlet.http.HttpServlet.service(HttpServlet.java:728)
at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:305)
at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:210)
at org.activiti.explorer.filter.ExplorerFilter.doFilter(ExplorerFilter.java:44)
at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:243)
at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:210)
at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:222)
at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:123)
at org.apache.catalina.authenticator.AuthenticatorBase.invoke(AuthenticatorBase.java:472)
at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:171)
at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:99)
at org.apache.catalina.valves.AccessLogValve.invoke(AccessLogValve.java:953)
at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:118)
at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:408)
at org.apache.coyote.http11.AbstractHttp11Processor.process(AbstractHttp11Processor.java:1023)
at org.apache.coyote.AbstractProtocol$AbstractConnectionHandler.process(AbstractProtocol.java:589)
at org.apache.tomcat.util.net.JIoEndpoint$SocketProcessor.run(JIoEndpoint.java:312)
at java.util.concurrent.ThreadPoolExecutor$Worker.runTask(ThreadPoolExecutor.java:886)
at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:908)
at java.lang.Thread.run(Thread.java:662)
Caused by: java.lang.ClassNotFoundException: java.util.List<java.lang.String>
at java.net.URLClassLoader$1.run(URLClassLoader.java:202)
at java.security.AccessController.doPrivileged(Native Method)
at java.net.URLClassLoader.findClass(URLClassLoader.java:190)
at java.lang.ClassLoader.loadClass(ClassLoader.java:306)
at java.lang.ClassLoader.loadClass(ClassLoader.java:247)
at java.lang.Class.forName0(Native Method)
at java.lang.Class.forName(Class.java:247)
at org.activiti.engine.impl.util.ReflectUtil.loadClass(ReflectUtil.java:63)
… 53 more
</code>

Has anyone solved the problem?