「JBoss」EJB をさわってみる ( サーブレットから利用 )
前回のエントリーでスタンドアロンのアプリから EJB の呼び出しをやりました。
・「JBoss」EJB をさわってみる ( スタンドアロンアプリから利用 ) - プログラム日記
http://a4dosanddos.hatenablog.com/entry/2014/03/09/185931
ちょっと今回 EJB 呼び出すサーブレットも作ってみたので、その時のメモです。
( EJB は上記のエントリーのものを使いまわしで )
[ 環境情報 ]
Windows 7 SP1
JBoss Application Server 7.1.1.Final
Java SE 7 Update 45
■ TestServlet.java
import java.io.IOException; import java.io.PrintWriter; import java.util.Hashtable; import javax.naming.Context; import javax.naming.InitialContext; import javax.naming.NamingException; import javax.servlet.ServletException; import javax.servlet.annotation.WebServlet; import javax.servlet.http.HttpServlet; import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletResponse; import test.RemoteTest; @WebServlet("/TestServlet") public class TestServlet extends HttpServlet { private static final long serialVersionUID = 1L; private static final String JNDI_NAME = "ejb:/EJBTest//TestBean!test.RemoteTest"; public TestServlet() { super(); } protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { RemoteTest test = null; try { final Hashtable jndiProperties = new Hashtable(); jndiProperties.put(Context.URL_PKG_PREFIXES, "org.jboss.ejb.client.naming"); final Context context = new InitialContext(jndiProperties); test = (RemoteTest) context.lookup(JNDI_NAME); } catch (NamingException e) { e.printStackTrace(); } PrintWriter out = response.getWriter(); out.println("<html><body>"); out.println("hello:" + test.hello("hoge")); out.println("<br>"); out.println("add:" + test.add(1, 2)); out.println("</body></html>"); } }
※ EJB 呼び出しってことであれば、スタンドアロンのアプリケーションとやること全く変わらないですね・・・
あとは、.war ファイルの作成 -> JBoss にデプロイ ( %JBOSS_HOME%\standalone\deployments ) -> JBoss 起動 ->「http://localhost:8080/EJBServlet/TestServlet」にアクセス、という感じでやると、ブラウザに「hello:Hello hoge」、「add:3」と表示されるはずです。
以上です。