欧美性猛交XXXX免费看蜜桃,成人网18免费韩国,亚洲国产成人精品区综合,欧美日韩一区二区三区高清不卡,亚洲综合一区二区精品久久

打開(kāi)APP
userphoto
未登錄

開(kāi)通VIP,暢享免費電子書(shū)等14項超值服

開(kāi)通VIP
Ejb簡(jiǎn)明教程[轉]
1.編寫(xiě)主接口程序
  在文本編輯器中編輯HelloHome.java文件,并保存在C:\work\hello目錄下,其代碼為:

  //本接口需要引入的類(lèi)或接口
  import java.rmi.RemoteException;
  import javax.ejb.CreateException;
  import javax.ejb.EJBHome;

  //定義主接口,必須繼承EJBHome
  public interface HelloHome extends EJBHome {
   //定義EJB創(chuàng )建方法
   Hello create() throws CreateException, RemoteException;
  }

  2.編寫(xiě)遠程接口程序
  在文本編輯器中編輯Hello.java文件,并保存在C:\work\hello目錄下。Hello.java文件的代碼為:

  //本接口需要引入的類(lèi)或接口
  import javax.ejb.EJBObject;
  import java.rmi.RemoteException;

  //定義遠程接口,必須繼承EJBObject
  public interface Hello extends EJBObject {
   //定義業(yè)務(wù)邏輯方法
   public String sayHello()
   throws RemoteException;
  }

  3.編寫(xiě)Bean類(lèi)實(shí)現程序
  在文件編輯器中編輯HelloBean.java文件,并保存在C:\work\hello目錄下。HellloBean.java文件的代碼為:

  //本類(lèi)需要引入的類(lèi)或接口
  import javax.ejb.CreateException;
  import javax.ejb.SessionBean;
  import javax.ejb.SessionContext;

  //實(shí)現業(yè)務(wù)邏輯,必須實(shí)現SessionBean接口
  public class HelloBean implements SessionBean {
   //這是個(gè)會(huì )話(huà)EJB,聲明會(huì )話(huà)上下文
   private SessionContext ctx;
   //聲明字符串
   private String words;
   //接口SessionBean中定義的方法,必須實(shí)現
   public void setSessionContext(SessionContext ctx) {
    this.ctx = ctx;
   }
   //接口SessionBean中定義的方法,必須實(shí)現
   public void ejbActivate() {
   }
   //接口SessionBean中定義的方法,必須實(shí)現
   public void ejbPassivate() {
   }
   //接口SessionBean中定義的方法,必須實(shí)現
   public void ejbRemove() {
   }
   //和主接口定義對應的方法,必須實(shí)現
   public void ejbCreate() throws CreateException {
    words = "Hello World";
   }
   //供客戶(hù)端調用的業(yè)務(wù)邏輯方法,這里只簡(jiǎn)單的打印字符串,并把字符串返回到客戶(hù)端
   public String sayHello()
   {
    System.out.println("I am in an EJB of Server ."+words);
    return words;
   }
  }




2.2.2 EJB代碼編譯

  首先打開(kāi)命令窗口,進(jìn)入C:\work\hello目錄,運行環(huán)境變量腳本程序:
   c:\work\hello>c:\work\setEnv
  建立build目錄:
   c:\work\hello>md build
  執行編譯命令:
   c:\work\hello>java -d build Hello.java HelloHome.java HelloBean.java
  其中:-d build 表示編譯生成的class文件放在build目錄中。

2.2.3 EJB部署文件編寫(xiě)

  部署文件是EJB的重要組成部分。簡(jiǎn)單地說(shuō),部署文件就是EJB的說(shuō)明文件,這個(gè)文件由服務(wù)器容器使用,服務(wù)器根據部署文件的說(shuō)明來(lái)管理EJB。
  EJB部署文件是標準的XML文件,必須遵守XML的語(yǔ)法規則。此外,還要遵守相關(guān)的DTD規則。
  部署文件到少有兩個(gè)文件ejb-jar.xml和weblogic-ejb-jar.xml。前者為EJB自身的一些特征,如名稱(chēng)、組成等:后者是和EJB部署相關(guān)的描述。
  編寫(xiě)部署文件:
  (1)在文件編輯器中編輯ejb-jar.xml文件,并保存在C:\work\hello目錄下。ejb-jar.xml文件的內容為:


<?xml version="1.0"?>

