I don't see this exception when I tried it. (I'm using the latest
servicemix in trunk).
Though the wsdl I'm getting is still doc-lit. :(
I don't have any idea why that is for now. I can only suggest going wsdl
first as a possible alternative. Sorry.
Sireesh wrote:
Hi,
I made the changes suggested by you. Now the interface that i had is as
below:
import javax.jws.WebMethod;
import javax.jws.WebService;
@WebService(name = "FetchService", targetNamespace =
"http://blwb.dnb.com/getGlobalService")
public interface FetchService {
@WebMethod
public String getFile(String name);
}
and the pojo class is as below:
import javax.jws.WebMethod;
import javax.jws.soap.SOAPBinding;
@javax.jws.soap.SOAPBinding(style=javax.jws.soap.SOAPBinding.Style.RPC,
use=javax.jws.soap.SOAPBinding.Use.LITERAL,
parameterStyle=javax.jws.soap.SOAPBinding.ParameterStyle.WRAPPED)
public class FetchServiceImpl implements FetchService {
@WebMethod
public String getFile(String name) {
//some code here
return downloadFilepath;
}
}
My xbean looks like this:
<jsr181:endpoint
service="blwb:FTPInput"
endpoint="soap"
pojoClass="com.dnb.blwb.bltwb.FetchServiceImpl"
serviceInterface="com.dnb.blwb.bltwb.FetchService"
style="rpc"
annotations="java5"/>
But i am getting a class cast exception during deployment:
<component-task-result-details>
<task-result-details>
<task-id>deploy</task-id>
<task-result>FAILED</task-result>
<message-type>ERROR</message-type>
<task-status-msg>
<msg-loc-info>
<loc-token/>
<loc-message>java.lang.ClassCastException: $Proxy53</loc-message>
</msg-loc-info>
</task-status-msg>
<exception-info>
<nesting-level>1</nesting-level>
<msg-loc-info>
<loc-token/>
<loc-message>$Proxy53</loc-message>
<stack-trace><![CDATA[java.lang.ClassCastException: $Proxy53
at
sun.reflect.annotation.AnnotationParser.annotationForMap(AnnotationParser.java:223)
at
sun.reflect.annotation.AnnotationParser.parseAnnotation(AnnotationParser.java:213)
at
sun.reflect.annotation.AnnotationParser.parseAnnotations2(AnnotationParser.java:69)
at
sun.reflect.annotation.AnnotationParser.parseAnnotations(AnnotationParser.java:52)
at java.lang.Class.initAnnotationsIfNecessary(Class.java:2998)
at java.lang.Class.getAnnotation(Class.java:2958)
at java.lang.Class.isAnnotationPresent(Class.java:2970)
at
org.codehaus.xfire.annotations.jsr181.Jsr181WebAnnotations.hasWebServiceAnnotation(Jsr181WebAnnotations.jav
at
org.codehaus.xfire.annotations.AnnotationServiceFactory.create(AnnotationServiceFactory.java:168)
at
org.apache.servicemix.jsr181.Jsr181Endpoint.registerService(Jsr181Endpoint.java:301)
at
org.apache.servicemix.jsr181.Jsr181Endpoint.validate(Jsr181Endpoint.java:216)
at
org.apache.servicemix.common.AbstractDeployer.validate(AbstractDeployer.java:58)
at
org.apache.servicemix.common.xbean.BaseXBeanDeployer.validate(BaseXBeanDeployer.java:55)
at
org.apache.servicemix.common.xbean.AbstractXBeanDeployer.deploy(AbstractXBeanDeployer.java:92)
at
org.apache.servicemix.common.BaseServiceUnitManager.doDeploy(BaseServiceUnitManager.java:88)
at
org.apache.servicemix.common.BaseServiceUnitManager.deploy(BaseServiceUnitManager.java:69)
at
org.apache.servicemix.jbi.framework.DeploymentService.deployServiceAssembly(DeploymentService.java:527)
at
org.apache.servicemix.jbi.framework.AutoDeploymentService.updateArchive(AutoDeploymentService.java:334)
at
org.apache.servicemix.jbi.framework.AutoDeploymentService.monitorDirectory(AutoDeploymentService.java:645)
at
org.apache.servicemix.jbi.framework.AutoDeploymentService.access$200(AutoDeploymentService.java:62)
at
org.apache.servicemix.jbi.framework.AutoDeploymentService$1.run(AutoDeploymentService.java:608)
at java.util.TimerThread.mainLoop(Timer.java:512)
at java.util.TimerThread.run(Timer.java:462)
]]></stack-trace>
Please help me solving this error.
Thanks,
Sireesh.
Adrian Co wrote:
Hi,
Are you using code first development?
I'm not really sure, but can you try specifying the style in the
annotation of the pojo?
e.g.
@javax.jws.soap.SOAPBinding(
style=javax.jws.soap.SOAPBinding.Style.RPC,
use=javax.jws.soap.SOAPBinding.Use.LITERAL,
parameterStyle=javax.jws.soap.SOAPBinding.ParameterStyle.WRAPPED)
Hope it helps.
Sireesh wrote:
Hi
The style attribute of jsr181 in service mix is defaulting to
document type. When i set the attribute style = "rpc" the wsdl generated
is
still having soap binding style as "document".
The xbean written looks like :
<jsr181:endpoint
service="blwb:FTPInput"
endpoint="soap"
pojoClass="com.dnb.blwb.bltwb.FetchServiceImpl"
serviceInterface="com.dnb.blwb.bltwb.FetchService"
style="rpc" />
where i mentioned the style as rpc but the wsdl generated shows the
following :
<wsdl:binding name="endpointBinding" type="tns:FTPInputPortType">
<wsdlsoap:binding style="document"
transport="http://schemas.xmlsoap.org/soap/http"/>
<wsdl:operation name="getFile">
<wsdlsoap:operation soapAction=""/>
<wsdl:input name="getFileRequest">
<wsdlsoap:body use="literal"/>
</wsdl:input>
<wsdl:output name="getFileResponse">
<wsdlsoap:body use="literal"/>
</wsdl:output>
</wsdl:operation>
</wsdl:binding>
where the soap binding style is still a document type.
We need have an rpc binding style as our service should be invoked by
jBPM
which invokes only rpc types.
Can anyone help me on having by service of rpc type.
Thanks,
Sireesh.