Hi Chamila,

You likely included jars multiple times. The linkageErrors you see are from
the same name class being loaded in two different ways by two different
loaders on the same name. Make sure you don't include any extra jars.If you
can find what is the exact dependency,you can modify it with the scope
provided.so Maven doesn't try to multiple-load it.



On Thu, Sep 17, 2015 at 1:24 PM, Thusitha Thilina Dayaratne <
thusit...@wso2.com> wrote:

> 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
>
>


-- 
*Hasunie Adikari*
Software Engineer
WSO2 Inc.; http://wso2.com
lean.enterprise.middleware
blog http://hasuniea.blogspot.com
Mobile:+94715139495
_______________________________________________
Dev mailing list
Dev@wso2.org
http://wso2.org/cgi-bin/mailman/listinfo/dev

Reply via email to