對於整個servlet而言,我很新,所以如果我混合使用不正確的或易混淆的術語,請糾正我的錯誤。然而,我使用JAX-RS(Jersey)編寫了一個使用Java編寫博客的ping服務器,並且我遇到了一個問題,我有一個接受REST輸入的servlet類,另一個servlet類列出了相同的內容。使用JAX-RS將對象注入到servlet類中
眼下他們正在通過類,看起來像這樣分享他們的對象:
public class BlogPingUtils {
private static final String LIST_OF_CHANGES = "listOfChanges";
public static List<PingInfo> getListOfChanges(ServletContext context) {
List<PingInfo> listOfChanges = (List<PingInfo>)context.getAttribute(LIST_OF_CHANGES);
if(listOfChanges == null) listOfChanges = new ArrayList<PingInfo>();
return listOfChanges;
}
public static void setListOfChanges(ServletContext context, List<PingInfo> listOfChanges) {
context.setAttribute(LIST_OF_CHANGES, listOfChanges);
}
}
這個工作在一個小規模的開發環境,但感覺很髒,可能不會在重鏈工作由於併發問題等原因導致生產環境惡化。它也不是很靈活。我想要做的是有一個接口,可以有讀取和寫入數據的方法。然後,我會將實現此接口的類的對象注入到這兩個servlet中,以便它們實際上使用相同的對象與數據進行交互。然後這將由同步的列表或數據庫事務或其他事物支持。
這樣做的首選方法是什麼?可能嗎?我的web.xml現在的問題是非常簡單的,看起來像這樣:
<?xml version="1.0" encoding="UTF-8"?>
<web-app xmlns="http://java.sun.com/xml/ns/j2ee"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://java.sun.com/xml/ns/j2ee
http://java.sun.com/xml/ns/j2ee/web-app_2_4.xsd" version="2.4">
<display-name>Blog Ping</display-name>
<servlet>
<servlet-name>Jersey REST Service</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.vrutberg.blogping</param-value>
</init-param>
<load-on-startup>1</load-on-startup>
</servlet>
<servlet-mapping>
<servlet-name>Jersey REST Service</servlet-name>
<url-pattern>/*</url-pattern>
</servlet-mapping>
</web-app>
是的,這是我想到的。你能舉一個例子說明如何用JNDI做到這一點嗎?現在使用Google來嘗試找到一個... :) – vrutberg 2012-03-13 18:32:52
另外,我發現這個:http://jersey.java.net/nonav/documentation/latest/user-guide.html#d4e188 我可以使用它來解決單身人士的需求? – vrutberg 2012-03-13 18:35:09
我會避免使用澤西島唯一的解決方案;你可能總是需要來自另一個artefact的中央倉庫的資源,比如標準的servlet。如果你確定你只會做Jersey/JAX-RX,爲什麼不呢。對於JNDI,它取決於你的servlet容器。如果您使用Jetty,則必須啓用它:請點擊此處:[link](http://wiki.eclipse.org/Jetty/Feature/JNDI)。對於Tomcat來說,它已經'在那裏'了,請檢查Tomcat **全局** JNDI如何 – 2012-03-14 06:27:51