J2EE從零開始之EJB開發過程

發表于:2007-04-29來源:作者:點擊數: 標簽:開發上面過程ejb開始
上面在EJB的 開發 過程中使用命令行的方式,我們可以把有所有這些命令行集中起來做成一個命令腳本文件build.cmd,使用它可以一次性執行這些命令,而不必一個命令一個命令的執行。該文件存放在C:\work\hello目錄下,其內容為: md build javac -d build Hello.
上面在EJB的開發過程中使用命令行的方式,我們可以把有所有這些命令行集中起來做成一個命令腳本文件build.cmd,使用它可以一次性執行這些命令,而不必一個命令一個命令的執行。該文件存放在C:\work\hello目錄下,其內容為:

md build
javac -d build Hello.java HelloHome.java HelloBean.java
md build\Meta-inf
copy *.xml build\Meta-inf
md build\images
copy *.gif build\images
cd build
jar cv0f std_myfirstejb_hello.jar META-INF *.class images
cd ..
java weblogic.ejbc -compiler javac build\std_myfirstejb_hello.jar build\myfirstejb_hello.jar

  這樣,在程序代碼編輯好的情況下,只運行這個命令腳本程序,就可以完成EJB開發。

2.4 EJB部署

  EJB的部署有很多種方法,最簡單的一種就是把C:\work\hello\build目錄下的myfirstejb_hello.jar文件拷貝到服務器的applications目錄下,即C:\bea\wlserver6.0\config\mydomain\applications目錄下。如果服務器已經啟動,則在拷貝的時候不需要重新啟動服務器。服務器會自動檢測到新拷貝的EJB。

2.5 EJB運行測試

  編寫一個簡單的客戶端程序HelloClient來測試已部署的ejb。

2.5.1 客戶端測試程序代碼編寫

  在文本編輯器中編輯HelloClient.java文件,并保存在C:\work\hello目錄下,其代碼如下:

//本類需要引入的類或接口
import java.rmi.RemoteException;
import java.util.Properties;
import javax.ejb.CreateException;
import javax.ejb.RemoveException;
import javax.naming.Context;
import javax.naming.InitialContext;
import javax.naming.NamingException;
import javax.rmi.PortableRemoteObject;

/**
* 這是EJB的客戶端測試程序
*/

public class HelloClient {

private static final String JNDI_NAME = "HelloHome";

private String url;
private HelloHome home;

public HelloClient(String url)
throws NamingException
{

this.url = url;

home = lookupHome();
}

void test()
throws RemoteException,CreateException
{
Hello hello = (Hello) PortableRemoteObject.narrow(home.create(), Hello.class);
System.out.println("I am in client. "+hello.sayHello());
}


/**
* 運行這個實例:
* java HelloClient t3://localhost:7001
*/
public static void main(String[] args) throws Exception {

System.out.println("\n客戶端程序測試開始...\n");

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

// 解析命令行
if (args.length != 1) {
System.out.println("用法: java HelloClient t3://hostname:port");
return;
} else {
url = args[0];
}
HelloClient client = null;
try {
client = new HelloClient(url);
} catch (NamingException ne) {
System.exit(1);
}
try {
client.test();
} catch (Exception e) {
System.exit(1);
}
System.out.println("\n客戶端程序測試結束...\n");
}


/**
* 查找 EJB 的主接口
*/
private HelloHome lookupHome()
throws NamingException
{
Context ctx = getInitialContext();
Object home = ctx.lookup(JNDI_NAME);
return (HelloHome) PortableRemoteObject.narrow(home, HelloHome.class);
}

/**
* 使用屬性對象獲取上下文
*/
private Context getInitialContext() throws NamingException {
Properties h = new Properties();
h.put(Context.INITIAL_CONTEXT_FACTORY,
"weblogic.jndi.WLInitialContextFactory");
h.put(Context.PROVIDER_URL, url);
return new InitialContext(h);
}
}

