EJB入門--First EJB
8326 ワード
この記事は、<EJBプログラミングガイド>の実例をもとに作成されたもので、主に初心者に直感的な例と自分のログとして、EJBの原理的なものを紹介するつもりはありません.また、本人のレベルが限られていますので、お教えください.
筆者が使用するIDEは、Eclipse 3.0+MyEclipse4.01GA
J 2 EE容器:JBoss 4.0
この文書では、預金と引き出しを支援するステータスレスセッションBeanの完全な開発と導入のプロセスについて説明します.手順は次のとおりです.
1.ステータスレスセッションBeanの実装クラスを作成する.
2、ステータスレスセッションBeanのメインインタフェースとコンポーネントインタフェースを作成する.
3.Beanをアプリケーションにまとめ、配置記述を作成する.
4、EJBサーバーにアプリケーションを配備する.
5、Javaアプリケーションでテストする.
上記は主なプロセスです.手動で完了する必要がなく、IDEによって開発プロセスを簡略化することができます.IDEのこの機能がよく分からない場合は、製品ドキュメント(http://m/myeclipseide.com/enterpriseworkbench/help/index.jsp?topic=/com.genuitec.myeclipseide.com/quickstarts/firstejb/index.html)を参照してください.
一、新しいEJBプロジェクト、プロジェクト名はFundEJBで、その他のデフォルトは良いです.
二、Session Beanを作成する:
1、srcディレクトリの下で新しいパッケージを作成する:qiya.deng.fund.ejb、パッケージ名は最後に必ずejbを接尾辞にしてください.後で使用するXDocletツールが必要ですから.
2、新しいSessionBean classを作成し、StatelessFundManagerEJBと命名する.EJBを接尾辞とする必要がある.理由は同じで、規範によってEJBまたはBeanを接尾辞とするのが望ましい.
3、XDocletの構成:
プロジェクトを右クリックしてPropertiesを選択し、MyEclipse-XDocletを選択し、Add Stander...、Standard EJBを選択します.
Standard EJBを選択し、ejbxdocletで右クリックしてAddを追加し、この例ではjbossをアプリケーションサーバとして使用するため、jbossを選択します.jbossを選択して、次のプロパティを変更します.
Version = 4.0
destDir = src/META-INF
修正が完了したら、OKボタンをクリックしてメインウィンドウに戻ります.
4、Xdocletを実行する:
アイテムを右クリックしてMyEclipse->run Xdocletを選択します.実行はconsoleウィンドウでプロンプトが表示され、実行が完了するとディレクトリ構造が変化します.
5、実装クラスStatelessFundManagerEJBを編集する:
StatelessFundManagerEJBクラスを編集する前にStatelessFundManagerインタフェースを選択して観察すると、このリモートコンポーネントインタフェースのインタフェースメソッドとStatelessFundManagerのメソッドが対応していることがわかります.
StatelessFundManagerでJAvaファイルが最後に追加されました:
6、このアプリケーションをEJBサーバーに配備する:
配置記述項目はIDEで自動的に生成され、このファイルの位置は/META-INF/ejb-jarである.xml.ejb-jarを開くxml,jboss.xmlファイルの説明を表示します.
MyEclipseが提供する導入ツールによる導入:
JBossコンテナを実行すると、次のメッセージが表示されます.
MyEclipseでのアプリケーションサーバの使用については、ドキュメント(http://www.myeclipseide.com/images/tutorials/quickstarts/appservers/).
今まで、あなたは簡単な無状態のセッションBeanを発表しました.簡単なアプリケーションを書いてテストします.
三、テストを行うJavaクライアントプログラムを作成する.
クライアントプログラムは、Webプログラムであってもよいし、Applicationアプリケーションであってもよい.ここではアプリケーションを例に挙げます.
同様にEclipseを使用してJava Projectを新規作成し、ここではFundClientと命名します.プロジェクトを右クリックしてproperties->Java Build pathを選択し、Projectsに上のProject:FundEJBを追加します.LibrariesでAdd External JARs...、$JBoss_をHome/clientのディレクトリの下にあるjarファイルはすべてLibrariesに追加されます.
最後に、クライアントコードを記述します.
これで、おめでとうございます.あなたはすでに大功を成し遂げて、基本的にEJBに対して感性の認識を創立して、資料を参考にして深い学習を行うことができます.
筆者が使用するIDEは、Eclipse 3.0+MyEclipse4.01GA
J 2 EE容器:JBoss 4.0
この文書では、預金と引き出しを支援するステータスレスセッションBeanの完全な開発と導入のプロセスについて説明します.手順は次のとおりです.
1.ステータスレスセッションBeanの実装クラスを作成する.
2、ステータスレスセッションBeanのメインインタフェースとコンポーネントインタフェースを作成する.
3.Beanをアプリケーションにまとめ、配置記述を作成する.
4、EJBサーバーにアプリケーションを配備する.
5、Javaアプリケーションでテストする.
上記は主なプロセスです.手動で完了する必要がなく、IDEによって開発プロセスを簡略化することができます.IDEのこの機能がよく分からない場合は、製品ドキュメント(http://m/myeclipseide.com/enterpriseworkbench/help/index.jsp?topic=/com.genuitec.myeclipseide.com/quickstarts/firstejb/index.html)を参照してください.
一、新しいEJBプロジェクト、プロジェクト名はFundEJBで、その他のデフォルトは良いです.
二、Session Beanを作成する:
1、srcディレクトリの下で新しいパッケージを作成する:qiya.deng.fund.ejb、パッケージ名は最後に必ずejbを接尾辞にしてください.後で使用するXDocletツールが必要ですから.
2、新しいSessionBean classを作成し、StatelessFundManagerEJBと命名する.EJBを接尾辞とする必要がある.理由は同じで、規範によってEJBまたはBeanを接尾辞とするのが望ましい.
3、XDocletの構成:
プロジェクトを右クリックしてPropertiesを選択し、MyEclipse-XDocletを選択し、Add Stander...、Standard EJBを選択します.
Standard EJBを選択し、ejbxdocletで右クリックしてAddを追加し、この例ではjbossをアプリケーションサーバとして使用するため、jbossを選択します.jbossを選択して、次のプロパティを変更します.
Version = 4.0
destDir = src/META-INF
修正が完了したら、OKボタンをクリックしてメインウィンドウに戻ります.
4、Xdocletを実行する:
アイテムを右クリックしてMyEclipse->run Xdocletを選択します.実行はconsoleウィンドウでプロンプトが表示され、実行が完了するとディレクトリ構造が変化します.
5、実装クラスStatelessFundManagerEJBを編集する:
StatelessFundManagerEJBクラスを編集する前にStatelessFundManagerインタフェースを選択して観察すると、このリモートコンポーネントインタフェースのインタフェースメソッドとStatelessFundManagerのメソッドが対応していることがわかります.
StatelessFundManagerでJAvaファイルが最後に追加されました:
/**
*
* @param balance
* @param amount
* @return
*
* @ejb.interface-method
*/
public double addFunds(double balance,double amount){
balance += amount;
return balance;
}
/**
*
* @param balance
* @param amount
* @return
* @throws InsufficientBalanceException
*
* @ejb.interface-method
*/
public double withdrawFunds(double balance,double amount)throws InsufficientBalanceException {
if (balance < amount) {
throw (new InsufficientBalanceException());
}
balance -= amount;
return balance;
}
手順4を繰り返してXdocletを実行し、StatelessFundManagerインタフェースを確認します.6、このアプリケーションをEJBサーバーに配備する:
配置記述項目はIDEで自動的に生成され、このファイルの位置は/META-INF/ejb-jarである.xml.ejb-jarを開くxml,jboss.xmlファイルの説明を表示します.
MyEclipseが提供する導入ツールによる導入:
JBossコンテナを実行すると、次のメッセージが表示されます.
MyEclipseでのアプリケーションサーバの使用については、ドキュメント(http://www.myeclipseide.com/images/tutorials/quickstarts/appservers/).
今まで、あなたは簡単な無状態のセッションBeanを発表しました.簡単なアプリケーションを書いてテストします.
三、テストを行うJavaクライアントプログラムを作成する.
クライアントプログラムは、Webプログラムであってもよいし、Applicationアプリケーションであってもよい.ここではアプリケーションを例に挙げます.
同様にEclipseを使用してJava Projectを新規作成し、ここではFundClientと命名します.プロジェクトを右クリックしてproperties->Java Build pathを選択し、Projectsに上のProject:FundEJBを追加します.LibrariesでAdd External JARs...、$JBoss_をHome/clientのディレクトリの下にあるjarファイルはすべてLibrariesに追加されます.
最後に、クライアントコードを記述します.
package qiya.deng.client;
//import
public class StatelessFundManagerTestClient extends JFrame implements
ActionListener {
double balance = 0;
JTextField amount = new JTextField(10);
JButton addFunds = new JButton("Add Funds");
JButton withdrawFunds = new JButton("Withdraw Funds");
String msg = "Current account balance";
String strBal = "0";
JLabel status;
StatelessFundManager manager;
NumberFormat currencyFormatter;
public StatelessFundManagerTestClient(){
super("Fund Manager");
}
public static void main(String[] args){
new StatelessFundManagerTestClient().init();
}
private void init() {
buildGUI();
addWindowListener(new WindowAdapter(){
public void windowClosing(WindowEvent event){
System.exit(0);
}
});
addFunds.addActionListener(this);
withdrawFunds.addActionListener(this);
createFundManager();
currencyFormatter = NumberFormat.getCurrencyInstance();
String currencyOut = currencyFormatter.format(0);
status.setText(msg + currencyOut);
pack();
show();
}
private void buildGUI() {
GridBagLayout gl = new GridBagLayout();
GridBagConstraints gc = new GridBagConstraints();
Container container = getContentPane();
container.setLayout(gl);
gc.fill = GridBagConstraints.BOTH;
JLabel label = new JLabel("Enter Amount");
gl.setConstraints(label,gc);
container.add(label);
gc.gridwidth = GridBagConstraints.REMAINDER;
gl.setConstraints(amount,gc);
container.add(amount);
gl.setConstraints(addFunds,gc);
container.add(addFunds);
gl.setConstraints(withdrawFunds,gc);
container.add(withdrawFunds);
status = new JLabel(msg);
gl.setConstraints(status,gc);
container.add(status);
}
public void createFundManager(){
try {
Properties prop = new Properties();
prop.put(Context.INITIAL_CONTEXT_FACTORY,"org.jnp.interfaces.NamingContextFactory");
prop.put(Context.PROVIDER_URL,"localhost:1099");
Context initial = new InitialContext(prop);
Object objref = initial.lookup("ejb/StatelessFundManager");//JINI-Name
StatelessFundManagerHome home =
(StatelessFundManagerHome) PortableRemoteObject.narrow(objref,StatelessFundManagerHome.class);
manager = home.create();
} catch (ClassCastException e) {
e.printStackTrace();
} catch (RemoteException e) {
e.printStackTrace();
} catch (NamingException e) {
e.printStackTrace();
} catch (CreateException e) {
e.printStackTrace();
}
}
public void actionPerformed(ActionEvent e) {
if (e.getActionCommand().equalsIgnoreCase("Withdraw Funds")) {
System.out.println("Withdraw Funds");
}
if (e.getActionCommand().equalsIgnoreCase("Add Funds")) {
System.out.println("Add Funds");
}
if (e.getSource().equals(addFunds)){
System.out.println("addFunds");
try {
status.setText(msg + currencyFormatter.format(manager.addFunds(0,Double.parseDouble(amount.getText()))));
} catch (NumberFormatException e1) {
e1.printStackTrace();
} catch (RemoteException e1) {
e1.printStackTrace();
}
}
if (e.getSource().equals(withdrawFunds)){
System.out.println("withdrawFund");
try {
status.setText(msg + currencyFormatter.format(manager.withdrawFunds(100,Double.parseDouble(amount.getText()))));
} catch (NumberFormatException e1) {
e1.printStackTrace();
} catch (RemoteException e1) {
e1.printStackTrace();
} catch (InsufficientBalanceException e1) {
e1.printStackTrace();
}
}
}
}
その後、プログラムを実行してテストできます.これで、おめでとうございます.あなたはすでに大功を成し遂げて、基本的にEJBに対して感性の認識を創立して、資料を参考にして深い学習を行うことができます.