Dan,

Regarding your advice:

<snip>
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"/>
</snip>

Apparently, adding a serviceClass attribute isn't legal. I added this as such to my beans.xml file:

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

And here's the error that I received when the server tried to load the webapp:

ERROR [main] (ContextLoader.java:203) - Context initialization failed
org.springframework.beans.factory.xml.XmlBeanDefinitionStoreException: Line 26 in XML document from ServletContext resource [/WEB-INF/beans.xml] is invalid; nested exception is org.xml.sax.SAXParseException: cvc-complex-type.3.2.2: Attribute 'serviceClass' is not allowed to appear in element 'jaxws:endpoint'.
Caused by:
org.xml.sax.SAXParseException: cvc-complex-type.3.2.2: Attribute 'serviceClass' is not allowed to appear in element 'jaxws:endpoint'. at com.sun.org.apache.xerces.internal.util.ErrorHandlerWrapper.createSAXParseException(ErrorHandlerWrapper.java:236) at com.sun.org.apache.xerces.internal.util.ErrorHandlerWrapper.error(ErrorHandlerWrapper.java:172)

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 <[EMAIL PROTECTED]> 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 <[EMAIL PROTECTED]>
To: [EMAIL PROTECTED]
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)







Reply via email to