cxf-users mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From Benson Margulies <bimargul...@gmail.com>
Subject Re: Problem using LocalTransport in Tomcat
Date Fri, 29 Oct 2010 23:52:32 GMT
Your two ends are disagreeing about the namespace. What data binding
are you using?

On Fri, Oct 29, 2010 at 7:18 PM, Joe Lin <guava01@yahoo.com> wrote:
> I corrected that problem. I need to setServiceClass for the factory but now when I tried
to make an invokation at hello2.sayHello("yo!") I'm getting a "Caused by: javax.xml.bind.UnmarshalException:
unexpected element (uri:"http://order.demo/", local:"arg0"). Expected elements are <{}arg0>".
>
> Any help?
>
> Following is the new code.
>
> @WebService(endpointInterface="demo.order.HelloService")
> public class HelloImpl implements HelloService {
>
>        @Override
>        public String sayHello(String name) {
>                if ( name == null )
>                        name = "Nothing";
>                // TODO Auto-generated method stub
>
>                ClientProxyFactoryBean factory = new ClientProxyFactoryBean();
>                factory.setAddress("local://hello");
>                factory.setServiceClass(HelloService.class); //<-----------
need to ass this
>
>                HelloService hello2 = (HelloService) factory.create();
>
>                Method[] methods = hello2.getClass().getDeclaredMethods();
>
>                name = hello2.sayHello("yo!");   //<------------- JAXB problem
here
>
>                return "hello " + name ;
>        }
>
> }
> --- On Fri, 10/29/10, Joe Lin <guava01@yahoo.com> wrote:
>
>> From: Joe Lin <guava01@yahoo.com>
>> Subject: Re: Problem using LocalTransport in Tomcat
>> To: users@cxf.apache.org, "Daniel Kulp" <dkulp@apache.org>
>> Date: Friday, October 29, 2010, 2:35 PM
>> Thanks. That works. But now I have a
>> new problem. Essentially what I'm trying to accomplish is to
>> call another service on LocalTransport from on of the
>> service. I have HelloImpl and HelloImpl2 all implements
>> HelloService. HelloImpl2 is the service on LocalTransport
>> and I'm trying to call HelloImpl2 from HelloImpl. But I'm
>> getting the following exception. It failed at
>> ClientProxyFactory.create():
>>
>> ============================================
>>     at
>> javax.servlet.http.HttpServlet.service(HttpServlet.java:617)
>>     at
>> org.apache.cxf.transport.servlet.AbstractHTTPServlet.service(AbstractHTTPServlet.java:159)
>>     at
>> org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:290)
>>     at
>> org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:206)
>>     at
>> org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:233)
>>     at
>> org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:191)
>>     at
>> org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:127)
>>     at
>> org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:102)
>>     at
>> org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:109)
>>     at
>> org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:298)
>>     at
>> org.apache.coyote.http11.Http11Processor.process(Http11Processor.java:857)
>>     at
>> org.apache.coyote.http11.Http11Protocol$Http11ConnectionHandler.process(Http11Protocol.java:588)
>>     at
>> org.apache.tomcat.util.net.JIoEndpoint$Worker.run(JIoEndpoint.java:489)
>>     at
>> java.lang.Thread.run(Thread.java:637)
>> Caused by: java.lang.NullPointerException
>>     at
>> org.apache.cxf.service.factory.ReflectionServiceFactoryBean.checkServiceClassAnnotations(ReflectionServiceFactoryBean.java:2340)
>>     at
>> org.apache.cxf.service.factory.ReflectionServiceFactoryBean.setServiceClass(ReflectionServiceFactoryBean.java:2337)
>>     at
>> org.apache.cxf.frontend.AbstractWSDLBasedEndpointFactory.initializeServiceFactory(AbstractWSDLBasedEndpointFactory.java:230)
>>     at
>> org.apache.cxf.frontend.AbstractWSDLBasedEndpointFactory.createEndpoint(AbstractWSDLBasedEndpointFactory.java:100)
>>     at
>> org.apache.cxf.frontend.ClientFactoryBean.create(ClientFactoryBean.java:90)
>>     at
>> org.apache.cxf.frontend.ClientProxyFactoryBean.create(ClientProxyFactoryBean.java:105)
>>     at
>> demo.order.HelloImpl.sayHello(HelloImpl.java:19)
>>     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:597)
>>     at
>> org.apache.cxf.service.invoker.AbstractInvoker.performInvocation(AbstractInvoker.java:173)
>>     at
>> org.apache.cxf.service.invoker.AbstractInvoker.invoke(AbstractInvoker.java:89)
>>     ... 30 more
>>
>> ============================================
>>
>> Below is my interface and implementation:
>>
>>
>> @WebService
>> public interface HelloService {
>>
>>     @WebMethod
>>     String sayHello(String name);
>> }
>>
>> @WebService(endpointInterface="demo.order.HelloService")
>> public class HelloImpl2 implements HelloService {
>>
>>     @Override
>>     public String sayHello(String name) {
>>         if ( name == null )
>>
>> name = "Nothing Local";
>>         // TODO
>> Auto-generated method stub
>>         return "hello " +
>> name ;
>>     }
>>
>> }
>>
>> @WebService(endpointInterface="demo.order.HelloService")
>> public class HelloImpl implements HelloService {
>>
>>     @Override
>>     public String sayHello(String name) {
>>         if ( name == null )
>>
>> name = "Nothing";
>>         // TODO
>> Auto-generated method stub
>>
>>
>> ClientProxyFactoryBean factory = new
>> ClientProxyFactoryBean();
>>
>> factory.setAddress("local://hello");
>>
>>         HelloService hello2 =
>> (HelloService) factory.create();
>>
>>         name =
>> hello2.sayHello("yo!");
>>
>>         return "hello " +
>> name ;
>>     }
>> }
>>
>>
>>
>>
>>
>>
>> --- On Fri, 10/29/10, Daniel Kulp <dkulp@apache.org>
>> wrote:
>>
>> > From: Daniel Kulp <dkulp@apache.org>
>> > Subject: Re: Problem using LocalTransport in Tomcat
>> > To: users@cxf.apache.org
>> > Cc: "Joe Lin" <guava01@yahoo.com>
>> > Date: Friday, October 29, 2010, 1:57 PM
>> >
>> > Hmm...  Sounds like its not finding the transport
>> > factory for some reason.
>> >
>> > Can you add:
>> >
>> > transportId="http://cxf.apache.org/transports/local"
>> >
>> > to the jaxws:endpoint for the local one to force it?
>> >
>> > Dan
>> >
>> >
>> >
>> > On Friday 29 October 2010 4:52:06 pm Joe Lin wrote:
>> > > Thanks for the reply. Here is the full stack:
>> > >
>> > > Oct 29, 2010 12:22:39 AM
>> > org.springframework.web.context.ContextLoader
>> > > initWebApplicationContext SEVERE: Context
>> > initialization failed
>> > >
>> >
>> org.springframework.beans.factory.BeanCreationException:
>> > Error creating
>> > > bean with name 'helloLocal': Invocation of init
>> method
>> > failed; nested
>> > > exception is javax.xml.ws.WebServiceException:
>> > > java.lang.NullPointerException at
>> > >
>> >
>> org.springframework.beans.factory.support.AbstractAutowireCapableBeanFacto
>> > >
>> >
>> ry.initializeBean(AbstractAutowireCapableBeanFactory.java:1420)
>> > at
>> > >
>> >
>> org.springframework.beans.factory.support.AbstractAutowireCapableBeanFacto
>> > >
>> >
>> ry.doCreateBean(AbstractAutowireCapableBeanFactory.java:519)
>> > at
>> > >
>> >
>> org.springframework.beans.factory.support.AbstractAutowireCapableBeanFacto
>> > >
>> >
>> ry.createBean(AbstractAutowireCapableBeanFactory.java:456)
>> > at
>> > >
>> >
>> org.springframework.beans.factory.support.AbstractBeanFactory$1.getObject(
>> > > AbstractBeanFactory.java:291) at
>> > >
>> >
>> org.springframework.beans.factory.support.DefaultSingletonBeanRegistry.get
>> > > Singleton(DefaultSingletonBeanRegistry.java:222)
>> at
>> > >
>> >
>> org.springframework.beans.factory.support.AbstractBeanFactory.doGetBean(Ab
>> > > stractBeanFactory.java:288) at
>> > >
>> >
>> org.springframework.beans.factory.support.AbstractBeanFactory.getBean(Abst
>> > > ractBeanFactory.java:190) at
>> > >
>> >
>> org.springframework.beans.factory.support.DefaultListableBeanFactory.preIn
>> > >
>> >
>> stantiateSingletons(DefaultListableBeanFactory.java:580) at
>> > >
>> >
>> org.springframework.context.support.AbstractApplicationContext.finishBeanF
>> > >
>> >
>> actoryInitialization(AbstractApplicationContext.java:895)
>> > at
>> > >
>> >
>> org.springframework.context.support.AbstractApplicationContext.refresh(Abs
>> > > tractApplicationContext.java:425) at
>> > >
>> >
>> org.springframework.web.context.ContextLoader.createWebApplicationContext(
>> > > ContextLoader.java:276) at
>> > >
>> >
>> org.springframework.web.context.ContextLoader.initWebApplicationContext(Co
>> > > ntextLoader.java:197) at
>> > >
>> >
>> org.springframework.web.context.ContextLoaderListener.contextInitialized(C
>> > > ontextLoaderListener.java:47) at
>> > >
>> >
>> org.apache.catalina.core.StandardContext.listenerStart(StandardContext.jav
>> > > a:4135) at
>> > >
>> >
>> org.apache.catalina.core.StandardContext.start(StandardContext.java:4630)
>> > > at
>> > >
>> >
>> org.apache.catalina.core.ContainerBase.addChildInternal(ContainerBase.java
>> > > :791) at
>> > >
>> >
>> org.apache.catalina.core.ContainerBase.addChild(ContainerBase.java:771)
>> > at
>> > >
>> >
>> org.apache.catalina.core.StandardHost.addChild(StandardHost.java:546)
>> > at
>> > >
>> >
>> org.apache.catalina.startup.HostConfig.deployWAR(HostConfig.java:905)
>> > at
>> > >
>> >
>> org.apache.catalina.startup.HostConfig.deployWARs(HostConfig.java:740)
>> > at
>> > >
>> >
>> org.apache.catalina.startup.HostConfig.deployApps(HostConfig.java:500)
>> > at
>> > >
>> >
>> org.apache.catalina.startup.HostConfig.start(HostConfig.java:1277)
>> > at
>> > >
>> >
>> org.apache.catalina.startup.HostConfig.lifecycleEvent(HostConfig.java:321)
>> > > at
>> > >
>> >
>> org.apache.catalina.util.LifecycleSupport.fireLifecycleEvent(LifecycleSupp
>> > > ort.java:119) at
>> > >
>> >
>> org.apache.catalina.core.ContainerBase.start(ContainerBase.java:1053)
>> > at
>> > >
>> >
>> org.apache.catalina.core.StandardHost.start(StandardHost.java:785)
>> > at
>> > >
>> >
>> org.apache.catalina.core.ContainerBase.start(ContainerBase.java:1045)
>> > at
>> > >
>> >
>> org.apache.catalina.core.StandardEngine.start(StandardEngine.java:445)
>> > at
>> > >
>> >
>> org.apache.catalina.core.StandardService.start(StandardService.java:519)
>> > > at
>> >
>> org.apache.catalina.core.StandardServer.start(StandardServer.java:710)
>> > > at
>> >
>> org.apache.catalina.startup.Catalina.start(Catalina.java:581)
>> > >     at
>> > sun.reflect.NativeMethodAccessorImpl.invoke0(Native
>> Method)
>> > >     at
>> > >
>> >
>> sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:
>> > > 39) at
>> > >
>> >
>> sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorIm
>> > > pl.java:25) at
>> > java.lang.reflect.Method.invoke(Method.java:597)
>> > >     at
>> >
>> org.apache.catalina.startup.Bootstrap.start(Bootstrap.java:289)
>> > >     at
>> >
>> org.apache.catalina.startup.Bootstrap.main(Bootstrap.java:414)
>> > > Caused by: javax.xml.ws.WebServiceException:
>> > java.lang.NullPointerException
>> > >     at
>> >
>> org.apache.cxf.jaxws.EndpointImpl.doPublish(EndpointImpl.java:335)
>> > >     at
>> >
>> org.apache.cxf.jaxws.EndpointImpl.publish(EndpointImpl.java:238)
>> > >     at
>> >
>> org.apache.cxf.jaxws.EndpointImpl.publish(EndpointImpl.java:481)
>> > >     at
>> > sun.reflect.NativeMethodAccessorImpl.invoke0(Native
>> Method)
>> > >     at
>> > >
>> >
>> sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:
>> > > 39) at
>> > >
>> >
>> sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorIm
>> > > pl.java:25) at
>> > java.lang.reflect.Method.invoke(Method.java:597)
>> > >     at
>> > >
>> >
>> org.springframework.beans.factory.support.AbstractAutowireCapableBeanFacto
>> > >
>> >
>> ry.invokeCustomInitMethod(AbstractAutowireCapableBeanFactory.java:1544)
>> > at
>> > >
>> >
>> org.springframework.beans.factory.support.AbstractAutowireCapableBeanFacto
>> > >
>> >
>> ry.invokeInitMethods(AbstractAutowireCapableBeanFactory.java:1485)
>> > at
>> > >
>> >
>> org.springframework.beans.factory.support.AbstractAutowireCapableBeanFacto
>> > >
>> >
>> ry.initializeBean(AbstractAutowireCapableBeanFactory.java:1417)
>> > ... 36 more
>> > > Caused by: java.lang.NullPointerException
>> > >     at
>> > >
>> >
>> org.apache.cxf.binding.soap.SoapTransportFactory.getDestination(SoapTransp
>> > > ortFactory.java:123) at
>> > >
>> >
>> org.apache.cxf.endpoint.ServerImpl.initDestination(ServerImpl.java:92)
>> > at
>> > >
>> >
>> org.apache.cxf.endpoint.ServerImpl.<init>(ServerImpl.java:71)
>> > >     at
>> > >
>> >
>> org.apache.cxf.frontend.ServerFactoryBean.create(ServerFactoryBean.java:14
>> > > 9) at
>> > >
>> >
>> org.apache.cxf.jaxws.JaxWsServerFactoryBean.create(JaxWsServerFactoryBean.
>> > > java:183) at
>> > >
>> >
>> org.apache.cxf.jaxws.EndpointImpl.getServer(EndpointImpl.java:407)
>> > at
>> > >
>> >
>> org.apache.cxf.jaxws.EndpointImpl.doPublish(EndpointImpl.java:314)
>> > ... 45
>> > > more
>> > >
>> > > --- On Fri, 10/29/10, Daniel Kulp <dkulp@apache.org>
>> > wrote:
>> > > > From: Daniel Kulp <dkulp@apache.org>
>> > > > Subject: Re: Problem using LocalTransport
>> in
>> > Tomcat
>> > > > To: users@cxf.apache.org
>> > > > Cc: "Joe Lin" <guava01@yahoo.com>
>> > > > Date: Friday, October 29, 2010, 12:21 PM
>> > > > On Friday 29 October 2010 3:03:06 pm
>> > > >
>> > > > Joe Lin wrote:
>> > > > > Hi, I have two Jax-WS service endpoints
>> that
>> > I
>> > > >
>> > > > configure using the
>> > > >
>> > > > > CXFServlet transport as the following
>> (in
>> > beans.xml):
>> > > > >
>> > > > >
>> > =============================================
>> > > > >     <jaxws:endpoint
>> > > >
>> > > > id="orderProcess"
>> > > >
>> > > > >
>> implementor="demo.order.OrderProcessImpl"
>> > > >
>> > > > address="/OrderProcess" />
>> > > >
>> > > > > <jaxws:endpoint id="helloService"
>> > > >
>> > > > implementor="demo.order.HelloImpl"
>> > > >
>> > > > > address="/hello" />
>> > > >
>> > > >
>> =============================================
>> > > >
>> > > > > It all worked fine. And I'd like to
>> have
>> > another
>> > > >
>> > > > service that uses the
>> > > >
>> > > > > LocalTransport. So I copied the example
>> from
>> > the users
>> > > >
>> > > > guide in cxf
>> > > >
>> > > > > website.
>> > > > >
>> > > > >
>> > =============================================
>> > > > >     <bean
>> > > >
>> > > >
>> >
>> class="org.apache.cxf.transport.local.LocalTransportFactory"
>> > > >
>> > > > > lazy-init="false"> <property
>> > > >
>> > > > name="transportIds">
>> > > >
>> > > > >
>> > > >
>> > > >    <list>
>> > > >
>> > > > >
>> >
>> > > >
>> > > >    <value>http://cxf.apache.org/transports/local</value>
>> > > >
>> > > > >
>> >
>> > > >
>> > > >    <value>http://schemas.xmlsoap.org/soap/http</value>
>> > > >
>> > > > >
>> >
>> > > >
>> > > >    <value>http://schemas.xmlsoap.org/wsdl/soap/http</value>
>> > > >
>> > > > Hmm... not sure why those last two URI's
>> are
>> > > > there.   Don't do
>> > that.   That
>> > > >
>> > > > will likely cause other issues as other
>> things
>> > will start
>> > > > using the local
>> > > > transport instead.
>> > > >
>> > > > BTW: you could just do:
>> > > > <import
>> > > >
>> >
>> resource="classpath:META-INF/cxf/cxf-extension-local.xml"/>
>> > > > instead.
>> > > >
>> > > > >
>> > > >
>> > > >    </list>
>> > > >
>> > > > >
>> >    </property>
>> > > > >
>> > > > >     </bean>
>> > > > >
>> > > > >
>> >    <jaxws:endpoint
>> > > >
>> > > > id="helloLocal" address="local://hello"
>> > > >
>> > > > >
>> implementor="demo.order.HelloImpl2"/>
>> > > > >
>> > > > >     <jaxws:endpoint
>> > > >
>> > > > id="orderProcess"
>> > > >
>> > > > >
>> implementor="demo.order.OrderProcessImpl"
>> > > >
>> > > > address="/OrderProcess" />
>> > > >
>> > > > > <jaxws:endpoint id="helloService"
>> > > >
>> > > > implementor="demo.order.HelloImpl"
>> > > >
>> > > > > address="/hello" />
>> > > > >
>> > > > >
>> > =============================================
>> > > > >
>> > > > >
>> > > > >
>> > > > > But I'm getting this in catalina.out:
>> > > > >
>> > =============================================
>> > > >
>> > > >
>> >
>> org.springframework.beans.factory.BeanCreationException:
>> > > > Error creating
>> > > >
>> > > > > bean with name 'helloLocal': Invocation
>> of
>> > init method
>> > > >
>> > > > failed; nested
>> > > >
>> > > > > exception is
>> > javax.xml.ws.WebServiceException:
>> > > > > java.lang.NullPointerException at
>> > > >
>> > > >
>> >
>> org.springframework.beans.factory.support.AbstractAutowireCapableBeanFact
>> > > > o
>> > > >
>> > > >
>> >
>> ry.initializeBean(AbstractAutowireCapableBeanFactory.java:1420)
>> > > > at
>> > > >
>> > > >
>> >
>> org.springframework.beans.factory.support.AbstractAutowireCapableBeanFact
>> > > > o
>> > > >
>> > > >
>> >
>> ry.doCreateBean(AbstractAutowireCapableBeanFactory.java:519)
>> > > >
>> > > > >
>> > ===============================================
>> > > >
>> > > > Is there more to that stack trace?
>> > Normally
>> > > > there would be a "caused by"
>> > > > thing with more lines.
>> >
>> > --
>> > Daniel Kulp
>> > dkulp@apache.org
>> > http://dankulp.com/blog
>> >
>>
>>
>>
>>
>
>
>
>

Mime
View raw message