<!DOCTYPE ejb-jar PUBLIC ‘-//Sun Microsystems, Inc.//DTD Enterprise JavaBeans 1.1//EN‘ ‘http://java.sun.com/j2ee/dtds/ejb-jar_1_1.dtd‘>
<!--EJB說(shuō)明文件-->
<ejb-jar>
<small-icon>images/green-cube.gif</small-icon>
<enterprise-beans>
<!--定義會(huì )話(huà)EJB-->
<session>
<small-icon>images/orange-cube.gif</small-icon>
<!--定義會(huì )話(huà)EJB名-->
<ejb-name>MyFirstEJB</ejb-name>
<!--定義會(huì )話(huà)EJB主接口名-->
<home>HelloHome</home>
<!--定義會(huì )話(huà)EJB遠程接口名-->
<remote>Hello</remote>
<!--定義會(huì )話(huà)EJB實(shí)現類(lèi)名-->
<ejb-class>HelloBean</ejb-class>
<!--定義會(huì )話(huà)EJB類(lèi)型-->
<session-type>Stateless</session-type>
<transaction-type>Container</transaction-type>
</session>
</enterprise-beans>
<!--定義會(huì )話(huà)EJB裝配描述-->
<assembly-descriptor>
<container-transaction>
<method>
<ejb-name>MyFirstEJB</ejb-name>
<method-intf>Remote</method-intf>
<method-name>*</method-name>
</method>
<trans-attribute>Required</trans-attribute>
</container-transaction>
</assembly-descriptor>
</ejb-jar>

  (2)在文件編輯器中編輯weblogic-ejb-jar.xml文件,并保存在C:\work\hello目錄下。weblogic-ejb-jar.xml文件的內容為:


<?xml version="1.0"?>

<!DOCTYPE weblogic-ejb-jar PUBLIC ‘-//BEA Systems, Inc.//DTD WebLogic 5.1.0 EJB//EN‘ ‘http://www.bea.com/servers/wls510/dtd/weblogic-ejb-jar.dtd‘>
<!--EJB部署說(shuō)明文件-->
<weblogic-ejb-jar>
<weblogic-enterprise-bean>
<!--EJB名-->
<ejb-name>MyFirstEJB</ejb-name>
<!--定義EJB最大緩沖池-->
<caching-descriptor>
<max-beans-in-free-pool>100</max-beans-in-free-pool>
</caching-descriptor>
<!--定義EJB jndi名稱(chēng)-->
<jndi-name>HelloHome</jndi-name>
</weblogic-enterprise-bean>
</weblogic-ejb-jar>

2.2.4 打包

  把上面開(kāi)發(fā)的所有文件打成jar文件包。這些文件包括一三個(gè)類(lèi)文件:Hello.class、HelloHome.class、HelloBean.class和部署文件:ejb-jar.xml,weblogic-ejb-jar.xml。打包時(shí),文件放置的位置是嚴格要求的。具體為:*.class文件放在當前目錄(即C:\work\hello\build目錄下),部署文件必須入在下一級目錄Meta-inf中(即C:\work\hello\build\Meta-inf目錄下)。如果EJB包含圖像文件,則圖像文件必須在build目錄的下一級目錄images中(即C:\work\hello\build\images目錄下)。
  具體操作步驟為:
  (1)在build目錄中創(chuàng )建Meta-inf目錄,當前路徑為C:\work\hello,執行:
   c:\work\hello>md build\Meta-inf
  (2)把部署文件拷貝到hello\Meta-inf目錄下:
   c:\work\hello>copy *.xml build\Meta-inf
  (3)執行:
   c:\work\hello>md build\images
   c:\work\hello>copy *.gif build\images
  當然,本例中沒(méi)有使用圖像文件,所以可以免去此步驟。
  (4)用jar命令在build目錄下打包。當前路徑是c:\work\hello,運行:
   c:\work\hello>cd build
   c:\work\hello\bulid>jar cv0f std_myfirstejb_hello.jar META-INF *.class images
   c:\work\hello\build>cd..
  其中:jar是Jdk中的打包命令:cv0f是命令參數;std_myfirstejb_hello.jar是生成的文件名,由用戶(hù)指定。
  命令執行完后,在目錄build中應該生成文件std_myfirstejb_hello.jar。
  至此,打包完成。

2.2.5 編譯生成窗口代碼

  Weblogic Server提供了編譯生成容器代碼的工具,它是一個(gè)java程序weblogic.ejbc。在命令行窗口中執行:
  c:\work\hello>java weblogic.ejbc -compiler javac build\std_myfirstejb_hello.jar build\myfirstejb_hello.jar
  可以看出ejbc把std_myfirstejb_hello.jar文件編譯成myfirstejb_hello.jar,它包括了Weblogic Server平臺可以識別的ejb容器代碼。
  如果運行成功,則在build目錄下產(chǎn)生myfirstejb_hello.jar文件。

2.3 命令腳本文件

  上面在EJB的開(kāi)發(fā)過(guò)程中使用命令行的方式,我們可以把有所有這些命令行集中起來(lái)做成一個(gè)命令腳本文件build.cmd,使用它可以一次性執行這些命令,而不必一個(gè)命令一個(gè)命令的執行。該文件存放在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

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




