我正在尝试将Jersey(版本2.x)集成到我们当前使用Spring 2.5的项目中。我已经按照他们的Spring webapp集成示例中提到的所有步骤进行了操作,但是当调用Jersey bean时,似乎无法使自动接线工作。
我的配置/类文件如下所示,
WEB.XML文件
<servlet>
<servlet-name>jersey</servlet-name>
<servlet-class>
org.glassfish.jersey.servlet.ServletContainer
</servlet-class>
<init-param>
<param-name>javax.ws.rs.Application</param-name>
<param-value>com.inrev.rest.XXXSpringIntegration</param-value>
</init-param>
<load-on-startup>1</load-on-startup>
</servlet>
<servlet-mapping>
<servlet-name>jersey</servlet-name>
<url-pattern>/rest/*</url-pattern>
</servlet-mapping>
SPRING FILE
<bean class="org.springframework.beans.factory.annotation.AutowiredAnnotationBeanPostProcessor"/>
<bean name="myresource" class="com.xxx.rest.MyResource" autowire="byName"></bean>
XXXSpringIntegration CLASS
public XXXSpringIntegration()
{
register(RequestContextFilter.class);
register(MyResource.class);
System.err.println("I am getting registered");
}
MyResource.class
@Path("myresource")
public class MyResource {
@Autowired
private IRAdminDAO adminDAO;
public MyResource()
{
System.err.println("Getting ready now");
}
/**
* Method handling HTTP GET requests. The returned object will be sent
* to the client as "text/plain" media type.
*
* @return String that will be returned as a text/plain response.
*/
@Path("/list")
@GET
@Produces("application/json")
public String list()
{
System.err.println("Adming DAO "+adminDAO);
return "Got it!";
}
public void setAdminDAO(IRAdminDAO adminDAO)
{
System.err.println("Adming dao being set "+adminDAO);
this.adminDAO = adminDAO;
}
}
为adminDAO添加了配置
<bean id="adminDAO" class="com.xxx.bm.dao.impl.IRAdminDAOImpl">
<property name="sessionFactory">
<ref local="sessionFactory" />
</property>
</bean>
我确信当Spring得到初始化时,自动接线工作,因为当弹簧初始化文件时,调用器中的Syserr被调用。但是,当我进行API调用时,adminDAO为空。
http://bm.com:8080/bm/rest/myresource/list
导致这种情况的原因是,我已经尝试了所有其他排列组合,但是当我们进行API调用时,无论如何自动装配似乎都没有用。
此致
答案 0 :(得分:0)
Jersey 2.5在Spring 2.5中工作得很好,它只是我的版本中没有的几个jar。我不确定他们是否会使用maven版本,但肯定不会出现在.zip下载中。
此外,没有例外表明罐子丢失了。 jersey-spring3-2.11.jar是明星。