Hi Chamila,

Linkage error occur due to class loading issues. Most probably same class
might be exported by 2 bundles. Can you check on that?

Thanks
/Thusitha

On Thu, Sep 17, 2015 at 12:52 PM, Chamila Wijayarathna <cham...@wso2.com>
wrote:

> Hi Kasun,
>
> I am not getting any error stack-trace.
> When I am remote debugging the code, it assigns
>
> *Method threw 'java.lang.LinkageError' exception. Cannot evaluate 
> org.apache.axiom.soap.impl.llom.soap11.SOAP11BodyImpl.toString()*
>
> as the value of env.
>
> Thanks
>
>
> On Thu, Sep 17, 2015 at 12:46 PM, Kasun Bandara <kas...@wso2.com> wrote:
>
>> Hi Chamila,
>>
>> Can you please attach the error stack-trace you are getting ?
>>
>>
>> Thanks.
>>
>> On Thu, Sep 17, 2015 at 9:43 AM, Chamila Wijayarathna <cham...@wso2.com>
>> wrote:
>>
>>> Hi all,
>>>
>>> Currently I am trying to call some methods of
>>> BPS-HumanTaskClientAPIAdmin from an IS back end component. To do this I
>>> have added "HumanTaskClientAPIAdmin.wsdl", "ws-humanyask-types.xsd" and
>>> "xml.xsd" files to currently existing service stub at IS, which is 
>>> org.wso2.carbon.identity.workflow.mgt.bps.stub
>>> [1]. I took the HumanTaskClientAPIAdmin.wsdl from a latest BPS pack and
>>> other 2 files from [2].
>>> I newly added following task to the pom.xml of the service stub.
>>>
>>>
>>>
>>>
>>>
>>>
>>>
>>> *<java classname="org.apache.axis2.wsdl.WSDL2Java" fork="true">    <arg 
>>> line="-uri src/main/resources/HumanTaskUploader.wsdl -u -uw -o 
>>> target/generated-code -p org.wso2.carbon.humantask.stub.upload -ns2p 
>>> http://services.deployer.humantask.carbon.wso2.org 
>>> <http://services.deployer.humantask.carbon.wso2.org>=org.wso2.carbon.humantask.stub.upload,http://services.deployer.humantask.carbon.wso2.org/xsd=org.wso2.carbon.humantask.stub.upload.types
>>>  
>>> <http://services.deployer.humantask.carbon.wso2.org/xsd=org.wso2.carbon.humantask.stub.upload.types>"/>
>>>     <classpath refid="maven.dependency.classpath"/>    <classpath 
>>> refid="maven.compile.classpath"/>    <classpath 
>>> refid="maven.runtime.classpath"/></java>*
>>>
>>> In my backend component where I need to call the methods of this stub,
>>> we already had a dependency to the stub.
>>>
>>>
>>> *<dependency>*
>>>
>>>
>>>
>>> *    <groupId>org.wso2.carbon.identity</groupId>    
>>> <artifactId>org.wso2.carbon.identity.workflow.mgt.bps.stub</artifactId></dependency>*
>>>
>>> Then I added following code to call the service through the stub.
>>>
>>>
>>>
>>>
>>>
>>>
>>>
>>>
>>>
>>>
>>>
>>>
>>>
>>>
>>>
>>>
>>>
>>>
>>>
>>>
>>> *int tenantId = 
>>> CarbonContext.getThreadLocalCarbonContext().getTenantId();List<BPSProfileDTO>
>>>  bpsProfiles = 
>>> bpsProfileDAO.listBPSProfiles(tenantId);HumanTaskClientAPIAdminStub stub = 
>>> null;TSimpleQueryInput input = new TSimpleQueryInput();TStatus readyState = 
>>> new TStatus();//TSimpleQueryCategory queryCategory = new 
>>> TSimpleQueryCategory("ALL_TASKS", 
>>> true);readyState.setTStatus("READY");input.addStatus(readyState);input.setPageSize(100000);input.setPageNumber(0);input.setSimpleQueryCategory(TSimpleQueryCategory.ALL_TASKS);for
>>>  (int i = 0; i < bpsProfiles.size(); i++) {    String host = 
>>> bpsProfiles.get(i).getHost();    URL servicesUrl = new URL(new URL(host), 
>>> "services/HumanTaskClientAPIAdmin");    stub = new 
>>> HumanTaskClientAPIAdminStub(servicesUrl.toString());    ServiceClient 
>>> client = stub._getServiceClient();    authenticate(client, 
>>> bpsProfiles.get(i).getUsername(), bpsProfiles.get(i).getUsername());    
>>> TTaskSimpleQueryResultSet results = stub.simpleQuery(input);}*
>>>
>>> But when I call the stub.simpleQuery() method I am getting an error without 
>>> any details and when I debugged the code, I found out that it gives a 
>>> *Method threw 'java.lang.LinkageError' exception. Cannot evaluate 
>>> org.apache.axiom.soap.impl.llom.soap11.SOAP11BodyImpl.toString()*
>>> error at auto generated stub method while creating the SOAP envelope.
>>> Following is the auto generated code for above method.
>>>
>>>
>>>
>>>
>>>
>>>
>>>
>>>
>>>
>>>
>>>
>>>
>>>
>>>
>>>
>>>
>>>
>>>
>>>
>>>
>>>
>>>
>>>
>>>
>>>
>>>
>>>
>>>
>>>
>>>
>>>
>>>
>>>
>>>
>>>
>>>
>>>
>>>
>>>
>>>
>>>
>>>
>>>
>>>
>>>
>>>
>>>
>>>
>>>
>>>
>>>
>>>
>>>
>>>
>>>
>>>
>>>
>>>
>>>
>>>
>>>
>>>
>>>
>>>
>>>
>>>
>>>
>>>
>>>
>>>
>>>
>>>
>>>
>>>
>>>
>>>
>>>
>>>
>>>
>>>
>>>
>>>
>>>
>>>
>>>
>>>
>>>
>>>
>>>
>>>
>>>
>>>
>>>
>>>
>>>
>>>
>>>
>>>
>>>
>>>
>>>
>>>
>>>
>>>
>>>
>>>
>>>
>>>
>>>
>>>
>>>
>>>
>>>
>>>
>>>
>>>
>>>
>>>
>>>
>>> *public  
>>> org.wso2.carbon.identity.workflow.mgt.bps.stub.types.TTaskSimpleQueryResultSet
>>>  simpleQuery(                    
>>> org.wso2.carbon.identity.workflow.mgt.bps.stub.types.TSimpleQueryInput 
>>> simpleQueryInput587)                            throws 
>>> java.rmi.RemoteException                                        
>>> ,org.wso2.carbon.humantask.stub.upload.IllegalStateFault                
>>> ,org.wso2.carbon.humantask.stub.upload.IllegalArgumentFault{      
>>> org.apache.axis2.context.MessageContext _messageContext = null;      try{   
>>>     org.apache.axis2.client.OperationClient _operationClient = 
>>> _serviceClient.createClient(_operations[22].getName());      
>>> _operationClient.getOptions().setAction("http://docs.oasis-open.org/ns/bpel4people/ws-humantask/api/200803/simpleQuery
>>>  
>>> <http://docs.oasis-open.org/ns/bpel4people/ws-humantask/api/200803/simpleQuery>");
>>>       
>>> _operationClient.getOptions().setExceptionToBeThrownOnSOAPFault(true);      
>>>                 
>>> addPropertyToOperationClient(_operationClient,org.apache.axis2.description.WSDL2Constants.ATTR_WHTTP_QUERY_PARAMETER_SEPARATOR,"&");
>>>             // create a message context      _messageContext = new 
>>> org.apache.axis2.context.MessageContext();            // create SOAP 
>>> envelope with that payload      org.apache.axiom.soap.SOAPEnvelope env = 
>>> null;            
>>> org.oasis_open.docs.ns.bpel4people.ws_humantask.api._200803.SimpleQuery 
>>> dummyWrappedType = null;                                            env = 
>>> toEnvelope(getFactory(_operationClient.getOptions().getSoapVersionURI()),   
>>>                                          simpleQueryInput587,               
>>>                              dummyWrappedType,                              
>>>               optimizeContent(new 
>>> javax.xml.namespace.QName("http://docs.oasis-open.org/ns/bpel4people/ws-humantask/api/200803
>>>  <http://docs.oasis-open.org/ns/bpel4people/ws-humantask/api/200803>",      
>>>                                       "simpleQuery")));                     
>>>                    //adding SOAP soap_headers 
>>> _serviceClient.addHeadersToEnvelope(env);// set the message context with 
>>> that soap envelope_messageContext.setEnvelope(env);// add the message 
>>> contxt to the operation 
>>> client_operationClient.addMessageContext(_messageContext);//execute the 
>>> operation client_operationClient.execute(true);        
>>> org.apache.axis2.context.MessageContext _returnMessageContext = 
>>> _operationClient.getMessageContext(                                   
>>> org.apache.axis2.wsdl.WSDLConstants.MESSAGE_LABEL_IN_VALUE);        
>>> org.apache.axiom.soap.SOAPEnvelope _returnEnv = 
>>> _returnMessageContext.getEnvelope();                                        
>>> java.lang.Object object = fromOM(                                     
>>> _returnEnv.getBody().getFirstElement() ,                                    
>>>  
>>> org.oasis_open.docs.ns.bpel4people.ws_humantask.api._200803.SimpleQueryResponse.class,
>>>                                       getEnvelopeNamespaces(_returnEnv));   
>>>                                                     return 
>>> getSimpleQueryResponseTaskSimpleQueryResultSet((org.oasis_open.docs.ns.bpel4people.ws_humantask.api._200803.SimpleQueryResponse)object);
>>>                             }catch(org.apache.axis2.AxisFault f){    
>>> org.apache.axiom.om.OMElement faultElt = f.getDetail();    if 
>>> (faultElt!=null){        if (faultExceptionNameMap.containsKey(new 
>>> org.apache.axis2.client.FaultMapKey(faultElt.getQName(),"simpleQuery"))){   
>>>          //make the fault by reflection            try{                
>>> java.lang.String exceptionClassName = 
>>> (java.lang.String)faultExceptionClassNameMap.get(new 
>>> org.apache.axis2.client.FaultMapKey(faultElt.getQName(),"simpleQuery"));    
>>>             java.lang.Class exceptionClass = 
>>> java.lang.Class.forName(exceptionClassName);                
>>> java.lang.Exception ex = (java.lang.Exception) 
>>> exceptionClass.newInstance();                //message class                
>>> java.lang.String messageClassName = 
>>> (java.lang.String)faultMessageMap.get(new 
>>> org.apache.axis2.client.FaultMapKey(faultElt.getQName(),"simpleQuery"));    
>>>             java.lang.Class messageClass = 
>>> java.lang.Class.forName(messageClassName);                java.lang.Object 
>>> messageObject = fromOM(faultElt,messageClass,null);                
>>> java.lang.reflect.Method m = exceptionClass.getMethod("setFaultMessage",    
>>>                        new java.lang.Class[]{messageClass});                
>>> m.invoke(ex,new java.lang.Object[]{messageObject});                         
>>>        if (ex instanceof 
>>> org.wso2.carbon.humantask.stub.upload.IllegalStateFault){                  
>>> throw (org.wso2.carbon.humantask.stub.upload.IllegalStateFault)ex;          
>>>       }                                if (ex instanceof 
>>> org.wso2.carbon.humantask.stub.upload.IllegalArgumentFault){                
>>>   throw (org.wso2.carbon.humantask.stub.upload.IllegalArgumentFault)ex;     
>>>            }                                throw new 
>>> java.rmi.RemoteException(ex.getMessage(), ex);            
>>> }catch(java.lang.ClassCastException e){               // we cannot 
>>> intantiate the class - throw the original Axis fault                throw 
>>> f;            } catch (java.lang.ClassNotFoundException e) {                
>>> // we cannot intantiate the class - throw the original Axis fault           
>>>      throw f;            }catch (java.lang.NoSuchMethodException e) {       
>>>          // we cannot intantiate the class - throw the original Axis fault  
>>>               throw f;            } catch 
>>> (java.lang.reflect.InvocationTargetException e) {                // we 
>>> cannot intantiate the class - throw the original Axis fault                
>>> throw f;            }  catch (java.lang.IllegalAccessException e) {         
>>>        // we cannot intantiate the class - throw the original Axis fault    
>>>             throw f;            }   catch (java.lang.InstantiationException 
>>> e) {                // we cannot intantiate the class - throw the original 
>>> Axis fault                throw f;            }        }else{            
>>> throw f;        }    }else{        throw f;    }    } finally {        if 
>>> (_messageContext.getTransportOut() != null) {              
>>> _messageContext.getTransportOut().getSender().cleanup(_messageContext);     
>>>    }    }}*
>>>
>>> What is the issue here? Am I missing anything at creating stub? How can
>>> I overcome this?
>>>
>>> Thank You!
>>>
>>> 1.
>>> https://github.com/wso2/carbon-identity/tree/master/service-stubs/identity/org.wso2.carbon.identity.workflow.mgt.bps.stub
>>> 2.
>>> https://github.com/wso2/carbon-business-process/tree/master/service-stubs/humantask/org.wso2.carbon.humantask.stub/src/main/resources
>>>
>>> --
>>> *Chamila Dilshan Wijayarathna,*
>>> Software Engineer
>>> Mobile:(+94)788193620
>>> WSO2 Inc., http://wso2.com/
>>>
>>> _______________________________________________
>>> Dev mailing list
>>> Dev@wso2.org
>>> http://wso2.org/cgi-bin/mailman/listinfo/dev
>>>
>>>
>>
>>
>> --
>> Kasun Bandara
>> *Software Engineer*
>> Mobile : +94 (0) 718 338 360
>> <%2B94%20%280%29%20773%20451194>
>> kas...@wso2.com <thili...@wso2.com>
>>
>
>
>
> --
> *Chamila Dilshan Wijayarathna,*
> Software Engineer
> Mobile:(+94)788193620
> WSO2 Inc., http://wso2.com/
>
> _______________________________________________
> Dev mailing list
> Dev@wso2.org
> http://wso2.org/cgi-bin/mailman/listinfo/dev
>
>


-- 
Thusitha Dayaratne
Software Engineer
WSO2 Inc. - lean . enterprise . middleware |  wso2.com

Mobile  +94712756809
Blog      alokayasoya.blogspot.com
About    http://about.me/thusithathilina
_______________________________________________
Dev mailing list
Dev@wso2.org
http://wso2.org/cgi-bin/mailman/listinfo/dev

Reply via email to