Jersey + Spring integration example
This tutorial show you how to integrate Jersey web application with Spring framework.
Technologies used :
- Jersey 1.8
- Spring 3.0.5.RELEASE
- Eclipse 3.6
- Maven 3
1. Project Dependency
Declares Jersey 1.8, Spring3 and “jersey-spring.jar” dependencies in Maven pom.xml file.
Note
In “jersey-spring.jar” version, it will download all the Spring 2.5.6 dependencies. To use Spring 3, you need to exclude those old Spring libraries manually.
In “jersey-spring.jar” version, it will download all the Spring 2.5.6 dependencies. To use Spring 3, you need to exclude those old Spring libraries manually.
<repositories> <repository> <id>maven2-repository.java.net</id> <name>Java.net Repository for Maven</name> <url>http://download.java.net/maven/2/</url> </repository> </repositories> <dependencies> <!-- Jersey --> <dependency> <groupId>com.sun.jersey</groupId> <artifactId>jersey-server</artifactId> <version>1.8</version> </dependency> <!-- Spring 3 dependencies --> <dependency> <groupId>org.springframework</groupId> <artifactId>spring-core</artifactId> <version>3.0.5.RELEASE</version> </dependency> <dependency> <groupId>org.springframework</groupId> <artifactId>spring-context</artifactId> <version>3.0.5.RELEASE</version> </dependency> <dependency> <groupId>org.springframework</groupId> <artifactId>spring-web</artifactId> <version>3.0.5.RELEASE</version> </dependency> <!-- Jersey + Spring --> <dependency> <groupId>com.sun.jersey.contribs</groupId> <artifactId>jersey-spring</artifactId> <version>1.8</version> <exclusions> <exclusion> <groupId>org.springframework</groupId> <artifactId>spring</artifactId> </exclusion> <exclusion> <groupId>org.springframework</groupId> <artifactId>spring-core</artifactId> </exclusion> <exclusion> <groupId>org.springframework</groupId> <artifactId>spring-web</artifactId> </exclusion> <exclusion> <groupId>org.springframework</groupId> <artifactId>spring-beans</artifactId> </exclusion> <exclusion> <groupId>org.springframework</groupId> <artifactId>spring-context</artifactId> </exclusion> </exclusions> </dependency> </dependencies>
2. Spring Bean
A simple “transactionBo” bean is registered in Spring Ioc container. Later you will inject this bean into Jersey service.
package com.mkyong.transaction; public interface TransactionBo{ String save(); }
package com.mkyong.transaction.impl; import com.mkyong.transaction.TransactionBo; public class TransactionBoImpl implements TransactionBo { public String save() { return "Jersey + Spring example"; } }
File : applicationContext.xml – Register bean and enable the component auto scanning feature.
<beans xmlns="http://www.springframework.org/schema/beans" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:context="http://www.springframework.org/schema/context" xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans-3.0.xsd http://www.springframework.org/schema/context http://www.springframework.org/schema/context/spring-context-3.0.xsd"> <context:component-scan base-package="com.mkyong.rest" /> <bean id="transactionBo" class="com.mkyong.transaction.impl.TransactionBoImpl" /> </beans>
3. Jersey
In REST method, you can to auto inject the “transactionBo” bean from Spring into Jersey.
package com.mkyong.rest; import javax.ws.rs.GET; import javax.ws.rs.Path; import javax.ws.rs.core.Response; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Component; import com.mkyong.transaction.TransactionBo; @Component @Path("/payment") public class PaymentService { @Autowired TransactionBo transactionBo; @GET @Path("/mkyong") public Response savePayment() { String result = transactionBo.save(); return Response.status(200).entity(result).build(); } }
4. Integrate Jersey with Spring
The core integration is in web.xml
- Register Spring “
ContextLoaderListener” listener class - Change Jersey servlet from “
com.sun.jersey.spi.container.servlet.ServletContainer” to “com.sun.jersey.spi.spring.container.servlet.SpringServlet“.
File : web.xml
<web-app id="WebApp_ID" version="2.4" xmlns="http://java.sun.com/xml/ns/j2ee" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://java.sun.com/xml/ns/j2ee http://java.sun.com/xml/ns/j2ee/web-app_2_4.xsd"> <display-name>Restful Web Application</display-name> <context-param> <param-name>contextConfigLocation</param-name> <param-value>classpath:applicationContext.xml</param-value> </context-param> <listener> <listener-class> org.springframework.web.context.ContextLoaderListener </listener-class> </listener> <servlet> <servlet-name>jersey-serlvet</servlet-name> <servlet-class> com.sun.jersey.spi.spring.container.servlet.SpringServlet </servlet-class> <init-param> <param-name> com.sun.jersey.config.property.packages </param-name> <param-value>com.mkyong.rest</param-value> </init-param> <load-on-startup>1</load-on-startup> </servlet> <servlet-mapping> <servlet-name>jersey-serlvet</servlet-name> <url-pattern>/rest/*</url-pattern> </servlet-mapping> </web-app>
5. Demo
Download Source Code
Download it – Jersey-Spring-Integration-Example.zip (8 KB)
References
- Jersey Spring JavaDoc
- Spring 3 in Jersey
- Spring auto component scanning
- RESTEasy + Spring integration example
Tags : integration jersey spring

