Hi Chamila, AFAIK, Linkage error prompts when two classloaders loading the same class and one component in one classloader wants to talk to other component in other classloader using this common class. To fix the issue, ensure that the required class you are referring is loaded only by one classloader.
Thanks, KasunB. 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/ > -- Kasun Bandara *Software Engineer* Mobile : +94 (0) 718 338 360 <%2B94%20%280%29%20773%20451194> kas...@wso2.com <thili...@wso2.com>
_______________________________________________ Dev mailing list Dev@wso2.org http://wso2.org/cgi-bin/mailman/listinfo/dev