2.5.2 客戶端測試程序代碼編譯

  請執行以下操作:
   (1)在hello目錄下創建client子上當放置客戶端測試程序,創建client目錄,拷貝文件。執行:
    c:\work\hello>md client
    c:\work\hello>copy HelloClient.java client
   注意:因為HelloClient類需引入Hello和HelloHome接口,因此要從build目錄下拷貝Hello.class和HelloHome.class文件到client目錄。

   c:\work\hello>copy build\Hello.class client
    c:\work\hello>copy build\HelloHome.class client
   (2)進入client目錄
    c:\work\hello>cd client
   (3)編譯:
    c:\work\hello\client>java HelloClient.java
   至此客戶端測試程序代碼編譯完畢。
   也可以把這些命令做成一個命令腳本文件build_client.cmd,保存在C:\work\hello目錄,其代碼如下:

md client
copy HelloClient.java client
copy build\Hello.class client
copy build\HelloHome.class client
cd client
javac HelloClient.java

2.5.3 運行測試

  運行測試程序,執行如下操作:
   (1)啟動Weblogic Server 6.0的缺省服務器,Weblogic Server的啟動是個簡單的過程,可以通過開始菜單和直接運行啟動命令腳本兩種方式,詳細情況請參見第1章。
   (2)運行測試程序。在命窗口中進入C:\work\hello\client目錄,執行:
    c:\work\hello\client>java HelloClient t3://127.0.0.1:7001
   (3)觀察運行結果:應該如下:
   客戶端程序測試開始...
   I am in client. Hello World
   客戶端程序測試結束...
而在Weblogic Server的命令行窗口中打印如下信息:
   I am in an EJB of Server .Hello World
并且每運行一次,這行信息就打印一次。

2.6 常見故障及解決方法

  (1)在命令行窗口中運行javac命令出現:
   "java"不是內部或外部命令,也不是可運行的程序或批處理文件。
   原因:javac.exe命令文件所有的路徑沒有包含在環境變量Path中。
   (2)執行javac -d build Hello.java HelloHome.java HelloBean.java 命令時出現編譯錯誤,其中有一條錯誤是:
   cannot resolve symbol
   symbol : class EJBHome
   location : package ejb
   impor javax.ebj.EJBHome;
   原因:javac.exe命令文件甩在的路徑沒有被包含在環境變量Path中。
   解決方法:運行環境變量腳本命令setEnv.cmd。
   (3)運行客戶端測試程序時,即運行:
   java HelloClient t3://127.0.0.1:7001時,出現:
    Exception in thread "main" java.lang.NoClassFoundError: HelloClient
   可能的原因是沒有把“.”設置到環境變量classpath中。
   (4)執行java weblogic.ejbc... 命令時,拋出org.xml.sax.SAXParseException異常。
   原因:xml文件有語法錯誤
   解決辦法:進行.xml文件有效性檢查。
   (5)執行之后僅顯示一行文字程序就結束。
   原因:可能沒有部署或者沒有正確部署EJB。
   解決辦法:仔細查看本書3.4節的內容。

2.7 本章小結

  本章首先討論如何進行一些準備工作,然后詳細介紹了一個簡單的EJB的開發過程,包括編寫代碼、編譯、打包、部署和測試運行。通過本章的學習,以期對J2EE的開發有一個感性的認識。
   接下來的第3章到第7章將全面深入的討論EJB應用及其開發的有關問題。
   ----
   對新手的提示:本章所稱腳本文件使用的擴展名是.cmd,實際上該文件在DOS平臺上擴展名為.bat,也稱為批處理文件。
   本章的內容涉及到DOS環境設置,如果你想了解更多的內容可以查詢相關的內容


原文轉自:http://www.anti-gravitydesign.com

評論列表(網友評論僅供網友表達個人看法,并不表明本站同意其觀點或證實其描述)
...

熱門標簽

国产97人人超碰caoprom_尤物国产在线一区手机播放_精品国产一区二区三_色天使久久综合给合久久97