當前位置:開發者網絡 >> 技術教程 >> JSP教程 >> Java技巧及代碼 >> 內容
精彩推薦
分類最新教程
分類熱點教程
    
開發SessionBean
作者:未知
日期:2005-04-30
人氣:
投稿:(轉貼)
來源:未知
字體:
收藏:加入瀏覽器收藏
以下正文:

分以下幾個步驟:

1 建立測試web模塊

2 建立idea ejb模塊,編寫ejb

3 編譯,打包

4 寫測試頁面

5 發佈ejb,web測試模塊,測試ejb

 







1 建立web測試模塊。

 







在默認的user_projects\domains\mydomain\applications目錄下,新建一個名為web的文件夾。這個文件夾就是我們測試ejb的web模塊。

 







在web文件夾下新建WEB-INF文件夾,在WEB-INF下新建lib文件夾。

 







在WEB-INF下新建web.xml文件,內容如下:

<?xml version="1.0" encoding="UTF-8"?>

<!DOCTYPE web-app PUBLIC "-//Sun Microsystems, Inc.//DTD Web Application 2.3//EN" "http://java.sun.com/dtd/web-app_2_3.dtd">

<web-app>

</web-app>

 







ok。web測試模塊完成。

 







2 建立idea ejb模塊,編寫ejb

打開idea,選擇 file-new-ejb modules,把module name 改為“EjbSamples”,如下圖:



在服務器選項,選擇weblogic,其餘都按默認設置。最後點finish。

 



在src文件夾下新建包。包名如下:com.diegoyun.ejb.slb,如下圖:



把鼠標放到模塊名上,右鍵,選擇:new-sessionBean。然後在彈出的屬性框設置如下:

<ejb-name> :輸入Helloworld

Package:選擇/輸入com.diegoyun.ejb.slb

其餘信息idea會幫你自動設置,整個屬性框屬性如下:



點擊ok結束

 



這時會彈出ejb的屬性配置界面,如下:



在Display name,輸入 HelloworldEJB

 



然後切換到weblogic server頁,輸入jndi name如下:ejb/session/HelloworldEJB

 



界面如下:



關閉這個屬性頁。Idea已經幫你寫好了ejb的配置信息。可以打開META-INF/下的ejb-jar.xml和weblogic-ejb-jar.xml進行查看。

 



這時在com.diegoyun.ejb.slb下,應該有三個文件:Helloworld,HelloworldBean和HelloworldHome

 



在Helloworld接口中添加一個方法如下:

public interface Helloworld extends EJBObject {

    public String getGreeting(String name)throws RemoteException;

}

在HelloworldBean接口中添加一個方法如下:

public class HelloworldBean implements SessionBean {

……………

//omit others

    public String getGreeting(String name){

        return "Hello," + name;

    }

}

 



ok.你的Helloword ejb已經寫好了。

 



3 編譯,打包,發佈ejb

 



本例採用web方式訪問ejb。並且沒有把web模塊和ejb jar都打包成ear。所以必須先把ejb源碼編譯成jar,發佈這個jar,然後複製到測試web模塊的lib目錄下,這樣web頁面才能訪問到bean。

  本例採用ant腳本來執行編譯和打包等命令。在idea的ejbSamples模塊下新建一個build.xml腳本,內容如下:

