Я hava обслуживание отдыха внутри моего приложения, и я хотел бы, чтобы он использовал весенние бобы. Весна я использую версию 2.5. Часть web.xml:Джерси служба REST как компонент весны
<servlet>
<servlet-name>jersey-servlet</servlet-name>
<servlet-class>com.sun.jersey.spi.container.servlet.ServletContainer</servlet-class>
<init-param>
<param-name>com.sun.jersey.config.property.packages</param-name>
<param-value>com.app.rest</param-value>
</init-param>
<init-param>
<param-name>com.sun.jersey.api.json.POJOMappingFeature</param-name>
<param-value>true</param-value>
</init-param>
<load-on-startup>1</load-on-startup>
</servlet>
<servlet-mapping>
<servlet-name>jersey-servlet</servlet-name>
<url-pattern>/rest/*</url-pattern>
</servlet-mapping>
В pom.xml я есть зависимости:
<dependency>
<groupId>com.sun.jersey</groupId>
<artifactId>jersey-server</artifactId>
<version>1.8</version>
</dependency>
<dependency>
<groupId>com.sun.jersey</groupId>
<artifactId>jersey-json</artifactId>
<version>1.8</version>
</dependency>
В context.xml я добавил:
<context:component-scan base-package="com.app.rest"/>
, а также:
<tx:annotation-driven proxy-target-class="true" />
Интересная часть rvice класс:
@Component
@Path("/notification")
@Scope("singleton")
public class PushNotification {
@Autowired
//@Resource(name = "sendMessageServiceFacade")
private SendMessageServiceFacade sendMessageServiceFacade;
@Autowired
//@Resource(name = "responseCode")
private NotificationResponseMessage responseCode;
@Autowired
//@Resource(name = "validator")
private PushMessagePreValidator validator;
@POST
@Path("/register")
@Consumes(MediaType.APPLICATION_JSON)
public Response registerDevice(PushWooshRegisterDeviceDto dto) {
if (validator.validate(dto) == 200) {
return invokePushMessage(dto, PushMessageType.REGISTER.getMsgType());
} else {
return buildFailResponse();
}
}
@GET
@Path("/{param}")
public Response ping(@PathParam("param") String param) {
return Response.status(200).entity(param).build();
}
метод GET работает, как ожидалось (поясню это работает :)), но метод POST бросает NullPointerException на линии: если (validator.validate (DTO) == 200).
Я не знаю, почему @Автоматическая аннотация не работает здесь, а я пробовал с @Resource - тот же эффект.
Любой совет может помочь.
Заранее благодарен, Marek.
я надеялся, что я могу сделать это без джерси-весной, а плохо добавить exludes на весну в этой зависимости, и, надеюсь, он точн я работаю :) – Marek