我有一个用JAX-RS实现的REST服务.Web服务旨在用于测试目的.我的应用程序有一个HashMap,它管理我想要检索的对象.如何HashMap在服务启动时初始化这个,以便HashMap有一些我可以检索的对象?我试图HashMap在构造函数中添加一些对象,但是HashMap当服务启动时它是空的.我使用JAX-RS的Jersey实现并使用该web.xml文件配置我的资源.
我的web.xml文件包含以下内容:
<?xml version="1.0" encoding="UTF-8"?>
<web-app xmlns="http://java.sun.com/xml/ns/javaee" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-app_3_0.xsd" version="3.0">
<display-name>OPMSimulator</display-name>
<servlet>
<servlet-name>MyServlet</servlet-name>
<servlet-class>com.ibm.websphere.jaxrs.server.IBMRestServlet</servlet-class>
<init-param>
<param-name>javax.ws.rs.Application</param-name>
<param-value>com.ibm.opm.mobile.prototype.TestApplication</param-value>
</init-param>
<load-on-startup>1</load-on-startup>
</servlet>
<servlet-mapping>
<servlet-name>MyServlet</servlet-name>
<url-pattern>/rest/*</url-pattern>
</servlet-mapping>
</web-app>
Run Code Online (Sandbox Code Playgroud)
我的资源类有以下内容:
public class Test {
private static HashMap<Integer, Database> databases;
@GET
@Produces(MediaType.TEXT_XML)
@Path("/database/{id}")
public String database(@PathParam("id")String id) {
Database database = databases.get(Integer.parseInt(id));
return XMLGenerator.getXML(database);
}
}
Run Code Online (Sandbox Code Playgroud)
在你的servlet的构造应该工作(它总是在调用之前调用doGet和doPost),否则,您可以注册一个监听器初始化所有你的东西:
import javax.servlet.ServletContextEvent;
import javax.servlet.ServletContextListener;
import javax.servlet.annotation.WebListener;
@WebListener
public class Manager implements ServletContextListener {
public void contextInitialized(ServletContextEvent event) {
}
public void contextDestroyed(ServletContextEvent event) {
}
}
Run Code Online (Sandbox Code Playgroud)
如果你Servlet 3.0还没有升级,因此无法使用@WebListener注释,那么你需要手动注册它,/WEB-INF/web.xml如下所示:
<?xml version="1.0" encoding="UTF-8"?>
<web-app version="2.4" xmlns="http://java.sun.com/xml/ns/j2ee">
<display-name>projectName</display-name>
<listener>
<listener-class>Manager</listener-class>
</listener>
...
</web-app>
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
6413 次 |
| 最近记录: |