cxf-dev mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From "Dan Diephouse" <...@envoisolutions.com>
Subject Re: [Fwd: Re: Exception loading CXF service in Spring with HTTP Binding]
Date Sat, 14 Jul 2007 17:45:36 GMT
OK, I wrote a test case and I see whats happening now. Unfortunately when
using EndpointImpl (which <jaxws:endpoint> does), somehow the HTTP Binding
seems to be looking for the annotations on the impl class instead of the
interface class :-\.

Try this instead:


   <jaxws:server id="userService"
       serviceClass="com.brad.user.IUserService"
       implementor="com.brad.user.UserService"
       address="/UserService"
       bindingUri="http://apache.org/cxf/binding/http">
       <jaxws:serviceFactory>
           <ref bean="JaxWsServiceFactoryBean" />
       </jaxws:serviceFactory>
   </jaxws:server>

Notice that its jaxws:server, not jaxws:endpoint. (This creates a CXF Server
object instead of a JAX-WS Endpoint object and allows more control of how
CXF creates the service). This will tell CXF to look at the IUserService for
annotations.

I'll fix this bug in SVN later today, but in the meantime that should work.

Cheers,
- Dan

On 7/14/07, Brad O'Hearne <brado@neurofire.com> wrote:
>
> Dan,
>
> I just tried the endpointInterface attribute now on my implementation
> class, while leaving just the @WebService and method annotations on my
> interface class, as follows:
>
> @WebService (endpointInterface = "com.brad.user.IUserService")
> public class UserService implements IUserService {...
>
> @WebService
> public interface IUserService {
>
> As stated, I left the annotations on my one method in IUserService. I
> annotated no methods in UserService. The full output / error I get is
> below. The interesting thing is that these methods that the log shows
> are being set up exist only in the implementation class, and are not
> annotated. They do not exist in the interface class. The one method that
> is annotated in my interface class, getUsers(), is never mentioned.
>
> INFO: Creating Service {http://user.brad.com/}UserServiceService from
> class com.brad.user.UserService
> DEBUG [main] (AbstractBeanFactory.java:203) - Returning cached instance
> of singleton bean '
> org.apache.cxf.transport.servlet.ServletTransportFactory'
> DEBUG [main] (AbstractBeanFactory.java:203) - Returning cached instance
> of singleton bean '
> org.apache.cxf.transport.servlet.ServletTransportFactory'
> DEBUG [main] (AbstractBeanFactory.java:203) - Returning cached instance
> of singleton bean '
> org.apache.cxf.transport.servlet.ServletTransportFactory'
> DEBUG [main] (AbstractBeanFactory.java:203) - Returning cached instance
> of singleton bean '
> org.apache.cxf.transport.servlet.ServletTransportFactory'
> DEBUG [main] (AbstractBeanFactory.java:203) - Returning cached instance
> of singleton bean '
> org.apache.cxf.transport.servlet.ServletTransportFactory'
> DEBUG [main] (AbstractBeanFactory.java:203) - Returning cached instance
> of singleton bean '
> org.apache.cxf.transport.servlet.ServletTransportFactory'
> Jul 14, 2007 10:01:59 AM
> org.apache.cxf.binding.http.strategy.ConventionStrategy map
> INFO: Mapping method createUser to resource /eUsers and verb POST
> Jul 14, 2007 10:01:59 AM
> org.apache.cxf.binding.http.strategy.ConventionStrategy map
> INFO: Mapping method modifyUser to resource /modifyUser and verb POST
> Jul 14, 2007 10:01:59 AM
> org.apache.cxf.binding.http.strategy.ConventionStrategy map
> INFO: Mapping method authenticate to resource /authenticate and verb POST
> Jul 14, 2007 10:01:59 AM
> org.apache.cxf.binding.http.strategy.ConventionStrategy map
> INFO: Mapping method deleteUser to resource /users and verb DELETE
> INFO [main] (DefaultSingletonBeanRegistry.java:285) - Destroying
> singletons in
>
> org.springframework.beans.factory.support.DefaultListableBeanFactory@1248979
> :
> defining beans
> [cxf,org.apache.cxf.bus.spring.Jsr250BeanPostProcessor,
> org.apache.cxf.bus.spring.BusExtensionPostProcessor,
> org.apache.cxf.resource.ResourceManager,
> org.apache.cxf.binding.BindingFactoryManager,
> org.apache.cxf.transport.DestinationFactoryManager,
> org.apache.cxf.transport.ConduitInitiatorManager,
> org.apache.cxf.wsdl.WSDLManager,org.apache.cxf.phase.PhaseManager,
> org.apache.cxf.workqueue.WorkQueueManager,
> org.apache.cxf.buslifecycle.BusLifeCycleManager,
> org.apache.cxf.endpoint.ServerRegistry,
> org.apache.cxf.endpoint.ServerLifeCycleManager,
> org.apache.cxf.endpoint.ClientLifeCycleManager,
> org.apache.cxf.transports.http.QueryHandlerRegistry,
> org.apache.cxf.endpoint.EndpointResolverRegistry,
> org.apache.cxf.headers.HeaderManager,
> org.apache.cxf.catalog.OASISCatalogManager,
> org.apache.cxf.binding.http.HttpBindingFactory,
> org.apache.cxf.transport.servlet.ServletTransportFactory
> ,JaxWsServiceFactoryBean,userService];
> root of factory hierarchy
> DEBUG [main] (DefaultSingletonBeanRegistry.java:337) - Retrieved
> dependent beans for bean 'JaxWsServiceFactoryBean': [userService]
> DEBUG [main] (DefaultSingletonBeanRegistry.java:337) - Retrieved
> dependent beans for bean
> 'org.apache.cxf.configuration.spring.SpringBeanMap#1c2a1ed':
> [org.apache.cxf.transport.ConduitInitiatorManager]
> DEBUG [main] (DefaultSingletonBeanRegistry.java:337) - Retrieved
> dependent beans for bean
> 'org.apache.cxf.configuration.spring.SpringBeanMap#7ab40c':
> [org.apache.cxf.transport.DestinationFactoryManager]
> DEBUG [main] (DefaultSingletonBeanRegistry.java:337) - Retrieved
> dependent beans for bean
> 'org.apache.cxf.configuration.spring.SpringBeanMap#117c0eb':
> [org.apache.cxf.binding.BindingFactoryManager]
> DEBUG [main] (DefaultSingletonBeanRegistry.java:337) - Retrieved
> dependent beans for bean
> 'org.apache.cxf.resource.ClassLoaderResolver#19c5048':
> [org.apache.cxf.resource.ResourceManager]
> DEBUG [main] (DefaultSingletonBeanRegistry.java:337) - Retrieved
> dependent beans for bean
> 'org.apache.cxf.resource.ClasspathResolver#17d2f0e':
> [org.apache.cxf.resource.ResourceManager]
> ERROR [main] (ContextLoader.java:203) - Context initialization failed
> org.springframework.beans.factory.BeanCreationException: Error creating
> bean with name 'userService': Invocation of init method failed; nested
> exception is java.lang.IndexOutOfBoundsException: No group 1
> Caused by:
> java.lang.IndexOutOfBoundsException: No group 1
>     at java.util.regex.Matcher.group(Matcher.java:463)
>     at java.util.regex.Matcher.appendReplacement(Matcher.java:730)
>     at java.util.regex.Matcher.replaceAll(Matcher.java:806)
>     at
> org.apache.cxf.binding.http.strategy.Inflector.pluralize(Inflector.java
> :72)
>     at
> org.apache.cxf.binding.http.strategy.ConventionStrategy.extractNoun(
> ConventionStrategy.java:148)
>     at
> org.apache.cxf.binding.http.strategy.ConventionStrategy.map(
> ConventionStrategy.java:88)
>     at
> org.apache.cxf.binding.http.HttpBindingFactory.createBindingInfo(
> HttpBindingFactory.java:100)
>     at
> org.apache.cxf.frontend.AbstractEndpointFactory.createBindingInfo(
> AbstractEndpointFactory.java:274)
>     at
> org.apache.cxf.jaxws.JaxWsServerFactoryBean.createBindingInfo(
> JaxWsServerFactoryBean.java:124)
>     at
> org.apache.cxf.frontend.AbstractEndpointFactory.createEndpointInfo(
> AbstractEndpointFactory.java:191)
>     at
> org.apache.cxf.frontend.AbstractEndpointFactory.createEndpoint(
> AbstractEndpointFactory.java:105)
>     at
> org.apache.cxf.frontend.ServerFactoryBean.create(ServerFactoryBean.java
> :89)
>     at
> org.apache.cxf.jaxws.JaxWsServerFactoryBean.create(
> JaxWsServerFactoryBean.java:142)
>     at org.apache.cxf.jaxws.EndpointImpl.getServer(EndpointImpl.java:277)
>     at org.apache.cxf.jaxws.EndpointImpl.doPublish(EndpointImpl.java:223)
>     at org.apache.cxf.jaxws.EndpointImpl.publish(EndpointImpl.java:175)
>     at org.apache.cxf.jaxws.EndpointImpl.publish(EndpointImpl.java:329)
>     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.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.invokeCustomInitMethod
> (AbstractAutowireCapableBeanFactory.java:1240)
>     at
>
> org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.invokeInitMethods
> (AbstractAutowireCapableBeanFactory.java:1205)
>     at
>
> org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.initializeBean
> (AbstractAutowireCapableBeanFactory.java:1171)
>     at
>
> org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.createBean
> (AbstractAutowireCapableBeanFactory.java:425)
>     at
> org.springframework.beans.factory.support.AbstractBeanFactory$1.getObject(
> AbstractBeanFactory.java:251)
>     at
>
> org.springframework.beans.factory.support.DefaultSingletonBeanRegistry.getSingleton
> (DefaultSingletonBeanRegistry.java:156)
>     at
> org.springframework.beans.factory.support.AbstractBeanFactory.getBean(
> AbstractBeanFactory.java:248)
>     at
> org.springframework.beans.factory.support.AbstractBeanFactory.getBean(
> AbstractBeanFactory.java:160)
>     at
>
> org.springframework.beans.factory.support.DefaultListableBeanFactory.preInstantiateSingletons
> (DefaultListableBeanFactory.java:287)
>     at
> org.springframework.context.support.AbstractApplicationContext.refresh(
> AbstractApplicationContext.java:352)
>     at
> org.springframework.web.context.ContextLoader.createWebApplicationContext(
> ContextLoader.java:244)
>     at
> org.springframework.web.context.ContextLoader.initWebApplicationContext(
> ContextLoader.java:187)
>     at
> org.springframework.web.context.ContextLoaderListener.contextInitialized(
> ContextLoaderListener.java:49)
>     at
> org.apache.catalina.core.StandardContext.listenerStart(
> StandardContext.java:3826)
>     at
> org.apache.catalina.core.StandardContext.start(StandardContext.java:4335)
>     at
> org.apache.catalina.core.ContainerBase.addChildInternal(ContainerBase.java
> :759)
>     at
> org.apache.catalina.core.ContainerBase.addChild(ContainerBase.java:739)
>     at org.apache.catalina.core.StandardHost.addChild(StandardHost.java
> :524)
>     at org.apache.catalina.startup.HostConfig.deployWAR(HostConfig.java
> :824)
>     at
> org.apache.catalina.startup.HostConfig.deployWARs(HostConfig.java:713)
>     at
> org.apache.catalina.startup.HostConfig.deployApps(HostConfig.java:489)
>     at org.apache.catalina.startup.HostConfig.start(HostConfig.java:1137)
>     at
> org.apache.catalina.startup.HostConfig.lifecycleEvent(HostConfig.java:310)
>     at
> org.apache.catalina.util.LifecycleSupport.fireLifecycleEvent(
> LifecycleSupport.java:119)
>     at org.apache.catalina.core.ContainerBase.start(ContainerBase.java
> :1021)
>     at org.apache.catalina.core.StandardHost.start(StandardHost.java:718)
>     at org.apache.catalina.core.ContainerBase.start(ContainerBase.java
> :1013)
>     at
> org.apache.catalina.core.StandardEngine.start(StandardEngine.java:442)
>     at
> org.apache.catalina.core.StandardService.start(StandardService.java:450)
>     at
> org.apache.catalina.core.StandardServer.start(StandardServer.java:709)
>     at org.apache.catalina.startup.Catalina.start(Catalina.java:551)
>     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.startup.Bootstrap.start(Bootstrap.java:287)
>     at org.apache.catalina.startup.Bootstrap.main(Bootstrap.java:412)
> Jul 14, 2007 10:01:59 AM org.apache.catalina.core.StandardContext
> listenerStart
> SEVERE: Exception sending context initialized event to listener instance
> of class org.springframework.web.context.ContextLoaderListener
> org.springframework.beans.factory.BeanCreationException: Error creating
> bean with name 'userService': Invocation of init method failed; nested
> exception is java.lang.IndexOutOfBoundsException: No group 1
> Caused by: java.lang.IndexOutOfBoundsException: No group 1
>     at java.util.regex.Matcher.group(Matcher.java:463)
>     at java.util.regex.Matcher.appendReplacement(Matcher.java:730)
>     at java.util.regex.Matcher.replaceAll(Matcher.java:806)
>     at
> org.apache.cxf.binding.http.strategy.Inflector.pluralize(Inflector.java
> :72)
>     at
> org.apache.cxf.binding.http.strategy.ConventionStrategy.extractNoun(
> ConventionStrategy.java:148)
>     at
> org.apache.cxf.binding.http.strategy.ConventionStrategy.map(
> ConventionStrategy.java:88)
>     at
> org.apache.cxf.binding.http.HttpBindingFactory.createBindingInfo(
> HttpBindingFactory.java:100)
>     at
> org.apache.cxf.frontend.AbstractEndpointFactory.createBindingInfo(
> AbstractEndpointFactory.java:274)
>     at
> org.apache.cxf.jaxws.JaxWsServerFactoryBean.createBindingInfo(
> JaxWsServerFactoryBean.java:124)
>     at
> org.apache.cxf.frontend.AbstractEndpointFactory.createEndpointInfo(
> AbstractEndpointFactory.java:191)
>     at
> org.apache.cxf.frontend.AbstractEndpointFactory.createEndpoint(
> AbstractEndpointFactory.java:105)
>     at
> org.apache.cxf.frontend.ServerFactoryBean.create(ServerFactoryBean.java
> :89)
>     at
> org.apache.cxf.jaxws.JaxWsServerFactoryBean.create(
> JaxWsServerFactoryBean.java:142)
>     at org.apache.cxf.jaxws.EndpointImpl.getServer(EndpointImpl.java:277)
>     at org.apache.cxf.jaxws.EndpointImpl.doPublish(EndpointImpl.java:223)
>     at org.apache.cxf.jaxws.EndpointImpl.publish(EndpointImpl.java:175)
>     at org.apache.cxf.jaxws.EndpointImpl.publish(EndpointImpl.java:329)
>     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.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.invokeCustomInitMethod
> (AbstractAutowireCapableBeanFactory.java:1240)
>     at
>
> org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.invokeInitMethods
> (AbstractAutowireCapableBeanFactory.java:1205)
>     at
>
> org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.initializeBean
> (AbstractAutowireCapableBeanFactory.java:1171)
>     at
>
> org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.createBean
> (AbstractAutowireCapableBeanFactory.java:425)
>     at
> org.springframework.beans.factory.support.AbstractBeanFactory$1.getObject(
> AbstractBeanFactory.java:251)
>     at
>
> org.springframework.beans.factory.support.DefaultSingletonBeanRegistry.getSingleton
> (DefaultSingletonBeanRegistry.java:156)
>     at
> org.springframework.beans.factory.support.AbstractBeanFactory.getBean(
> AbstractBeanFactory.java:248)
>     at
> org.springframework.beans.factory.support.AbstractBeanFactory.getBean(
> AbstractBeanFactory.java:160)
>     at
>
> org.springframework.beans.factory.support.DefaultListableBeanFactory.preInstantiateSingletons
> (DefaultListableBeanFactory.java:287)
>     at
> org.springframework.context.support.AbstractApplicationContext.refresh(
> AbstractApplicationContext.java:352)
>     at
> org.springframework.web.context.ContextLoader.createWebApplicationContext(
> ContextLoader.java:244)
>     at
> org.springframework.web.context.ContextLoader.initWebApplicationContext(
> ContextLoader.java:187)
>     at
> org.springframework.web.context.ContextLoaderListener.contextInitialized(
> ContextLoaderListener.java:49)
>     at
> org.apache.catalina.core.StandardContext.listenerStart(
> StandardContext.java:3826)
>     at
> org.apache.catalina.core.StandardContext.start(StandardContext.java:4335)
>     at
> org.apache.catalina.core.ContainerBase.addChildInternal(ContainerBase.java
> :759)
>     at
> org.apache.catalina.core.ContainerBase.addChild(ContainerBase.java:739)
>     at org.apache.catalina.core.StandardHost.addChild(StandardHost.java
> :524)
>     at org.apache.catalina.startup.HostConfig.deployWAR(HostConfig.java
> :824)
>     at
> org.apache.catalina.startup.HostConfig.deployWARs(HostConfig.java:713)
>     at
> org.apache.catalina.startup.HostConfig.deployApps(HostConfig.java:489)
>     at org.apache.catalina.startup.HostConfig.start(HostConfig.java:1137)
>     at
> org.apache.catalina.startup.HostConfig.lifecycleEvent(HostConfig.java:310)
>     at
> org.apache.catalina.util.LifecycleSupport.fireLifecycleEvent(
> LifecycleSupport.java:119)
>     at org.apache.catalina.core.ContainerBase.start(ContainerBase.java
> :1021)
>     at org.apache.catalina.core.StandardHost.start(StandardHost.java:718)
>     at org.apache.catalina.core.ContainerBase.start(ContainerBase.java
> :1013)
>     at
> org.apache.catalina.core.StandardEngine.start(StandardEngine.java:442)
>     at
> org.apache.catalina.core.StandardService.start(StandardService.java:450)
>     at
> org.apache.catalina.core.StandardServer.start(StandardServer.java:709)
>     at org.apache.catalina.startup.Catalina.start(Catalina.java:551)
>     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.startup.Bootstrap.start(Bootstrap.java:287)
>     at org.apache.catalina.startup.Bootstrap.main(Bootstrap.java:412)
> Jul 14, 2007 10:01:59 AM org.apache.catalina.core.StandardContext start
> SEVERE: Error listenerStart
> Jul 14, 2007 10:01:59 AM org.a
>
>
> Brad O'Hearne wrote:
> > Dan,
> >
> > I just tried the endpointInterface attribute on my interface class, as
> > follows:
> >
> > @WebService (endpointInterface = "com.brad.user.IUserService")
> > public interface IUserService {
> >
> > and here is the error I receive:
> >
> > ERROR [main] (ContextLoader.java:203) - Context initialization failed
> > org.springframework.beans.factory.BeanCreationException: Error
> > creating bean with name 'userService': Invocation of init method
> > failed; nested exception is javax.xml.ws.WebServiceException:
> > Attributes portName, serviceName and endpointInterface are not allowed
> > in the @WebService annotation of an SEI.
> > Caused by:
> > javax.xml.ws.WebServiceException: Attributes portName, serviceName and
> > endpointInterface are not allowed in the @WebService annotation of an
> > SEI.
> >    at
> > org.apache.cxf.jaxws.support.JaxWsImplementorInfo.initialise(
> JaxWsImplementorInfo.java:279)
> >
> >    at
> > org.apache.cxf.jaxws.support.JaxWsImplementorInfo.<init>(
> JaxWsImplementorInfo.java:57)
> >
> >
> > I think this probably goes back to the design pattern mentioned in my
> > previous post (annotations on the interface, none of the
> > implementation class). I'm guessing we are on the cusp of having this
> > solved.
> >
> > Thanks,
> >
> > Brad
> >
> > Brad O'Hearne wrote:
> >> Dan,
> >>
> >> I think you may have hit on the mystery here. I do not have an
> >> endpoint interface defined on my @WebService. But the rest of your
> >> answer below suggests that I may have done something else wrong in
> >> general. My annotations occur entirely in my interface, i.e.
> >>
> >> @WebService
> >> public interface IUserService ...
> >>
> >> and my implementing class has no annotations whatsoever, i.e.:
> >>
> >> public class UserService extends IUserService ...
> >>
> >> and from the past posts I have, you'll see that my beans.xml file
> >> references the implementation class, i.e.
> >>
> >>   <jaxws:endpoint id="userService"
> >>       serviceClass="com.brad.user.IUserService"
> >>       implementor="com.brad.user.UserService"
> >>       address="/UserService"
> >>       bindingUri="http://apache.org/cxf/binding/http"
> >>       >
> >>       <jaxws:serviceFactory>
> >>           <ref bean="JaxWsServiceFactoryBean" />
> >>       </jaxws:serviceFactory>
> >>   </jaxws:endpoint>
> >>
> >> This was the pattern used in XFire which worked, and the pattern set
> >> forth in the CXF user's guide, as in:
> >> http://cwiki.apache.org/CXF20DOC/http-binding.html
> >>
> >> But perhaps I've read it wrong. So I'll ask...
> >>
> >> 1. Should my annotations be on my implementation class or my
> >> interface class?
> >> 2. Depending on the answer to 1), if annotations are put in the
> >> interface, the endpointInterface attribute would logically always be
> >> the same name as that interface. Is this accurate?
> >> 3. Should the implementor attribute in the beans.xml jaxws:endpoint
> >> element reference the interface, or the imlementation?
> >>
> >> Thanks a ton for helping out Dan, it is sincerely appreciated. I'll
> >> throw that endpointInterface attribute on my @WebService annotation
> >> right now (which presently sits in my interface) and see what happens.
> >>
> >> Brad
> >>
> >> Dan Diephouse wrote:
> >>> Do you have an endpointInterface attribute defined on your
> @WebService?
> >>>
> >>> i.e. you should have:
> >>>
> >>> @WebService(endpointInterface="foo.bar.IUserService",
> >>> serviceName="UserService")
> >>> public class UserService ....
> >>>
> >>> (Note: the serviceName can only go on the impl class)
> >>>
> >>> @WebService
> >>> public class IUserService
> >>>
> >>> Regards,
> >>> - Dan
> >>>
> >>> On 7/14/07, Brad O'Hearne <brado@neurofire.com> wrote:
> >>>>
> >>>> Additionally, I don't know if this helps, but I found this line
> higher
> >>>> up in my log before the error occurs:
> >>>>
> >>>> INFO: Creating Service {http://user.brad.com/}UserServiceService from
> >>>> class com.brad.user.UserService
> >>>>
> >>>> The service "UserServiceService" looks a little weird, as I don't
> have
> >>>> it specified as that anywhere.
> >>>>
> >>>> B
> >>>>
> >>>> Dan Diephouse wrote:
> >>>> > Hi Brad,
> >>>> > Don't you think you're being a little impatient here? Your
> >>>> message is
> >>>> > from 6
> >>>> > PM on a FRIDAY (now 12 AM Saturday) and pretty much everyone has
> >>>> gone
> >>>> > home.
> >>>> > While I sympathize with your problem & timeline, I think you're
> >>>> being
> >>>> > quite
> >>>> > unrealistic in your expectations. I'm the one who wrote the code
> and
> >>>> > probably no one else around really feels qualified to answer this
> >>>> > question,
> >>>> > so everyone else is probably going to wait a reasonable amount of
> >>>> time
> >>>> > for
> >>>> > me to come back online. And I've been busy travelling.
> >>>> >
> >>>> > As to your error, it seems for some reason CXF isn't finding your
> >>>> > @httpresource annotation. What does the @WebService attribute look
> >>>> > like on
> >>>> > your CustomerService class? You could possibly try adding a
> >>>> serviceClass
> >>>> > attribute to your <jaxws:endpoint> and see if that will help:
> >>>> >
> >>>> > <jaxws:endpoint serviceClass="...IUserService"/>
> >>>> >
> >>>> > - Dan
> >>>> >
> >>>> >
> >>>> > On 7/13/07, Brad O'Hearne <brado@neurofire.com> wrote:
> >>>> >>
> >>>> >> Hello,
> >>>> >>
> >>>> >> I don't want to cross the line on asking questions to the dev
> >>>> list, but
> >>>> >> I'm in a bit of a bind here, and I need to get this worked out,
> >>>> and I
> >>>> >> think that posting this to the dev list may be appropriate for the
> >>>> >> following reasons:
> >>>> >>
> >>>> >> 1) It is in the realm where the documentation says the
> >>>> functionality
> >>>> >> exists, but doesn't say how to configure (i.e. a hole in the
> >>>> >> documentation).
> >>>> >> 2) The stack trace / error I am receiving I am guessing only a
> >>>> developer
> >>>> >> is going to likely understand -- it makes absolutely no sense at
> >>>> a user
> >>>> >> level.
> >>>> >> 3) The only reference I found to this error on Google was from
> last
> >>>> >> month on the developer list.
> >>>> >>
> >>>> >> The forwarded email explains my problem and stack trace, but in a
> >>>> >> nutshell, I just need to configure annotation based, SOAP-Free,
> >>>> Restful
> >>>> >> Http/xml services in Spring. Nothing tricky -- simple, standard,
> >>>> >> boilerplate need. I am having no luck, as my service loading
> >>>> fails. The
> >>>> >> stack trace is attached. Here is my web.xml file:
> >>>> >>
> >>>> >> <!DOCTYPE web-app
> >>>> >>    PUBLIC "-//Sun Microsystems, Inc.//DTD Web Application 2.3//EN"
> >>>> >>    "http://java.sun.com/dtd/web-app_2_3.dtd">
> >>>> >>
> >>>> >> <web-app>
> >>>> >>
> >>>> >>    <context-param>
> >>>> >>        <param-name>contextConfigLocation</param-name>
> >>>> >>        <param-value>WEB-INF/beans.xml</param-value>
> >>>> >>    </context-param>
> >>>> >>
> >>>> >>    <listener>
> >>>> >>        <listener-class>
> >>>> >>            org.springframework.web.context.ContextLoaderListener
> >>>> >>        </listener-class>
> >>>> >>    </listener>
> >>>> >>
> >>>> >>    <servlet>
> >>>> >>        <servlet-name>CXFServlet</servlet-name>
> >>>> >>        <display-name>CXF Servlet</display-name>
> >>>> >>        <servlet-class>
> >>>> >>            org.apache.cxf.transport.servlet.CXFServlet
> >>>> >>        </servlet-class>
> >>>> >>        <load-on-startup>1</load-on-startup>
> >>>> >>    </servlet>
> >>>> >>
> >>>> >>    <servlet-mapping>
> >>>> >>        <servlet-name>CXFServlet</servlet-name>
> >>>> >>        <url-pattern>/*</url-pattern>
> >>>> >>    </servlet-mapping>
> >>>> >>
> >>>> >> </web-app>
> >>>> >>
> >>>> >> Here is my beans.xml file:
> >>>> >>
> >>>> >> <beans xmlns="http://www.springframework.org/schema/beans"
> >>>> >>    xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
> >>>> >>    xmlns:jaxws="http://cxf.apache.org/jaxws"
> >>>> >>    xsi:schemaLocation="
> >>>> >>        http://www.springframework.org/schema/beans
> >>>> >>
> http://www.springframework.org/schema/beans/spring-beans.xsd
> >>>> >>        http://cxf.apache.org/jaxws
> >>>> >>        http://cxf.apache.org/schemas/jaxws.xsd
> >>>> >>        ">
> >>>> >>
> >>>> >>    <import resource="classpath:META-INF/cxf/cxf.xml" />
> >>>> >>    <import
> >>>> resource="classpath:META-INF/cxf/cxf-extension-soap.xml" />
> >>>> >>    <import
> >>>> >> resource="classpath:META-INF/cxf/cxf-extension-http-binding.xml"
> />
> >>>> >>    <import resource="classpath:META-INF/cxf/cxf-servlet.xml" />
> >>>> >>
> >>>> >>    <bean id="JaxWsServiceFactoryBean"
> >>>> >>
> >>>> class="org.apache.cxf.jaxws.support.JaxWsServiceFactoryBean">
> >>>> >>        <property name="wrapped" value="false" />
> >>>> >>    </bean>
> >>>> >>
> >>>> >>    <jaxws:endpoint id="userService"
> >>>> >>        implementor="com.brad.user.UserService"
> >>>> >>        address="/UserService"
> >>>> >>        bindingUri="http://apache.org/cxf/binding/http"
> >>>> >>        >
> >>>> >>        <jaxws:serviceFactory>
> >>>> >>            <ref bean="JaxWsServiceFactoryBean" />
> >>>> >>        </jaxws:serviceFactory>
> >>>> >>    </jaxws:endpoint>
> >>>> >>
> >>>> >> </beans>
> >>>> >>
> >>>> >> Here is my UserService interface:
> >>>> >>
> >>>> >> package com.brad.user;
> >>>> >>
> >>>> >> import javax.jws.WebService;
> >>>> >>
> >>>> >> import org.codehaus.jra.Get;
> >>>> >> import org.codehaus.jra.HttpResource;
> >>>> >>
> >>>> >> import com.brad.service.ServiceRequest;
> >>>> >> import com.brad.service.ServiceResponse;
> >>>> >>
> >>>> >> @WebService
> >>>> >> public interface IUserService {
> >>>> >>
> >>>> >>    @Get
> >>>> >>    @HttpResource(location = "/users")
> >>>> >>    ServiceResponse getUsers(ServiceRequest request);
> >>>> >> }
> >>>> >>
> >>>> >> Thanks in advance for the help. I'm to the end of my rope, with
> >>>> regards
> >>>> >> to my timeline, and I need to get this working, and qualify CXF
> >>>> as a
> >>>> >> service stack that can be used for this project, or else I'm
> >>>> going to
> >>>> >> have to punt this weekend and incur a ton of work basically
> >>>> duplicating
> >>>> >> what CXF already purports to do.
> >>>> >>
> >>>> >> Cheers,
> >>>> >>
> >>>> >> Brad
> >>>> >>
> >>>> >>
> >>>> >> ---------- Forwarded message ----------
> >>>> >> From: Brad O'Hearne <brado@neurofire.com>
> >>>> >> To: cxf-user@incubator.apache.org
> >>>> >> Date: Fri, 13 Jul 2007 17:09:28 -0700
> >>>> >> Subject: Re: Exception loading CXF service in Spring with HTTP
> >>>> Binding
> >>>> >> I'm appealing to anyone out there who can please help me with this
> >>>> >> problem. All I'm trying to do is standard configuration of a
> single
> >>>> >> service, with a single method, using Http binding, using Spring.
> >>>> If I
> >>>> >> cannot get this problem resolved soon, as much as I do not want
> >>>> to, I'm
> >>>> >> going to have to punt usage of both CXF and XFire, which I am
> >>>> migrating
> >>>> >> from. Simple, SOAP-free, RESTful HTTP service invocations
> >>>> configured in
> >>>> >> Spring -- that's it. The documentation says that this can be
> >>>> done, but
> >>>> >> doesn't give a complete description of how this can be done;
> Google
> >>>> >> gives a reference from last month about this, but no answers,
> >>>> and the
> >>>> >> API samples don't shed any light on it. It seems my
> >>>> configuration is
> >>>> >> close, but I'm starting to wonder if Http Binding in CXF actually
> >>>> works,
> >>>> >> as the there is little to no information available on it.
> >>>> >>
> >>>> >> If anyone is in the know about how to get this to work, I'd
> greatly
> >>>> >> appreciate it. I'm up against a deadline and I'll have to roll
> >>>> my own
> >>>> >> service stack if I have to wait several days to get this resolved.
> >>>> >>
> >>>> >> Thanks in advance for your help.
> >>>> >>
> >>>> >> Brad
> >>>> >>
> >>>> >> Brad O'Hearne wrote:
> >>>> >> > I am loading a simple CXF service using Spring, and an HTTP
> >>>> Binding.
> >>>> >> > It is throwing an Exception, which unfortunately is very
> cryptic,
> >>>> >> > gives me no idea of what the problem is, or how to fix it, and
> >>>> there's
> >>>> >> > not any solution I can find in the documentation or by
> >>>> searching in
> >>>> >> > Google. Does anyone have any idea what this Exception means
> >>>> and/or
> >>>> how
> >>>> >> > to fix it? Thanks...output is below:
> >>>> >> >
> >>>> >> > ERROR [main] (ContextLoader.java:203) - Context initialization
> >>>> failed
> >>>> >> > org.springframework.beans.factory.BeanCreationException: Error
> >>>> >> > creating bean with name 'userService': Invocation of init method
> >>>> >> > failed; nested exception is
> >>>> java.lang.IndexOutOfBoundsException: No
> >>>> >> > group 1
> >>>> >> > Caused by:
> >>>> >> > java.lang.IndexOutOfBoundsException: No group 1
> >>>> >> >   at java.util.regex.Matcher.group(Matcher.java:463)
> >>>> >> >   at java.util.regex.Matcher.appendReplacement(Matcher.java:730)
> >>>> >> >   at java.util.regex.Matcher.replaceAll(Matcher.java:806)
> >>>> >> >   at
> >>>> >> >
> >>>> >>
> >>>> org.apache.cxf.binding.http.strategy.Inflector.pluralize(
> Inflector.java
> >>>>
> >>>> >> :72)
> >>>> >> >
> >>>> >> >   at
> >>>> >> >
> >>>> org.apache.cxf.binding.http.strategy.ConventionStrategy.extractNoun(
> >>>> >> ConventionStrategy.java:148)
> >>>> >> >
> >>>> >> >   at
> >>>> >> > org.apache.cxf.binding.http.strategy.ConventionStrategy.map(
> >>>> >> ConventionStrategy.java:88)
> >>>> >> >
> >>>> >> >   at
> >>>> >> > org.apache.cxf.binding.http.HttpBindingFactory.createBindingInfo
> (
> >>>> >> HttpBindingFactory.java:100)
> >>>> >> >
> >>>> >> >   at
> >>>> >> >
> >>>> org.apache.cxf.frontend.AbstractEndpointFactory.createBindingInfo(
> >>>> >> AbstractEndpointFactory.java:274)
> >>>> >> >
> >>>> >> >   at
> >>>> >> > org.apache.cxf.jaxws.JaxWsServerFactoryBean.createBindingInfo(
> >>>> >> JaxWsServerFactoryBean.java:124)
> >>>> >> >
> >>>> >> >   at
> >>>> >> >
> >>>> org.apache.cxf.frontend.AbstractEndpointFactory.createEndpointInfo(
> >>>> >> AbstractEndpointFactory.java:191)
> >>>> >> >
> >>>> >> >   at
> >>>> >> > org.apache.cxf.frontend.AbstractEndpointFactory.createEndpoint(
> >>>> >> AbstractEndpointFactory.java:105)
> >>>> >> >
> >>>> >> >   at
> >>>> >> >
> >>>> >>
> >>>> org.apache.cxf.frontend.ServerFactoryBean.create(
> ServerFactoryBean.java
> >>>>
> >>>> >> :89)
> >>>> >> >
> >>>> >> >   at
> >>>> >> > org.apache.cxf.jaxws.JaxWsServerFactoryBean.create(
> >>>> >> JaxWsServerFactoryBean.java:142)
> >>>> >> >
> >>>> >> >   at
> >>>> >> org.apache.cxf.jaxws.EndpointImpl.getServer(EndpointImpl.java:277)
> >>>> >> >   at
> >>>> >> org.apache.cxf.jaxws.EndpointImpl.doPublish(EndpointImpl.java:223)
> >>>> >> >   at
> >>>> org.apache.cxf.jaxws.EndpointImpl.publish(EndpointImpl.java:175)
> >>>> >> >   at
> >>>> org.apache.cxf.jaxws.EndpointImpl.publish(EndpointImpl.java:329)
> >>>> >> >   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.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.invokeCustomInitMethod
> >>>>
> >>>> >>
> >>>> >> (AbstractAutowireCapableBeanFactory.java:1240)
> >>>> >> >
> >>>> >> >   at
> >>>> >> >
> >>>> >>
> >>>>
> org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.invokeInitMethods
> >>>>
> >>>> >>
> >>>> >> (AbstractAutowireCapableBeanFactory.java:1205)
> >>>> >> >
> >>>> >> >   at
> >>>> >> >
> >>>> >>
> >>>>
> org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.initializeBean
> >>>>
> >>>> >>
> >>>> >> (AbstractAutowireCapableBeanFactory.java:1171)
> >>>> >> >
> >>>> >> >   at
> >>>> >> >
> >>>> >>
> >>>>
> org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.createBean
> >>>>
> >>>> >>
> >>>> >> (AbstractAutowireCapableBeanFactory.java:425)
> >>>> >> >
> >>>> >> >   at
> >>>> >> >
> >>>> >>
> >>>>
> org.springframework.beans.factory.support.AbstractBeanFactory$1.getObject(
> >>>>
> >>>> >>
> >>>> >> AbstractBeanFactory.java:251)
> >>>> >> >
> >>>> >> >   at
> >>>> >> >
> >>>> >>
> >>>>
> org.springframework.beans.factory.support.DefaultSingletonBeanRegistry.getSingleton
> >>>>
> >>>> >>
> >>>> >> (DefaultSingletonBeanRegistry.java:156)
> >>>> >> >
> >>>> >> >   at
> >>>> >> >
>
> >>>> org.springframework.beans.factory.support.AbstractBeanFactory.getBean
> >>>> (
> >>>> >> AbstractBeanFactory.java:248)
> >>>> >> >
> >>>> >> >   at
> >>>> >> >
> >>>> org.springframework.beans.factory.support.AbstractBeanFactory.getBean
> >>>> (
> >>>> >> AbstractBeanFactory.java:160)
> >>>> >> >
> >>>> >> >   at
> >>>> >> >
> >>>> >>
> >>>>
> org.springframework.beans.factory.support.DefaultListableBeanFactory.preInstantiateSingletons
> >>>>
> >>>> >>
> >>>> >> (DefaultListableBeanFactory.java:287)
> >>>> >> >
> >>>> >> >   at
> >>>> >> >
> >>>> >>
> >>>>
> org.springframework.context.support.AbstractApplicationContext.refresh(
> >>>>
> >>>> >> AbstractApplicationContext.java:352)
> >>>> >> >
> >>>> >> >   at
> >>>> >> >
> >>>> >>
> >>>>
> org.springframework.web.context.ContextLoader.createWebApplicationContext(
> >>>>
> >>>> >>
> >>>> >> ContextLoader.java:244)
> >>>> >> >
> >>>> >> >   at
> >>>> >> >
> >>>> >>
> >>>>
> org.springframework.web.context.ContextLoader.initWebApplicationContext
> >>>>
> >>>> (
> >>>> >> ContextLoader.java:187)
> >>>> >> >
> >>>> >> >   at
> >>>> >> >
> >>>> >>
> >>>>
> org.springframework.web.context.ContextLoaderListener.contextInitialized
> >>>>
> >>>> >> (ContextLoaderListener.java:49)
> >>>> >> >
> >>>> >> >   at
> >>>> >> > org.apache.catalina.core.StandardContext.listenerStart(
> >>>> >> StandardContext.java:3826)
> >>>> >> >
> >>>> >> >   at
> >>>> >> >
> >>>> org.apache.catalina.core.StandardContext.start(StandardContext.java
> >>>> >> :4335)
> >>>> >> >   at
> >>>> >> > org.apache.catalina.core.ContainerBase.addChildInternal(
> >>>> >> ContainerBase.java:759)
> >>>> >> >
> >>>> >> >   at
> >>>> >> >
> >>>> >>
> >>>> org.apache.catalina.core.ContainerBase.addChild(ContainerBase.java
> :739)
> >>>>
> >>>> >> >   at
> >>>> >> >
> >>>> org.apache.catalina.core.StandardHost.addChild(StandardHost.java:524)
> >>>> >> >   at
> >>>> >> >
> >>>> org.apache.catalina.startup.HostConfig.deployWAR(HostConfig.java:824)
> >>>> >> >   at
> >>>> >> > org.apache.catalina.startup.HostConfig.deployWARs(
> HostConfig.java
> >>>> :713)
> >>>> >> >   at
> >>>> >> > org.apache.catalina.startup.HostConfig.deployApps(
> HostConfig.java
> >>>> :489)
> >>>> >> >   at
> >>>> >> org.apache.catalina.startup.HostConfig.start(HostConfig.java:1137)
> >>>> >> >   at
> >>>> >> >
> >>>> org.apache.catalina.startup.HostConfig.lifecycleEvent(HostConfig.java
> >>>> >> :310)
> >>>> >> >
> >>>> >> >   at
> >>>> >> > org.apache.catalina.util.LifecycleSupport.fireLifecycleEvent(
> >>>> >> LifecycleSupport.java:119)
> >>>> >> >
> >>>> >> >   at
> >>>> >> >
> >>>> org.apache.catalina.core.ContainerBase.start(ContainerBase.java:1021)
> >>>> >> >   at
> >>>> >> org.apache.catalina.core.StandardHost.start(StandardHost.java:718)
> >>>> >> >   at
> >>>> >> >
> >>>> org.apache.catalina.core.ContainerBase.start(ContainerBase.java:1013)
> >>>> >> >   at
> >>>> >> > org.apache.catalina.core.StandardEngine.start(
> StandardEngine.java
> >>>> :442)
> >>>> >> >   at
> >>>> >> >
> >>>> >> org.apache.catalina.core.StandardService.start(
> StandardService.java
> >>>> :450)
> >>>> >> >   at
> >>>> >> > org.apache.catalina.core.StandardServer.start(
> StandardServer.java
> >>>> :709)
> >>>> >> >   at
> >>>> org.apache.catalina.startup.Catalina.start(Catalina.java:551)
> >>>> >> >   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.startup.Bootstrap.start(Bootstrap.java:287)
> >>>> >> >   at
> >>>> org.apache.catalina.startup.Bootstrap.main(Bootstrap.java:412)
> >>>> >>
> >>>> >>
> >>>> >>
> >>>> >>
> >>>> >
> >>>> >
> >>>>
> >>>>
> >>>
> >>>
> >>
> >
>
>
>


-- 
Dan Diephouse
Envoi Solutions
http://envoisolutions.com | http://netzooid.com/blog

Mime
  • Unnamed multipart/alternative (inline, None, 0 bytes)
View raw message