<rt id="bn8ez"></rt>
<label id="bn8ez"></label>

  • <span id="bn8ez"></span>

    <label id="bn8ez"><meter id="bn8ez"></meter></label>

    隨筆-17  評(píng)論-64  文章-79  trackbacks-1

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

    準(zhǔn)備好了嗎?讓我們開始下一步

    第一步:寫一個(gè)簡單的EJB。寫EJB最好用的還是JBuilder,畢竟夠傻瓜化。當(dāng)然作為專業(yè)人士,eclipse搭配MyEclipse是最佳選擇,不過作為初學(xué)者,建議采用JBuilder。以下是本文測(cè)試所用到的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將這個(gè)EJB工程編譯并打包,會(huì)得到一個(gè)jar(如果你的工程名叫testhello,那么這個(gè)jar文件就是testhello.jar)文件。如果你的EJB容器(weblogic或JBoss)是在本機(jī)上,那么在JBuilder或eclipse中就可以直接鼠標(biāo)右擊EJB工程,來部署EJB。如果需要部署到遠(yuǎn)程服務(wù)器上,只需要通過EJB容器的控制臺(tái)將testhello.jar上傳到遠(yuǎn)程端,然后在EJB Modler里面按提示部署好EJB。最后,別忘了在JNDI Tree里面察看你的EJB工程的JNDI名,本例的JNDI名叫SayHello

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

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

    第五步:編寫一個(gè)簡單的struts工程(其實(shí)這些都可以用工具生成),一下是調(diào)用EJB的HelloAction的源代碼(特別要注意的是,記得要將之前第三步生成的jar包導(dǎo)入編輯器中,否則下面的代碼編譯通不過。如果你不知道導(dǎo)入jar包,就把那個(gè)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");


    ??//獲得遠(yuǎn)程EJB組件的home接口的引用
    ??????? testhello.SayHelloHome home=(testhello.SayHelloHome)PortableRemoteObject.narrow(obj,testhello.SayHelloHome.class);


    ??//獲得遠(yuǎn)程EJB組件的remote接口的引用
    ?????? ?testhello.SayHello hello=home.create();
    ?????? ?
    ?????? ?String name="飄然隨風(fēng)";
    ?????? ?String sayString=hello.sayHello(name);
    ?????? ?
    ?????? ?request.setAttribute("userName",name);
    ?????? ?request.setAttribute("passWord",sayString);
    ?????? ?request.removeAttribute(mapping.getAttribute());
    ??????
    ??return mapping.findForward("loginSuccess");
    ?}
    ?

    /*以下方法是作用是:通過傳遞環(huán)境屬性選擇JNDI驅(qū)動(dòng)和服務(wù)器的網(wǎng)絡(luò)位置,
    ? 并連接到連接到JNDI樹。
    ? 這是采用weblogic做EJB容器時(shí),遠(yuǎn)程調(diào)用EJB的固定初始化模式,初學(xué)者可以死記下來
    */
    ?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);
    ?}
    }

    第六步:如果你嚴(yán)格按照上面的步驟做了,那么剩下的就是同時(shí)啟動(dòng)weblogic和tomcat來測(cè)試了。

    posted on 2007-03-28 20:36 飛鳥 閱讀(281) 評(píng)論(0)  編輯  收藏 所屬分類: Struts
    主站蜘蛛池模板: 亚洲无av在线中文字幕| 日韩毛片无码永久免费看| 亚洲第一视频网站| h视频在线观看免费| www.亚洲精品.com| 免费一级全黄少妇性色生活片| 韩国免费a级作爱片无码| 亚洲日韩人妻第一页| 久久国产一片免费观看| 人人狠狠综合久久亚洲婷婷| 免费av片在线观看网站| 亚洲高清在线视频| 69国产精品视频免费| 亚洲一区二区三区免费在线观看| 一个人免费观看视频www| 亚洲精品国产高清在线观看| 九九精品成人免费国产片| 久久精品7亚洲午夜a| 亚洲视频免费观看| 亚洲精品伊人久久久久| 国产乱子伦片免费观看中字| xxxxx做受大片在线观看免费| 在线成人a毛片免费播放| 精品亚洲成a人在线观看| 国产国拍亚洲精品福利| 久久精品毛片免费观看| 亚洲日本人成中文字幕| mm1313亚洲精品国产| a级毛片免费在线观看| 91亚洲性爱在线视频| 免费乱理伦在线播放| 久久久精品午夜免费不卡| 亚洲理论片在线中文字幕| 亚洲免费在线播放| 亚洲国产美女精品久久久久∴| 无码精品国产一区二区三区免费| 国产精品久久亚洲不卡动漫| 免费在线观看污网站| 最近中文字幕2019高清免费| 美女扒开屁股让男人桶爽免费| 亚洲AV成人无码久久精品老人|