日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

java 调用ejb_一步一步教你远程调用EJB

發布時間:2023/12/14 编程问答 32 豆豆
生活随笔 收集整理的這篇文章主要介紹了 java 调用ejb_一步一步教你远程调用EJB 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

前期準備:弄清楚weblogic(或jboss)、tomcat、JBluder(或eclipse+MyEclipse)的使用方法,能寫一個簡單的基于struts框架的web工程,然后準備兩臺聯網的電腦(局域網也可以),如果沒有條件,也可以在同一臺電腦上分別安裝兩個web服務器(例如:weblogic和tomcat)來代替,本文將采用后一種方法,采用weblogic作EJB容器,tomcat作web容器,用struts工程來調用EJB

準備好了嗎?讓我們開始下一步

第一步:寫一個簡單的EJB。寫EJB最好用的還是JBuilder,畢竟夠傻瓜化。當然作為專業人士,eclipse搭配MyEclipse是最佳選擇,不過作為初學者,建議采用JBuilder。以下是本文測試所用到的EJB。

remote接口:

package testhello;

import javax.ejb.EJBObject;

public interface SayHello extends EJBObject {

public String sayHello(String name) throws java.rmi.RemoteException;

}

home接口:

package testhello;

import javax.ejb.EJBHome;

import javax.ejb.CreateException;

import java.rmi.RemoteException;

public interface SayHelloHome extends EJBHome {

public SayHello create() throws CreateException, RemoteException;

}

bean類:

package testhello;

import javax.ejb.SessionBean;

import javax.ejb.SessionContext;

import javax.ejb.CreateException;

public class SayHelloBean implements SessionBean {

SessionContext sessionContext;

public void ejbCreate() throws CreateException {

}

public void ejbRemove() {

}

public void ejbActivate() {

}

public void ejbPassivate() {

}

public void setSessionContext(SessionContext sessionContext) {

this.sessionContext = sessionContext;

}

public String? sayHello(String name) {

return "Hello "+name;

}

}

如果你是采用上面兩種工具來寫的話,配置文件就不必考慮了

第二步:利用JBuilder或eclipse將這個EJB工程編譯并打包,會得到一個jar(如果你的工程名叫testhello,那么這個jar文件就是testhello.jar)文件。如果你的EJB容器(weblogic或JBoss)是在本機上,那么在JBuilder或eclipse中就可以直接鼠標右擊EJB工程,來部署EJB。如果需要部署到遠程服務器上,只需要通過EJB容器的控制臺將testhello.jar上傳到遠程端,然后在EJB Modler里面按提示部署好EJB。最后,別忘了在JNDI Tree里面察看你的EJB工程的JNDI名,本例的JNDI名叫SayHello

第三步:將remote接口和home接口打包成jar文件,copy到你要遠程調用EJB的struts工程下的lib目錄(例如:helloapp ->WEB-INF ->lib)

第四步:將weblogic的weblogic.jar(在weblogic的安裝目錄->weblogic81->server->lib文件夾中)copy到tomcat安裝目錄下的->shared->lib文件夾中,其實這里我們需要用到的只是weblogic.jar里的幾個class文件而已,不過對于初學者而言,先不必去深究到底只需要那幾個class。

第五步:編寫一個簡單的struts工程(其實這些都可以用工具生成),一下是調用EJB的HelloAction的源代碼(特別要注意的是,記得要將之前第三步生成的jar包導入編輯器中,否則下面的代碼編譯通不過。如果你不知道導入jar包,就把那個jar包多copy一份到你的jdk安裝目錄 -> jre-> lib-> ext文件夾下)

package logging.actions;

import logging.Constants;

import java.util.*;

import javax.servlet.ServletException;

import javax.servlet.RequestDispatcher;

import javax.servlet.http.HttpSession;

import javax.servlet.http.HttpServletRequest;

import javax.servlet.http.HttpServletResponse;

import javax.naming.Context;

import javax.naming.InitialContext;

import javax.naming.NamingException;

import javax.rmi.PortableRemoteObject;

import org.apache.struts.action.Action;

import org.apache.struts.action.ActionForm;

import org.apache.struts.action.ActionForward;

import org.apache.struts.action.ActionMapping;

import org.apache.struts.action.ActionMessage;

import org.apache.struts.action.ActionMessages;

import org.apache.struts.util.MessageResources;

import org.apache.struts.validator.DynaValidatorForm;

public final class HelloAction extends Action{

public ActionForward execute(ActionMapping mapping,

ActionForm form,

HttpServletRequest request,

HttpServletResponse response)

throws Exception{

InitialContext ctx=this.getInitialContext();

//查找JNDI名為SayHello的EJB組件

Object obj=ctx.lookup("SayHello");

//獲得遠程EJB組件的home接口的引用

testhello.SayHelloHome home=(testhello.SayHelloHome)PortableRemoteObject.narrow(obj,testhello.SayHelloHome.class);

//獲得遠程EJB組件的remote接口的引用

testhello.SayHello hello=home.create();

String name="飄然隨風";

String sayString=hello.sayHello(name);

request.setAttribute("userName",name);

request.setAttribute("passWord",sayString);

request.removeAttribute(mapping.getAttribute());

return mapping.findForward("loginSuccess");

}

/*以下方法是作用是:通過傳遞環境屬性選擇JNDI驅動和服務器的網絡位置,

并連接到連接到JNDI樹。

這是采用weblogic做EJB容器時,遠程調用EJB的固定初始化模式,初學者可以死記下來

*/

private? InitialContext getInitialContext() throws Exception {

//EJB容器的地址

String url = "t3://image:7001";

String user = null;

String password = null;

Properties properties;

properties = new Properties();

properties.put(Context.INITIAL_CONTEXT_FACTORY,

"weblogic.jndi.WLInitialContextFactory");

properties.put(Context.PROVIDER_URL, url);

if (user != null) {

properties.put(Context.SECURITY_PRINCIPAL, user);

properties.put(Context.SECURITY_CREDENTIALS,

password == null ? "" : password);

}

return new javax.naming.InitialContext(properties);

}

}

第六步:如果你嚴格按照上面的步驟做了,那么剩下的就是同時啟動weblogic和tomcat來測試了。

總結

以上是生活随笔為你收集整理的java 调用ejb_一步一步教你远程调用EJB的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。