<project name="ejb-example" default = "all" basedir=".">

    <!-- Set your personal configuration information below: -->

    <property name="j2eelib" value="D:\Devs\bea\weblogic81 erver\lib\weblogic.jar"/>

    <property name="uploadPath" value="D:\Devs\bea\user_projects\domains\mydomain\myserver\upload"/>

    <property name="webPath" value="D:\Devs\bea\user_projects\domains\mydomain\applications\web\WEB-INF\lib"/>

    <!-- End personal conf info -->

 



    <property name="source" value="src"/>

    <property name="meta" value="META-INF"/>

    <property name="build" value="${basedir}/build"/>

    <property name="packinfo" value="${build}/META-INF"/>

    <property name="dist" value="${basedir}/dist"/> 

 



    <target name="init">

    <!-- Create the time stamp -->

        <tstamp/>

        <mkdir dir="${build}"/>

        <mkdir dir="${dist}"/>

        <mkdir dir="${packinfo}"/>

    </target>

    <target name="ejb">

        <javac srcdir="${source}" classpath="${j2eelib}"

              destdir="${build}" includes="**/*.java"/>

    </target>

    <target name="copy" depends="ejb">

        <copydir src="${meta}" dest="${packinfo}" includes="**/*.xml"/>

    </target>

    <target name="ejb-jar" depends="ejb">

       <jar jarfile="${dist}/EjbSamples.jar" includes="**/*.xml,

              **/*.class" basedir="${build}"/>

    </target>

    <!-- copy jar to weblogic upload ant web diretory -->

    <target name="copy-to-path" depends="ejb-jar">

        <copyfile src="${dist}/EjbSamples.jar" dest="${uploadPath}/EjbSamples.jar" forceoverwrite="true"/>

        <copyfile src="${dist}/EjbSamples.jar" dest="${webPath}/EjbSamples.jar" forceoverwrite="true"/>

    </target>

    <target name="all" depends="init,ejb,copy,ejb-jar,copy-to-path"/>

</project>

 



針對你本機weblogic的安裝,修改腳本以下信息即可:

<!-- Set your personal configuration information below: -->

    <property name="j2eelib" value="D:\Devs\bea\weblogic81 erver\lib\weblogic.jar"/>

    <property name="uploadPath" value="D:\Devs\bea\user_projects\domains\mydomain\myserver\upload"/>

    <property name="webPath" value="D:\Devs\bea\user_projects\domains\mydomain\applications\web\WEB-INF\lib"/>

    <!-- End personal conf info -->

 



<property name="j2eelib"> :由於本例採用weblogic.jar進行javac編譯,所以必須知道該jar的位置。通常,它位於<bea diretory>\weblogic81 erver\lib\下。例如,如果你的weblogic安裝在C盤,那麼你的jar應該如此設置:

<property name="j2eelib" value="C: \bea\weblogic81 erver\lib\weblogic.jar"/>

 



<property name=" uploadPath "> :weblogic放置上傳文件的目錄。通常位於<bea diretory>\user_projects\domains\<your domain>\<your server>\upload文件夾下。如果你採用的是weblogic默認安裝,那麼<your domain>通常是mydomain(由weblogic默認創建),<your server>通常是myserver。例如,如果你的weblogic安裝在C盤,並且domain和server都採用默認,那麼屬性設置如下:

<property name="uploadPath" value="C:\bea\user_projects\domains\mydomain\myserver\upload"/>

 



<property name="webPath">:web測試模塊的lib目錄。按照你自己本機配置進行設置。

 



至此,ejb的編寫,配置工作全部完成。運行剛才的腳本。

Ant build.xml

然後查看 web測試模塊/WEB-INF/lib 下是否有ejb jar,weblogic的upload目錄下是否有ejb jar,如果沒有,請按所列步驟仔細檢查你的配置情況。

 



4 寫測試頁面進行測試

在web模塊下新建hello.jsp,內容如下:

<%@ page language="java" %>

<%@ page import="com.diegoyun.ejb.slb.Helloworld,

                com.diegoyun.ejb.slb.HelloworldHome,

                 javax.ejb.*,

                 java.math.*,

                 javax.naming.*,

                 javax.rmi.PortableRemoteObject,

                 java.rmi.RemoteException" %>

 



<html>

<head>

    <title>hello</title>

</head>

 



<body bgcolor="white">

<h1><b><center>Stateless Bean Examples</center></b></h1>

<hr>

 



<form name="frm" method="post"  action="hello.jsp">

    <input type="text" value="Diego" name="myname"/>

    <input type="submit" value="Submit"/>

</form>

<p>

<p>See :</p>

<br>

<%

    Helloworld hello = null;

    String name = null;

    name = request.getParameter("myname");

    if(name!=null && !"".equals(name)){

       try {

        InitialContext ic = new InitialContext();

        Object objRef = ic.lookup("ejb/session/HelloworldEJB");

        HelloworldHome home = (HelloworldHome)PortableRemoteObject.narrow(objRef, HelloworldHome.class);

        hello = home.create();

       } catch (RemoteException ex) {

           System.out.println("Couldn't create hello bean."+ ex.getMessage());

       } catch (CreateException ex) {

           System.out.println("Couldn't create hello bean."+ ex.getMessage());

       } catch (NamingException ex) {

           System.out.println("Unable to lookup home: "+ "HelloworldHome "+ ex.getMessage());

       }

    }

    if(hello!=null && !"".equals(hello)) {

        String s = hello.getGreeting(name);

        out.print(s);

    }

%>

 



</body>

</html>

 



5 發佈ejb,web測試模塊,調試ejb

發佈ejb。啟動weblogic server,打開控制台。

然後在ejb發佈頁面,選擇upload文件夾下的jar進行發佈,默認路徑應是:<bea diretory>\user_projects\domains\mydomain\myserver\upload



發佈web模塊

在deploy web application modules下,定位到<bea diretory>\user_projects\domains\mydomain\applications下,可以看到我們建立的web模塊。點“Target Module”進行發佈,name取名為“web”



ok。所有工作均已完成!



打開瀏覽器,輸入:http://localhost:7001/web/hello.jsp



點submit,就可以看到hello字樣。



FAQ:

 



1 為什麼在打包ejb之後,把ejb copy到weblogic的upload目錄下?(這個過程是由build.xml腳本完成的)

 



答:一般情況下如果你修改了ejb,那麼你就要在weblogic控制台重新deploy ejb的jar。經常進行這項工作是很煩人的。幸好weblogic提供了upload的特性,你把jar 上傳到weblogic,然後deploy upload文件夾裡的這個jar。以後每次在你修改ejb,打包成jar之後,你用新的jar覆蓋upload目錄下的jar,就不用重新deploy jar了。通過這種方式模擬了jboss的熱部署特性。

  其他模塊,例如war,ear,都可以通過這種方式來deploy。


相關文章: