FooServiceService is as per the JAX-WS specification.

Have you looked at the XML with logging or a spy? Most likely, the
client isn't playing along with the parameter names. With the simple
front end / Aegis, you must tell it to ingest the WSDL to get those
parameter names. Does soap-py know how to read a WSDL?

You would probably be happier using .aegis.xml files to name the
parameters instead of JAX-WS.


On Thu, Dec 18, 2008 at 11:18 AM, Vassilis Virvilis
<[email protected]> wrote:
> Hi everybody,
>
> I have a terrible problem trying to make jaxws annotations to work. Some 
> background:
> I am deploying wars in tomcat in debian stable using cxf 2.1.3 and java 1.5.x
>
> The same service works like a charm if deployed with the simple frontend. 
> Unfortunately we now require proper argument names instead of arg0, arg1 to 
> be visible in the wsdl. So I am trying to deploy the class as a jaxws service.
>
> The first problem is that my FOOService becomes FOOServiceService if I don't 
> specify the serviceName in the SEI but maybe this is intentional.
>
> Then i am getting an exception if I try to call a method with parameters. 
> This happens also from a java client (simple frontend) and from soappy 
> (python).
>
> If I remove the WebParam annotation the java client works but soappy gives 
> the same error.
>
> So is this a problem in my end?
>
> Please help I am desperate....
>
> -------------------------------------
>
> The steps I followed:
>
> I annotated the SEI
>
> package com.xxx.iface.FOOService
>
> @WebService(serviceName="FOOService")
> public interface FOOService {
>    public String[] getBibliography(@WebParam(name="name") String name, 
> @WebParam(name="type") String type, @WebParam(name="max_results") int 
> max_results
>    //public String[] getBibliography(String name, String type, int 
> max_results);
>
>    public String[] getAvailableTypes();
> }
>
> I annotated the implementation
>
> package com.xxx.impl.FOOService
>
> @WebService
> public class FOOService implements com.xxx.iface.FOOService {
> ....
>    public String[] getBibliography(String name, String type, int max_results){
>        ...
>    }
> }
>
> I use the following configuration
>        <bean id="FOOService" class="com.xxx.impl.FOOService">
>        </bean>
>
>        <jaxws:endpoint id="FOO" implementor="#FOOService" 
> implementorClass="com.xxx.FOOService" address="/FOOService">
>                <jaxws:serviceFactory>
>                        <ref FOOn="jaxws-and-aegis-service-factory" />
>                </jaxws:serviceFactory>
>        </jaxws:endpoint>
>
>
> and I get the following exception in my tomcat
>
> INFO: Application has thrown exception, unwinding now
> org.apache.cxf.interceptor.Fault: null while invoking public abstract 
> java.lang.String[] 
> com.xxx.iface.FOOService.getBibliography(java.lang.String,java.lang.String,int)
>  with params [null, null, null].
>        at 
> org.apache.cxf.service.invoker.AbstractInvoker.createFault(AbstractInvoker.java:121)
>        at 
> org.apache.cxf.jaxws.AbstractJAXWSMethodInvoker.createFault(AbstractJAXWSMethodInvoker.java:83)
>        at 
> org.apache.cxf.service.invoker.AbstractInvoker.invoke(AbstractInvoker.java:113)
>        at 
> org.apache.cxf.jaxws.JAXWSMethodInvoker.invoke(JAXWSMethodInvoker.java:54)
>        at 
> org.apache.cxf.service.invoker.AbstractInvoker.invoke(AbstractInvoker.java:68)
>        at 
> org.apache.cxf.interceptor.ServiceInvokerInterceptor$1.run(ServiceInvokerInterceptor.java:56)
>        at 
> org.apache.cxf.workqueue.SynchronousExecutor.execute(SynchronousExecutor.java:37)
>        at 
> org.apache.cxf.interceptor.ServiceInvokerInterceptor.handleMessage(ServiceInvokerInterceptor.java:92)
>        at 
> org.apache.cxf.phase.PhaseInterceptorChain.doIntercept(PhaseInterceptorChain.java:220)
>        at 
> org.apache.cxf.transport.ChainInitiationObserver.onMessage(ChainInitiationObserver.java:78)
>        at 
> org.apache.cxf.transport.servlet.ServletDestination.invoke(ServletDestination.java:92)
>        at 
> org.apache.cxf.transport.servlet.ServletController.invokeDestination(ServletController.java:285)
>        at 
> org.apache.cxf.transport.servlet.ServletController.invoke(ServletController.java:168)
>        at 
> org.apache.cxf.transport.servlet.AbstractCXFServlet.invoke(AbstractCXFServlet.java:175)
>        at 
> org.apache.cxf.transport.servlet.AbstractCXFServlet.doPost(AbstractCXFServlet.java:153)
>        at javax.servlet.http.HttpServlet.service(HttpServlet.java:709)
>        at javax.servlet.http.HttpServlet.service(HttpServlet.java:802)
>        at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
>        at 
> sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39)
>        at 
> sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
>        at java.lang.reflect.Method.invoke(Method.java:585)
>        at 
> org.apache.catalina.security.SecurityUtil$1.run(SecurityUtil.java:243)
>        at java.security.AccessController.doPrivileged(Native Method)
>        at javax.security.auth.Subject.doAsPrivileged(Subject.java:517)
>        at 
> org.apache.catalina.security.SecurityUtil.execute(SecurityUtil.java:275)
>        at 
> org.apache.catalina.security.SecurityUtil.doAsPrivilege(SecurityUtil.java:161)
>        at 
> org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:245)
>        at 
> org.apache.catalina.core.ApplicationFilterChain.access$0(ApplicationFilterChain.java:177)
>        at 
> org.apache.catalina.core.ApplicationFilterChain$1.run(ApplicationFilterChain.java:156)
>        at java.security.AccessController.doPrivileged(Native Method)
>        at 
> org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:152)
>        at 
> org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:213)
>        at 
> org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:178)
>        at 
> org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:126)
>        at 
> org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:105)
>        at 
> org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:107)
>        at 
> org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:148)
>        at 
> org.apache.jk.server.JkCoyoteHandler.invoke(JkCoyoteHandler.java:199)
>        at org.apache.jk.common.HandlerRequest.invoke(HandlerRequest.java:282)
>        at org.apache.jk.common.ChannelSocket.invoke(ChannelSocket.java:767)
>        at 
> org.apache.jk.common.ChannelSocket.processConnection(ChannelSocket.java:697)
>        at 
> org.apache.jk.common.ChannelSocket$SocketConnection.runIt(ChannelSocket.java:889)
>        at 
> org.apache.tomcat.util.threads.ThreadPool$ControlRunnable.run(ThreadPool.java:684)
>        at java.lang.Thread.run(Thread.java:595)
> Caused by: java.lang.IllegalArgumentException
>        at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
>        at 
> sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39)
>        at 
> sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
>        at java.lang.reflect.Method.invoke(Method.java:585)
>        at 
> org.apache.cxf.service.invoker.AbstractInvoker.performInvocation(AbstractInvoker.java:136)
>        at 
> org.apache.cxf.service.invoker.AbstractInvoker.invoke(AbstractInvoker.java:82)
>        ... 41 more
> Dec 18, 2008 5:54:34 PM org.apache.cxf.phase.PhaseInterceptorChain doIntercept
>
>

Reply via email to