cxf-dev mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From Brad O'Hearne <br...@neurofire.com>
Subject Re: [Fwd: Re: Exception loading CXF service in Spring with HTTP Binding]
Date Sat, 14 Jul 2007 06:08:22 GMT
Dan,

I appreciate the reply, but I think you may have the wrong idea. I'm 
very patient, but this isn't a function of me, or something personal. It 
is the function of a deadline which doesn't really consider my own 
personal feelings in the matter, another API which presented an issue 
which necessitated the need to get out of WSDL-bound soap web services 
immediately, the fact that very little in this regard is documented in 
CXF, and the exception thrown gives no useful information to a user. 
With regards to the timing of my post and your read on my patience -- 
I've basically burned the better part of 2 days on trying to configure 
CXF / debug / scour Google / read API source / read the User's guide for 
direction on what is a standard advertised feature of the API, which I 
cannot find. The reason I'm asking the question with urgency is so that 
I *can* invest our project in CXF long term, not so I can get away from 
it. And I passed this urgency onto the list so that anyone with an 
answer would understand this urgency, realize its the difference between 
having another product built on the API, or not using it at all, and 
reply soon, since as you pointed out, it was the end of the working 
week, and might otherwise wait until Monday. If it were up to me, I'd be 
fine to wait a week for an answer. But it isn't up to me. It isn't some 
kind of personal affront. Please don't take it that way.

I have tried three different forms of the @WebService attribute. I have 
tried just:

@WebService
public interface ....

then I've tried adding a namespace:

@WebService (targetNamespace = "service/brad/com")
public interface ....

and then I've tried adding a service name

@WebService (serviceName = "UserService",
                        targetNamespace = "service/brad/com")
public interface ....

All three fail identically.

Thanks for your help. It is greatly appreciated. And again, my purpose 
was not to be impatient. I was faced with a choice of putting out an 
urgent call for help, and if things went well, getting to be a daily 
user of the API, or basically punting immediately. I opted for the 
former, as I want to use CXF, as it appears you guys have put together a 
great product.

Cheers,

Brad

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)
>>
>>
>>
>>
>
>


Mime
View raw message