You are viewing a plain text version of this content. The canonical link for it is here.
Posted to users@cxf.apache.org by hdave <da...@gmail.com> on 2012/01/04 21:18:14 UTC

Problems creating first CXF REST web service

Total newbie here trying to get my first REST based web service up and
running using CXF.  The problem I am having is that when I go to a URL in
Firefox to see the result of the web service, I am getting an HTTP error 400
- Bad Request.  I get the same problem when running in either Tomcat or
Jetty.

I probably have something misconfigured as I am seeing a number of potential
issues in the log when I start up my webapp.  The URL I am browsing to is:

http://localhost:9999/rest/security/serverDateTime

Any help is appreciated, I've been banging my head on this for 2 days and
can't figure out what is wrong.

Here is the CXF portion of the log (DEBUG).  Notice CXF complains about not
finding a definition for my service bean.  Weird that Spring does not
complain.  I know the bean is there and works because I have used it from
other code.

I should also add that when I browse to my welcome file, I also see nothing
and get a 400.

--------------------
[20120104 14:07:51] [main] DEBUG
[org.apache.cxf.configuration.spring.ConfigurerImpl] LogUtils.doLog(372) |
Could not determine bean name for instance of class
org.apache.cxf.binding.xml.XMLBindingFactory.
[20120104 14:07:51] [main] DEBUG
[org.apache.cxf.configuration.spring.ConfigurerImpl] LogUtils.doLog(372) |
Could not determine bean name for instance of class
org.apache.cxf.service.factory.FactoryBeanListenerManager.
[20120104 14:07:51] [main] DEBUG
[org.apache.cxf.configuration.spring.ConfigurerImpl] LogUtils.doLog(372) |
Could not determine bean name for instance of class
org.apache.cxf.transport.http.HTTPTransportFactory.
[20120104 14:07:52] [main] DEBUG
[org.apache.cxf.configuration.spring.ConfigurerImpl]
ConfigurerImpl.configureBean(160) | Could not find a definition for bean
with id
{http://impl.security.service.core.myapp.com/}SecurityServiceImpl.http-destination
- no injection will be performed.
[20120104 14:07:52] [main] INFO [org.apache.cxf.endpoint.ServerImpl]
ServerImpl.initDestination(94) | Setting the server's publish address to be
/rest
[20120104 14:07:52] [main] DEBUG
[org.apache.cxf.configuration.spring.ConfigurerImpl] LogUtils.doLog(372) |
Could not determine bean name for instance of class
org.apache.cxf.buslifecycle.CXFBusLifeCycleManager.
[20120104 14:07:52] [main] DEBUG
[org.apache.cxf.configuration.spring.ConfigurerImpl] LogUtils.doLog(372) |
Could not determine bean name for instance of class
org.apache.cxf.endpoint.ServerRegistryImpl.
[20120104 14:07:52] [main] DEBUG
[org.apache.cxf.configuration.spring.ConfigurerImpl] LogUtils.doLog(372) |
Could not determine bean name for instance of class
org.apache.cxf.endpoint.ServerLifeCycleManagerImpl.
[20120104 14:07:52] [main] DEBUG [org.apache.cxf.endpoint.ServerImpl]
ServerImpl.start(126) | Server is starting.
[20120104 14:07:52] [main] DEBUG
[org.apache.cxf.transport.servlet.ServletDestination]
AbstractObservable.setMessageObserver(45) | registering incoming observer:
org.apache.cxf.transport.ChainInitiationObserver@808512
[20120104 14:07:52] [main] DEBUG [org.apache.cxf.endpoint.ServerImpl]
ServerImpl.start(136) | register the server to serverRegistry 
--------------------

web.xml (partial):

--------------------
	<context-param>
		<param-name>contextConfigLocation</param-name>
		<param-value>/WEB-INF/applicationContext.xml</param-value>
	</context-param>

	<listener>
	
<listener-class>org.springframework.web.context.ContextLoaderListener</listener-class>
	</listener>

	<welcome-file-list>
		<welcome-file>MyAppCore.html</welcome-file>
	</welcome-file-list>

	<servlet>
		<display-name>MyApp Core REST Services</display-name>
		<servlet-name>MyAppCoreWebServices</servlet-name>
		<servlet-class>org.apache.cxf.transport.servlet.CXFServlet</servlet-class>
		<load-on-startup>1</load-on-startup>
	</servlet>

	<servlet-mapping>
		<servlet-name>MyAppCoreWebServices</servlet-name>
		<url-pattern>/*</url-pattern>
	</servlet-mapping>
--------------------


applicationContext.xml (partial):

--------------------

	<bean id="securityService"
class="com.sbevision.core.service.security.impl.SecurityServiceImpl">
		<constructor-arg index="0" ref="userDAO" />
		<constructor-arg index="1" ref="serverInfo" />
	</bean>


	<import resource="classpath:META-INF/cxf/cxf.xml" />
	<import resource="classpath:META-INF/cxf/cxf-servlet.xml" />

	<jaxrs:server id="myAppCoreSvcRest" address="/rest">
		<jaxrs:serviceBeans>
			<ref bean="securityService" />
		</jaxrs:serviceBeans>
	</jaxrs:server>
--------------------


SecurityServiceImpl.java (partial):

--------------------
@Transactional
@Path("/security")
public class SecurityServiceImpl
		implements SecurityService {

        ... constructor and other details omitted for brevity.....

	@GET
	@Path("/serverDateTime")
	@Produces("text/plain")
	@Override
	public String getServerDateTime() {
		DateFormatter formatter = new DateFormatter("dd/MM/yyyy hh:mm:ss");
		return formatter.print(Calendar.getInstance().getTime(),
Locale.getDefault());
	}

}
--------------------



--
View this message in context: http://cxf.547215.n5.nabble.com/Problems-creating-first-CXF-REST-web-service-tp5120711p5120711.html
Sent from the cxf-user mailing list archive at Nabble.com.