eclipse-ee4j / eclipse-ee4j/jersey

Error occured when create restful api with jersey2.22.2 + spring4.1.7

Open
#3,463 3 comments 0 reactions 0 assignees View on GitHub
Component: extensions Priority: Major Type: Bug
Dominant language
Java
Stars
730
Forks
382
PR merge metrics
No merged PRs in 30d

Description

```
**pom.xml**
org.glassfish.jersey.containers
jersey-container-servlet-core
2.22.2

org.glassfish.jersey.ext
jersey-spring3
2.22.2


org.springframework
spring-core


org.springframework
spring-web


org.springframework
spring-beans


org.springframework
spring-context


org.springframework
spring-aop

org.codehaus.jackson
jackson-core-asl


org.codehaus.jackson
jackson-mapper-asl


org.codehaus.jackson
jackson-jaxrs
1.9.12

```
```
**web.xml**
jersey restful
org.glassfish.jersey.servlet.ServletContainer

javax.ws.rs.Application
com.boco.gpsp.rest.RestApplicationInit

1

jersey restful
/rest/*

```
```
**RestApplicationInit**package com.boco.gpsp.rest;

import javax.ws.rs.ApplicationPath;
import org.codehaus.jackson.jaxrs.JacksonJsonProvider;
import org.glassfish.jersey.filter.LoggingFilter;
import org.glassfish.jersey.server.ResourceConfig;
import org.glassfish.jersey.server.spring.scope.RequestContextFilter;
import com.boco.gpsp.rest.resource.UserResource;

@ApplicationPath("/rest")
public class RestApplicationInit extends ResourceConfig{

public RestApplicationInit() {
packages("com.boco.gpsp.rest.resource");
register(UserResource.class);
register(JacksonJsonProvider.class);
register(RequestContextFilter.class);
register(LoggingFilter.class);
}

}
```
```
**UserResource**package com.boco.gpsp.rest.resource;

import javax.ws.rs.GET;
import javax.ws.rs.Path;
import javax.ws.rs.PathParam;
import javax.ws.rs.Produces;
import javax.ws.rs.core.MediaType;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Component;
import com.boco.gpsp.service.UserService;

@Path("users")
@Component
public class UserResource {

@Autowired
private UserService userService;

@GET
@Path("{name}")
@Produces(MediaType.TEXT_PLAIN)
public String search(@PathParam("id") String name) {
return userService.getUserByName(name);
}
}
```
```
**UserService**package com.boco.gpsp.service;

import org.springframework.stereotype.Service;

import com.boco.gpsp.service.UserService;

@Service
public class UserService {

public String getUserByName(String name) {
return "user: name=" + name;
}

}
```
```
**spring-servlet.xml**

```

When i test my api in chrome by :
[http://localhost:9090/app/rest/users/jack](http://localhost:9090/app/rest/users/jack)
error appeared as below:

javax.servlet.ServletException: A MultiException has 3 exceptions. They are:
1\. org.springframework.beans.factory.NoSuchBeanDefinitionException: No qualifying bean of type [com.boco.gpsp.service.UserService] found for dependency: expected at least 1 bean which qualifies as autowire candidate for this dependency. Dependency annotations:

{@org.springframework.beans.factory.annotation.Autowired(required=true)}

2\. java.lang.IllegalArgumentException: While attempting to resolve the dependencies of com.boco.gpsp.rest.resource.UserResource errors were found
3\. java.lang.IllegalStateException: Unable to perform operation: resolve on com.boco.gpsp.rest.resource.UserResource

org.glassfish.jersey.servlet.WebComponent.serviceImpl(WebComponent.java:489)
org.glassfish.jersey.servlet.WebComponent.service(WebComponent.java:427)
org.glassfish.jersey.servlet.ServletContainer.service(ServletContainer.java:388)
org.glassfish.jersey.servlet.ServletContainer.service(ServletContainer.java:341)
org.glassfish.jersey.servlet.ServletContainer.service(ServletContainer.java:228)
org.apache.tomcat.websocket.server.WsFilter.doFilter(WsFilter.java:52)
#### Environment
windows 64bit, tomcat7.x, JDK7, apache maven 3.3.3
#### Affected Versions
[2.22.2]

Contributor guide

Open the contributing guide

Assessment

This issue has not been assessed yet.

Get new issues in your inbox

A short digest of beginner-friendly GitHub issues.