xdoclet tag to generate parameter modes for web method?
yangchunke Oct 11, 2004 8:05 PMHello,
I have a web method defined as follows,
/** * @ejb.interface-method view-type = "local" * * @jboss-net.web-method returnQName="echo" * */ public void echo(IntHolder holder) { System.out.println("holder.value = " + holder.value); holder.value = 1; }
The web-service.xml generated by xdoclet1.2 with xdoclet-module-jboss-net.jar looks like
... <operation name="echo" returnQName="echo"> <parameter name="holder"/> </operation> ...
After the wsr has been deployed (JBOSS 3.2.3), I got the following error when I tried to access web service's wsdl,
java.lang.IllegalArgumentException: Illegal argument passed to ParameterDesc.setJavaType. The java type javax.xml.rpc.holders.IntHolder does not match the mode in at org.apache.axis.description.ParameterDesc.setJavaType(ParameterDesc.java:263) at org.apache.axis.description.ServiceDesc.syncOperationToClass(ServiceDesc.java:677) at org.apache.axis.description.ServiceDesc.getSyncedOperationsForName(ServiceDesc.java:1013) at org.apache.axis.description.ServiceDesc.loadServiceDescByIntrospectionRecursive(ServiceDesc.java:887) at org.apache.axis.description.ServiceDesc.loadServiceDescByIntrospection(ServiceDesc.java:821) at org.apache.axis.providers.java.JavaProvider.initServiceDesc(JavaProvider.java:631) at org.jboss.net.axis.server.EJBProvider.initServiceDesc(EJBProvider.java:285) at org.apache.axis.handlers.soap.SOAPService.getInitializedServiceDesc(SOAPService.java:342) at org.apache.axis.deployment.wsdd.WSDDService.makeNewInstance(WSDDService.java:507) at org.jboss.net.axis.Deployment.getDeployedServices(Deployment.java:233) at org.apache.axis.configuration.FileProvider.getDeployedServices(FileProvider.java:321) at org.apache.axis.transport.http.AxisServlet.reportAvailableServices(AxisServlet.java:681) at org.apache.axis.transport.http.AxisServlet.doGet(AxisServlet.java:262) at javax.servlet.http.HttpServlet.service(HttpServlet.java:740) at org.apache.axis.transport.http.AxisServletBase.service(AxisServletBase.java:339) at javax.servlet.http.HttpServlet.service(HttpServlet.java:853) at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:247) at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:193) at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:256) at org.apache.catalina.core.StandardPipeline$StandardPipelineValveContext.invokeNext(StandardPipeline.java:643) ...
And if I modified web-service.xml as the followings,
<operation name="echo" returnQName="echo"> <parameter name="holder" mode="INOUT"/> </operation>
I could correctly retrieve WSDL.
My question is, is there an xdoclet tag that can generate correct parameter mode for web methods, or do I have to manually modify web-service.xml for web methods that have holder classes as their parameters?
Thanks in advance.