2.4 EJB部署

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

2.5 EJB運行測試

  編寫(xiě)一個(gè)簡(jiǎn)單的客戶(hù)端程序HelloClient來(lái)測試已部署的ejb。

2.5.1 客戶(hù)端測試程序代碼編寫(xiě)

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

//本類(lèi)需要引入的類(lèi)或接口
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的客戶(hù)端測試程序
*/

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());
}


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

System.out.println("\n客戶(hù)端程序測試開(kāi)始...\n");

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

// 解析命令行
if (args.length != 1) {
System.out.println("用法: java HelloClient t3://hostname
ort");
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客戶(hù)端程序測試結束...\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 客戶(hù)端測試程序代碼編譯

  請執行以下操作:
  (1)在hello目錄下創(chuàng )建client子上當放置客戶(hù)端測試程序,創(chuàng )建client目錄,拷貝文件。執行:
   c:\work\hello>md client
   c:\work\hello>copy HelloClient.java client
  注意:因為HelloClient類(lèi)需引入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)進(jìn)入client目錄
   c:\work\hello>cd client
  (3)編譯:
   c:\work\hello\client>java HelloClient.java
  至此客戶(hù)端測試程序代碼編譯完畢。
  也可以把這些命令做成一個(gè)命令腳本文件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)啟動(dòng)Weblogic Server 6.0的缺省服務(wù)器,Weblogic Server的啟動(dòng)是個(gè)簡(jiǎn)單的過(guò)程,可以通過(guò)開(kāi)始菜單和直接運行啟動(dòng)命令腳本兩種方式,詳細情況請參見(jiàn)第1章。
  (2)運行測試程序。在命窗口中進(jìn)入C:\work\hello\client目錄,執行:
   c:\work\hello\client>java HelloClient t3://127.0.0.1:7001
  (3)觀(guān)察運行結果:應該如下:
  客戶(hù)端程序測試開(kāi)始...
  I am in client. Hello World
  客戶(hù)端程序測試結束...
而在Weblogic Server的命令行窗口中打印如下信息:
  I am in an EJB of Server .Hello World
并且每運行一次,這行信息就打印一次。

2.6 常見(jiàn)故障及解決方法

  (1)在命令行窗口中運行javac命令出現:
  "java"不是內部或外部命令,也不是可運行的程序或批處理文件。
  原因:javac.exe命令文件所有的路徑?jīng)]有包含在環(huán)境變量Path中。
  (2)執行javac -d build Hello.java HelloHome.java HelloBean.java 命令時(shí)出現編譯錯誤,其中有一條錯誤是:
  cannot resolve symbol
  symbol : class EJBHome
  location : package ejb
  impor javax.ebj.EJBHome;
  原因:javac.exe命令文件甩在的路徑?jīng)]有被包含在環(huán)境變量Path中。
  解決方法:運行環(huán)境變量腳本命令setEnv.cmd。
  (3)運行客戶(hù)端測試程序時(shí),即運行:
  java HelloClient t3://127.0.0.1:7001時(shí),出現:
   Exception in thread "main" java.lang.NoClassFoundError: HelloClient
  可能的原因是沒(méi)有把“.”設置到環(huán)境變量classpath中。
  (4)執行java weblogic.ejbc... 命令時(shí),拋出org.xml.sax.SAXParseException異常。
  原因:xml文件有語(yǔ)法錯誤
  解決辦法:進(jìn)行.xml文件有效性檢查。
  (5)執行之后僅顯示一行文字程序就結束
本站僅提供存儲服務(wù),所有內容均由用戶(hù)發(fā)布,如發(fā)現有害或侵權內容,請點(diǎn)擊舉報。
打開(kāi)APP,閱讀全文并永久保存 查看更多類(lèi)似文章
猜你喜歡
類(lèi)似文章
一個(gè)簡(jiǎn)單的EJB例子 - AJava
EJB核心技術(shù)及其應用
EJB調用的原理分析
Matlab調用Java類(lèi)入門(mén)
XDoclet:EJB開(kāi)發(fā)好幫手
weblogic下ant 的使用
更多類(lèi)似文章 >>
生活服務(wù)
分享 收藏 導長(cháng)圖 關(guān)注 下載文章
綁定賬號成功
后續可登錄賬號暢享VIP特權!
如果VIP功能使用有故障,
可點(diǎn)擊這里聯(lián)系客服!

聯(lián)系客服

欧美性猛交XXXX免费看蜜桃,成人网18免费韩国,亚洲国产成人精品区综合,欧美日韩一区二区三区高清不卡,亚洲综合一区二区精品久久