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