need another exclusion (spring-aop)
Hi,
Everything works fine for me except loading the values from property file for SpringContextLoaderListener. I am getting the below the exception
<User defined listener org.jboss.resteasy.plugins.spring.SpringContextLoaderListener failed: org.springframework.beans.factory.BeanCreationException: Error creating bean with name 'dropDownDataSource' defined in ServletContext resource [/WEB-INF/applicationContext.xml]: Invocation of init method failed; nested exception is javax.naming.NoInitialContextException: Cannot instantiate class: ${datasource.java.naming.factory.initial} [Root exception is java.lang.ClassNotFoundException: ${datasource.java.naming.factory.initial}].
org.springframework.beans.factory.BeanCreationException: Error creating bean with name 'dropDownDataSource' defined in ServletContext resource [/WEB-INF/applicationContext.xml]: Invocation of init method failed; nested exception is javax.naming.NoInitialContextException: Cannot instantiate class: ${datasource.java.naming.factory.initial} [Root exception is java.lang.ClassNotFoundException: ${datasource.java.naming.factory.initial}]
at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.initializeBean(AbstractAutowireCapableBeanFactory.java:1412)
at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.doCreateBean(AbstractAutowireCapableBeanFactory.java:519)
at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.createBean(AbstractAutowireCapableBeanFactory.java:456)
at org.springframework.beans.factory.support.AbstractBeanFactory$1.getObject(AbstractBeanFactory.java:291)
at org.springframework.beans.factory.support.DefaultSingletonBeanRegistry.getSingleton(DefaultSingletonBeanRegistry.java:222)
Truncated. see log file for complete stacktrace
where ${datasource.java.naming.factory.initial} is value which i am getting from a property file. let me know what i have done wrong here
Hello mkyong..
Thanks for this post.
I use struts2 + spring3 + hibernate for my application. I have implementing Jersey successfully. Now whenever i call the service at that time following error is occured.
[LazyInitializationException:110] failed to lazily initialize a collection of role:
no session or session was closed
org.codehaus.jackson.map.JsonMappingException: failed to lazily initialize a collection of role: com.aspire.hrms.model.OrganizationGeneralInfo.users, no session or session was closed (through reference chain: java.util.ArrayList[0]->com.aspire.hrms.model.Department["organization"]->com.aspire.hrms.model.OrganizationGeneralInfo["users"])
Hi mkyong,
What is the use of the line ‘Response.status(200).entity(result).build()’ in above application?
Hi mkyong,
can I please suggest me how to integrate REST using Spring HessianServiceExporter
Hi Mr. Yong,
Could you give an example how to integrate Jersey test framework with this example. I am using this example with MYSQL, Spring JDBC and Tomcat. But I can not make unit test working with configuration problems. I use this library.
Many thanks.
I am getting the error
The bean isnot getting instanciated. Please let me know
Hi, thx for tutorial. I have to fix my POM.xml with this..
Hi mkyong,
Will you please include a spring-jersey-jpa-hibernate blog on your site? I can’t find any working example on the internet.
hi i am using hersey + spring and JAXB annotation
i have annotated all my model classes and the controler layer is my WS where i ve pouted WS annotation
so i’ve got this messages ;
the problem is solved ; all my configuration is OK , it was problem related to the that i used to get an entity by id , instead of using get i have used load accidently
I followed the steps.I am using embedded jetty server and it’s not starting when i change servlet class name from
com.sun.jersey.spi.container.servlet.ServletContainer
to
com.sun.jersey.spi.spring.container.servlet.SpringServlet
sir,
1)we can use org.springframework.web.servlet.DispatcherServlet And com.sun.jersey.spi.spring.container.servlet.SpringServlet in a single Web.xml file ?
2)i am using both in a single web.xml file and some times it is working fine and some times not working the code. it is giving error like context initialization failed when i first start the application
3)My Web.xml file is
sir,
in which layer implementation is best for Web services(jersey) in Springs like 1)controller layer
2)service layer?.
Depends on your system requirement, web service can be implemented in both layers.
sir,
previously i am not using Jersey web service in my Spring applicatio, now i am using jersey web service in my app.what problem i am faceing now is previous my code is not working(i.e controllers to view), only web service code is working(i.e i copied your PaymentService class in my service layer only that class is accesible right now)
http://localhost:8080/spring-hibernate-mysql/krams/main/persons => my previous controller
giving Error like : java.lang.StringIndexOutOfBoundsException: String index out of range: -6
BUT
http://giri-pc:8080/spring-hibernate-mysql/krams/payment/mkyong
dISPLAYING lIKE THIS “Jersey + Spring example
Previous Web.xml File
pre lang=”xml”>
spring
org.springframework.web.servlet.DispatcherServlet
1
spring
/krams/*
org.springframework.web.context.ContextLoaderListener
After Integrating Jersey Web.xml
Thank you very much, you helped me in entire project through your blogs.
Hi, when after importing the project, when i am running i am getting this exception. Please help me to resolve this.
java.lang.NoClassDefFoundError: org/springframework/aop/support/AopUtils
at com.sun.jersey.spi.spring.container.SpringComponentProviderFactory.getInjectableInstance(SpringComponentProviderFactory.java:240)
I am also getting the same error.
HI,
I am using the Jersey+spring in my Project.
My problem is that,
If Some properties in my POJO is null, then these properties also being converted in JSON having value as null.
JSON Response:
{
“responseStatus”:”Success”,
“name”:”Anthony”,
“company”:null,
“address” : null
}
How to avoid sending null property in the JSON response to UI.
I have the Dependency mentioned in this example in POM, and Declared the POJOMappingFeature in Web.xml too.
Please help
Thank you so much. Great tutorial. I’ve used the same example with Spring 3.1.1 and it works great.
You made my day bro!
No need to exclude old spring libraries manually. You can configure POM.xml with exclusions. The list is missing spring-aop please modify the section to include below
section
Thanks man you saved my day thanks a lot :)
I am also getting the same ASM library error.I upgraded the jar from 2.2 to 3.1 and it worked fine.But I doubt it may break the Spring code because 2.2 version of asm was dependency of Spring 2.5 which I am using.
Is asm 3.1 compatible with Spring 2.5?
I am using Jersey1.8 with Spring.Jersey requires asm 3.1.
Hi Mkyong,
For deploying in Tomcat 6 we need to specify the context file location as follows.
contextConfigLocation classpath*:**/*Context.xmlPlease update the source code for others, thanks!
i’ve got this messages ;
19.Oca.2012 02:00:22 org.apache.catalina.core.AprLifecycleListener init
INFO: The APR based Apache Tomcat Native library which allows optimal performance in production environments was not found on the java.library.path: C:\Program Files (x86)\Java\jdk1.6.0_27\bin;C:\Windows\Sun\Java\bin;C:\Windows\system32;C:\Windows;C:\Program Files\ARM-RDVS\bin\win_32-pentium;C:\PHP\;C:\Program Files\Common Files\Microsoft Shared\Windows Live;C:\Program Files (x86)\Common Files\Microsoft Shared\Windows Live;C:\Program Files\ARM\bin\win_32-pentium;C:\Windows\system32;C:\Windows;C:\Windows\System32\Wbem;C:\Windows\System32\WindowsPowerShell\v1.0\;D:\gradle-1.0-milestone-3\bin;C:\Program Files (x86)\Java\jdk1.6.0_27\bin;D:\apache-ant-1.8.2\bin;C:\Program Files (x86)\glassfish3\glassfish\bin;D:\apache-maven-3.0.3\bin;C:\Program Files (x86)\Autodesk\Backburner\;C:\Program Files\Common Files\Autodesk Shared\;C:\Program Files (x86)\Heroku;C:\Program Files (x86)\git\bin;C:\Program Files (x86)\git\cmd;C:\Program Files (x86)\VisualSVN\bin;C:\Program Files (x86)\QuickTime\QTSystem\;C:\Program Files (x86)\MySQL\MySQL Server 5.1\bin;D:\curl;C:\Program Files (x86)\Calibre2\;C:\Keil\ARM\BIN40;C:\Program Files\ARM\RVI\Tools\3.3\106\programs\win_32-pentium;C:\Program Files\ARM\Utilities\FLEXlm\10.8.5.0\1\win_32-pentium;C:\Program Files\ARM\RVCT\Programs\4.0\400\win_32-pentium;C:\Program Files\ARM-RDVS\RVD\Core\4.0\1106\win_32-pentium\bin;C:\Program Files\ARM\RVD\Core\4.0\1106\win_32-pentium\bin;C:\Program Files\ARM\RVI\GDB\3.3\8;C:\Program Files (x86)\Windows Live\Shared;D:\appengine-java-sdk-1.6.1\bin;C:\Program Files (x86)\WinSCP\;C:\Program Files\ARM-RDVS\RVCT\Programs\4.0\400\win_32-pentium;C:\Program Files\ARM-RDVS\RVI\Tools\3.3\106\programs\win_32-pentium;C:\Program Files\ARM-RDVS\Utilities\FLEXlm\10.8.5.0\1\win_32-pentium;C:\Program Files\ARM-RDVS\RVI\GDB\3.3\8;.
19.Oca.2012 02:00:22 org.apache.tomcat.util.digester.SetPropertiesRule begin
WARNING: [SetPropertiesRule]{Server/Service/Engine/Host/Context} Setting property ‘source’ to ‘org.eclipse.jst.j2ee.server:RESTfulExample’ did not find a matching property.
19.Oca.2012 02:00:22 org.apache.coyote.http11.Http11Protocol init
INFO: Initializing Coyote HTTP/1.1 on http-8080
19.Oca.2012 02:00:22 org.apache.catalina.startup.Catalina load
INFO: Initialization processed in 461 ms
19.Oca.2012 02:00:23 org.apache.catalina.core.StandardService start
INFO: Starting service Catalina
19.Oca.2012 02:00:23 org.apache.catalina.core.StandardEngine start
INFO: Starting Servlet Engine: Apache Tomcat/6.0.35
19.Oca.2012 02:00:23 org.apache.catalina.core.ApplicationContext log
INFO: Initializing Spring root WebApplicationContext
19.Oca.2012 02:00:23 org.springframework.web.context.ContextLoader initWebApplicationContext
INFO: Root WebApplicationContext: initialization started
19.Oca.2012 02:00:23 org.springframework.context.support.AbstractApplicationContext prepareRefresh
INFO: Refreshing Root WebApplicationContext: startup date [Thu Jan 19 02:00:23 VET 2012]; root of context hierarchy
19.Oca.2012 02:00:23 org.springframework.beans.factory.xml.XmlBeanDefinitionReader loadBeanDefinitions
INFO: Loading XML bean definitions from class path resource [applicationContext.xml]
19.Oca.2012 02:00:23 org.springframework.beans.factory.support.DefaultListableBeanFactory preInstantiateSingletons
INFO: Pre-instantiating singletons in org.springframework.beans.factory.support.DefaultListableBeanFactory@18efaea: defining beans [paymentService,org.springframework.context.annotation.internalConfigurationAnnotationProcessor,org.springframework.context.annotation.internalAutowiredAnnotationProcessor,org.springframework.context.annotation.internalRequiredAnnotationProcessor,org.springframework.context.annotation.internalCommonAnnotationProcessor,transactionBo]; root of factory hierarchy
19.Oca.2012 02:00:23 org.springframework.web.context.ContextLoader initWebApplicationContext
INFO: Root WebApplicationContext: initialization completed in 446 ms
19.Oca.2012 02:00:23 com.sun.jersey.api.core.PackagesResourceConfig init
INFO: Scanning for root resource and provider classes in the packages:
com.mkyong.rest
19.Oca.2012 02:00:23 com.sun.jersey.api.core.ScanningResourceConfig logClasses
INFO: Root resource classes found:
class com.mkyong.rest.PaymentService
19.Oca.2012 02:00:23 com.sun.jersey.api.core.ScanningResourceConfig init
INFO: No provider classes found.
19.Oca.2012 02:00:23 com.sun.jersey.spi.spring.container.servlet.SpringServlet getContext
INFO: Using default applicationContext
19.Oca.2012 02:00:23 com.sun.jersey.spi.spring.container.SpringComponentProviderFactory registerSpringBeans
INFO: Registering Spring bean, paymentService, of type com.mkyong.rest.PaymentService as a root resource class
19.Oca.2012 02:00:23 com.sun.jersey.server.impl.application.WebApplicationImpl _initiate
INFO: Initiating Jersey application, version ‘Jersey: 1.8 06/24/2011 12:17 PM’
19.Oca.2012 02:00:24 org.apache.catalina.core.ApplicationContext log
SEVERE: StandardWrapper.Throwable
java.lang.NoClassDefFoundError: org/springframework/aop/support/AopUtils
at com.sun.jersey.spi.spring.container.SpringComponentProviderFactory.getInjectableInstance(SpringComponentProviderFactory.java:240)
at com.sun.jersey.spi.spring.container.SpringComponentProviderFactory.access$100(SpringComponentProviderFactory.java:81)
at com.sun.jersey.spi.spring.container.SpringComponentProviderFactory$SpringManagedComponentProvider.getInjectableInstance(SpringComponentProviderFactory.java:230)
at com.sun.jersey.server.impl.component.IoCResourceFactory$SingletonWrapper.init(IoCResourceFactory.java:179)
at com.sun.jersey.server.impl.application.WebApplicationImpl$10.f(WebApplicationImpl.java:584)
at com.sun.jersey.server.impl.application.WebApplicationImpl$10.f(WebApplicationImpl.java:581)
at com.sun.jersey.spi.inject.Errors.processWithErrors(Errors.java:193)
at com.sun.jersey.server.impl.application.WebApplicationImpl.getResourceComponentProvider(WebApplicationImpl.java:581)
at com.sun.jersey.server.impl.application.WebApplicationImpl.initiateResource(WebApplicationImpl.java:658)
at com.sun.jersey.server.impl.application.WebApplicationImpl.initiateResource(WebApplicationImpl.java:653)
at com.sun.jersey.server.impl.application.RootResourceUriRules.(RootResourceUriRules.java:124)
at com.sun.jersey.server.impl.application.WebApplicationImpl._initiate(WebApplicationImpl.java:1298)
at com.sun.jersey.server.impl.application.WebApplicationImpl.access$700(WebApplicationImpl.java:169)
at com.sun.jersey.server.impl.application.WebApplicationImpl$13.f(WebApplicationImpl.java:775)
at com.sun.jersey.server.impl.application.WebApplicationImpl$13.f(WebApplicationImpl.java:771)
at com.sun.jersey.spi.inject.Errors.processWithErrors(Errors.java:193)
at com.sun.jersey.server.impl.application.WebApplicationImpl.initiate(WebApplicationImpl.java:771)
at com.sun.jersey.spi.spring.container.servlet.SpringServlet.initiate(SpringServlet.java:117)
at com.sun.jersey.spi.container.servlet.ServletContainer$InternalWebComponent.initiate(ServletContainer.java:318)
at com.sun.jersey.spi.container.servlet.WebComponent.load(WebComponent.java:609)
at com.sun.jersey.spi.container.servlet.WebComponent.init(WebComponent.java:210)
at com.sun.jersey.spi.container.servlet.ServletContainer.init(ServletContainer.java:373)
at com.sun.jersey.spi.container.servlet.ServletContainer.init(ServletContainer.java:556)
at javax.servlet.GenericServlet.init(GenericServlet.java:212)
at org.apache.catalina.core.StandardWrapper.loadServlet(StandardWrapper.java:1206)
at org.apache.catalina.core.StandardWrapper.load(StandardWrapper.java:1026)
at org.apache.catalina.core.StandardContext.loadOnStartup(StandardContext.java:4421)
at org.apache.catalina.core.StandardContext.start(StandardContext.java:4734)
at org.apache.catalina.core.ContainerBase.start(ContainerBase.java:1057)
at org.apache.catalina.core.StandardHost.start(StandardHost.java:840)
at org.apache.catalina.core.ContainerBase.start(ContainerBase.java:1057)
at org.apache.catalina.core.StandardEngine.start(StandardEngine.java:463)
at org.apache.catalina.core.StandardService.start(StandardService.java:525)
at org.apache.catalina.core.StandardServer.start(StandardServer.java:754)
at org.apache.catalina.startup.Catalina.start(Catalina.java:595)
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.catalina.startup.Bootstrap.start(Bootstrap.java:289)
at org.apache.catalina.startup.Bootstrap.main(Bootstrap.java:414)
Caused by: java.lang.ClassNotFoundException: org.springframework.aop.support.AopUtils
at org.apache.catalina.loader.WebappClassLoader.loadClass(WebappClassLoader.java:1680)
at org.apache.catalina.loader.WebappClassLoader.loadClass(WebappClassLoader.java:1526)
… 41 more
19.Oca.2012 02:00:24 org.apache.catalina.core.StandardContext loadOnStartup
SEVERE: Servlet /RESTfulExample threw load() exception
java.lang.ClassNotFoundException: org.springframework.aop.support.AopUtils
at org.apache.catalina.loader.WebappClassLoader.loadClass(WebappClassLoader.java:1680)
at org.apache.catalina.loader.WebappClassLoader.loadClass(WebappClassLoader.java:1526)
at com.sun.jersey.spi.spring.container.SpringComponentProviderFactory.getInjectableInstance(SpringComponentProviderFactory.java:240)
at com.sun.jersey.spi.spring.container.SpringComponentProviderFactory.access$100(SpringComponentProviderFactory.java:81)
at com.sun.jersey.spi.spring.container.SpringComponentProviderFactory$SpringManagedComponentProvider.getInjectableInstance(SpringComponentProviderFactory.java:230)
at com.sun.jersey.server.impl.component.IoCResourceFactory$SingletonWrapper.init(IoCResourceFactory.java:179)
at com.sun.jersey.server.impl.application.WebApplicationImpl$10.f(WebApplicationImpl.java:584)
at com.sun.jersey.server.impl.application.WebApplicationImpl$10.f(WebApplicationImpl.java:581)
at com.sun.jersey.spi.inject.Errors.processWithErrors(Errors.java:193)
at com.sun.jersey.server.impl.application.WebApplicationImpl.getResourceComponentProvider(WebApplicationImpl.java:581)
at com.sun.jersey.server.impl.application.WebApplicationImpl.initiateResource(WebApplicationImpl.java:658)
at com.sun.jersey.server.impl.application.WebApplicationImpl.initiateResource(WebApplicationImpl.java:653)
at com.sun.jersey.server.impl.application.RootResourceUriRules.(RootResourceUriRules.java:124)
at com.sun.jersey.server.impl.application.WebApplicationImpl._initiate(WebApplicationImpl.java:1298)
at com.sun.jersey.server.impl.application.WebApplicationImpl.access$700(WebApplicationImpl.java:169)
at com.sun.jersey.server.impl.application.WebApplicationImpl$13.f(WebApplicationImpl.java:775)
at com.sun.jersey.server.impl.application.WebApplicationImpl$13.f(WebApplicationImpl.java:771)
at com.sun.jersey.spi.inject.Errors.processWithErrors(Errors.java:193)
at com.sun.jersey.server.impl.application.WebApplicationImpl.initiate(WebApplicationImpl.java:771)
at com.sun.jersey.spi.spring.container.servlet.SpringServlet.initiate(SpringServlet.java:117)
at com.sun.jersey.spi.container.servlet.ServletContainer$InternalWebComponent.initiate(ServletContainer.java:318)
at com.sun.jersey.spi.container.servlet.WebComponent.load(WebComponent.java:609)
at com.sun.jersey.spi.container.servlet.WebComponent.init(WebComponent.java:210)
at com.sun.jersey.spi.container.servlet.ServletContainer.init(ServletContainer.java:373)
at com.sun.jersey.spi.container.servlet.ServletContainer.init(ServletContainer.java:556)
at javax.servlet.GenericServlet.init(GenericServlet.java:212)
at org.apache.catalina.core.StandardWrapper.loadServlet(StandardWrapper.java:1206)
at org.apache.catalina.core.StandardWrapper.load(StandardWrapper.java:1026)
at org.apache.catalina.core.StandardContext.loadOnStartup(StandardContext.java:4421)
at org.apache.catalina.core.StandardContext.start(StandardContext.java:4734)
at org.apache.catalina.core.ContainerBase.start(ContainerBase.java:1057)
at org.apache.catalina.core.StandardHost.start(StandardHost.java:840)
at org.apache.catalina.core.ContainerBase.start(ContainerBase.java:1057)
at org.apache.catalina.core.StandardEngine.start(StandardEngine.java:463)
at org.apache.catalina.core.StandardService.start(StandardService.java:525)
at org.apache.catalina.core.StandardServer.start(StandardServer.java:754)
at org.apache.catalina.startup.Catalina.start(Catalina.java:595)
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.catalina.startup.Bootstrap.start(Bootstrap.java:289)
at org.apache.catalina.startup.Bootstrap.main(Bootstrap.java:414)
19.Oca.2012 02:00:24 org.apache.coyote.http11.Http11Protocol start
INFO: Starting Coyote HTTP/1.1 on http-8080
19.Oca.2012 02:00:24 org.apache.jk.common.ChannelSocket init
INFO: JK: ajp13 listening on /0.0.0.0:8009
19.Oca.2012 02:00:24 org.apache.jk.server.JkMain start
INFO: Jk running ID=0 time=0/18 config=null
19.Oca.2012 02:00:24 org.apache.catalina.startup.Catalina start
INFO: Server startup in 1529 ms
Did anyone resolve this issue? I am getting the AOP related error as well.
It turned out to be simple.
Hi mkyong,
This is nice article. I am doing the exactly same way. One Challenge I am facing right now is to write a JUnit for a resource class.
Above code works just fine. But, as soon as I test any resource that has
@Autowired variable, it fails.
This is because I cannot extend my JUnit to both AbstractJUnit4SpringContextTests and
JerseyTest at the same time.
After hours of googling, I came across to the following article. But, their spring version and jersey version is bit old and I am getting many version conflicts.
http://geek.riffpie.com/unit-testing-restful-jersey-services-glued-together-with-spring/
After I saw this article, version number matches with mine and wondering if you have faced the same issue and importantly you already solve this issue.
Looking forward your reply.
In my previous comment, I forgot to mention that my existing project using your sample code could be compiled without any errors. However, when I start Tomcat, I got the error. I have added 4 more lines before the error so that you have a better idea what went wrong:
Thank you.
I support that’s your last caused by, from the error message, it showed that asm.jar has no this method, this is caused by the wrong version of asm is included.
To fix it, try upgrade asm.jar to latest version, or try other versions one by one to match your case.
Thank you for your help. Everything works fine now.
Hello,
I’m running into the same issue described above. I have tried multiple versions of the asm.jar library but haven’t had any luck yet. Can you post the version you are using for your asm.jar.
This is one of the core reason of using Maven, to get rid of jar too many version concern.
Download attached example, build with Maven, then it will grab all necessary dependencies, including the asm.jar automatically. Then you will know which asm.jar should use.
Hi Mkyong,
Thank you for your article. I have downloaded your zip file and then imported it to Eclipse. Unfortunately, I get the following errors:
Project ‘RESTfulExample’ is missing required library: ‘/home/username/.m2/repository/commons-logging/commons-logging/1.1.1/commons-logging-1.1.1.jar’
Project ‘RESTfulExample’ is missing required library: ‘/home/username/.m2/repository/org/springframework/spring-aop/2.5.6.SEC02/spring-aop-2.5.6.SEC02.jar’
Project ‘RESTfulExample’ is missing required library: ‘/home/username/.m2/repository/org/springframework/spring-beans/3.0.5.RELEASE/spring-beans-3.0.5.RELEASE.jar’
Project ‘RESTfulExample’ is missing required library: ‘/home/username/.m2/repository/org/springframework/spring-expression/3.0.5.RELEASE/spring-expression-3.0.5.RELEASE.jar’
The project cannot be built until build path errors are resolved
I am pretty new to Jersey and Spring, and would like to use them together in a project. Would you please help me to fix them? Thank you and I appreciate your help.
Kit
This is Maven project, please build with Maven, it will download all the project dependencies.
Install Maven, in command prompt, type “mvn eclipse:eclipse -Dwtpversion=2.0″