我试图将服务注入到正在使用Jersey的Rest类中。
无论我尝试如何或以何种方式插入此类,似乎在运行时都显示为null。查看日志文件表明,在初始化Web应用程序时正在调用setJsonTestService,并且此时它不为null。但是,当稍后通过对此类的PUT请求访问它时,它为null。
我完全困惑。
该类如下所示:
@Named
@Path("JsonTest")
public class JsonTest {
@Context
Request request;
@Context
UriInfo uriInfo;
protected final Logger log = Logger.getLogger(getClass());
private JsonTestService jsonTestService;
@Autowired
public void setJsonTestSerivce(JsonTestService jsonTestService) {
log.info("Setting JsonTestService.");
if (jsonTestService == null) {
log.info("JsonTestService is null at injection");
}
this.jsonTestService = jsonTestService;
}
@Inject
public ScrapIntermediate scrapIntermediate; // just a plain empty class with an is true method
@PUT
@Path("{id}")
@Produces(MediaType.APPLICATION_JSON)
public void putJson(@PathParam("id") String id) {
log.info("Putting some json at " + id);
if (scrapIntermediate == null) {
log.info("scrapIntermediate is null...");
}
if (jsonTestService != null) {
jsonTestService.sendUpdate();
} else {
log.info("jsonTestService is null...");
}
}
}
有任何想法吗?
更新:
web.xml(泽西)
<servlet>
<servlet-name>Jersey REST Service</servlet-name>
<servlet-class>com.sun.jersey.spi.spring.container.servlet.ServletContainer</servlet-class>
<init-param>
<param-name>com.sun.jersey.config.property.packages</param-name>
<param-value>EDAS</param-value>
</init-param>
<load-on-startup>1</load-on-startup>
</servlet>
<servlet-mapping>
<servlet-name>Jersey REST Service</servlet-name>
<url-pattern>/rest/*</url-pattern>
</servlet-mapping>
尝试
<servlet-class>
com.sun.jersey.spi.spring.container.servlet.SpringServlet
</servlet-class>
您还将需要contextConfigLocation
<context- param>
,但我想您已经拥有了。有关设置的更多详细信息,请参见此处
正如matt
b建议的那样,spring实例化了您的对象,但是Jersey对spring一无所知,并再次实例化了它们本身。使用时SpringServlet
,应找到spring应用程序上下文。
也就是说,spring-mvc对RESTful服务的支持与JAX-RS非常相似。您也可以尝试。
问题内容: 我正在尝试按照此处的示例创建工厂以注入HttpSession。不幸的是,无论我尝试什么,都无法正常工作。不知道可能是什么问题。 我试过只注入HttpServletRequest和提供程序。这是我使用提供程序的示例。尝试在provide方法中访问提供程序时,该错误是空指针异常。如果我尝试注入HttpServletRequest,那么将无法获取任何对象。我正在使用JerseyTest在Gr
只需要社区评估的东西。下面是一段代码,这是一个创建特定类型实例的简单工厂。该方法将在上下文中注册bean作为原型并返回实例。这是我第一次在运行时配置bean。你能好心评估并提供反馈吗?事先谢谢你。 FLEX Sync工厂已在IoC容器中配置为单例。因此,要创建一个新的同步管理器,我需要执行以下操作: 我使用的是Spring 3.1。请回顾并提供宝贵的反馈。 亲切的问候。
我正在使用Spring Framework/Data/HATEOAS,并试图添加dozer。 和以下汇编程序: 所以,-我对豆子和注射很陌生-但我想工厂的豆子是?应该?来注入映射器。但是映射器肯定是空的。我知道我做得不对,但我做错了什么?
我想在Grizzly 2上运行JAX-RS 2.0/jer,但我现在不知道如何设置它。我发现了以下Maven依赖项: 我需要什么Java代码才能在灰熊上运行泽西岛?
问题内容: 只需要一些由社区评估的东西。以下是一段代码,这是一个创建特定类型实例的简单工厂。该方法将在上下文中将bean注册为原型并返回实例。这是我第一次在运行时配置bean。您能否评价并提供反馈?先感谢您。 FLEX Sync工厂已在IoC容器中配置为单例。因此,要创建新的同步管理器,请执行以下操作: 我正在使用Spring 3.1。请查看并提供您宝贵的反馈意见。 亲切的问候。 问题答案: 这纯
我正在尝试通过jQuery POST将一些json数据发送到我本地机器中的jersey REST服务。 在我的服务器端,我有泽西方法来使用这个POST的JSON。 我正在请求中包装json数据。所以在服务器中,我可以在该包装类中获取请求中发送的所有数据。我的请求包装类是 问题pojo类 每当我从jquery发出如下请求时, 我在控制台中发现这个错误: 我可以通过从jQuery发送问题json并在方