| Apdesigner プログラマーズガイド |
目次
索引
![]()
|
| 第2部 アプリケーション開発編 | > 第3章 Enterprise JavaBeans (EJB)を開発する | > 3.3 EJBのプログラミング |
Session Beanが公開する機能(ビジネスメソッド)を使用するためには、以下の順序で処理を行う必要があります。
以下にSession Beanを呼び出す例を示します。
import java.rmi.*;
import javax.rmi.*;
import javax.ejb.*;
import javax.naming.*;
import PackageHelloEJB.*;
public class SessionClient {
public static void main(String [] args) {
final String beanName = "java:comp/env/ejb/HelloEJB";
HelloEJBHome home = null;
try {
javax.naming.Context ic = new javax.naming.InitialContext();
java.lang.Object obj = (Object)ic.lookup(beanName);
home = (HelloEJBHome)
javax.rmi.PortableRemoteObject.narrow(obj, HelloEJBHome.class);
}
catch (javax.naming.NameNotFoundException e) {
e.printStackTrace();
}
catch(javax.naming.NamingException e) {
e.printStackTrace();
}
HelloEJBRemote eb = null;
try {
eb = home.create();
}
catch (java.rmi.RemoteException e) {
e.printStackTrace();
}
catch (javax.ejb.CreateException e) {
e.printStackTrace();
}
try {
System.out.println(eb.hello());
}
catch (java.rmi.RemoteException e) {
e.printStackTrace();
}
try {
eb.remove();
eb = null;
}
catch (java.rmi.RemoteException e) {
e.printStackTrace();
}
catch (javax.ejb.RemoveException e) {
e.printStackTrace();
}
}
}
Entity Beanを用いて永続データを操作するためには、以下の順序で処理を行う必要があります。なお、lookup処理以降は、データ挿入、データ削除、データ検索(更新)、インスタンスに依存しないなどのデータ操作によって処理が異なります。
以下にEntity Beanを呼び出す例を示します。
import java.rmi.*;
import javax.rmi.*;
import javax.ejb.*;
import javax.naming.*;
import Sample.*;
public class EntityClient {
public static void main(String [] args) {
final String lookupId = "java:comp/env/ejb/MemberBmp";
MemberBmpHome home = null;
MemberBmpRemote eb = null;
try {
javax.naming.Context ic = new javax.naming.InitialContext();
java.lang.Object obj = (Object)ic.lookup(lookupId);
home = (MemberBmpHome)javax.rmi.PortableRemoteObject.narrow(obj, MemberBmpHome.class);
}
catch (javax.naming.NameNotFoundException e) {
e.printStackTrace();
}
catch (javax.naming.NamingException e) {
e.printStackTrace();
}
try {
java.util.Collection ebCollection = home.findBySalary(100);
java.util.Iterator ebs = ebCollection.iterator();
while(ebs.hasNext()) {
eb = (MemberBmpRemote)javax.rmi.PortableRemoteObject.narrow(ebs.next(),MemberBmpRemote.class);
System.out.println("NAME:" + eb.getNAME());
System.out.println("ID:" + eb.getID());
System.out.println("AGE:" + eb.getAGE());
System.out.println("SALARY:" + eb.getSALARY());
}
}
catch (java.rmi.RemoteException e) {
e.printStackTrace();
}
catch (javax.ejb.FinderException e) {
e.printStackTrace();
}
}
}
Message-driven Beanの場合は、直接呼出しは行わず、メッセージサービスにメッセージを送信します。
メッセージを送信する手順を以下に示します。
以下にキューにメッセージを送信する例を示します。
import javax.ejb.*;
import javax.naming.*;
import Sample.*;
public class QueueSender {
public static void main(String [] args) {
final String factoryName = "java:comp/env/jms/TestQueueFactory ";
final String queueName = "java:comp/env/jms/TestQueue ";
javax.jms.QueueConnectionFactory factory = null;
javax.jms.Queue queue = null;
javax.jms.QueueConnection queueConnection = null;
javax.jms.QueueSession queueSession = null;
javax.jms.QueueSender queueSender = null;
javax.jms.TextMessage textMessage = null;
try {
javax.naming.InitialContext ic = new javax.naming.InitialContext();
factory = (javax.jms.QueueConnectionFactory)ic.lookup(factoryName);
queue = (javax.jms.Queue)ic.lookup(queueName);
queueConnection = factory.createQueueConnection();
queueSession = queueConnection.createQueueSession(false, javax.jms.Session.AUTO_ACKNOWLEDGE);
queueSender = queueSession.createSender(queue);
textMessage = queueSession.createTextMessage();
queueSender.send(textMessage);
queueConnection.close();
}
catch (javax.naming.NamingException ex) {
ex.printStackTrace();
}
catch (javax.jms.JMSException ex) {
ex.printStackTrace();
}
}
}
以下にトピックにメッセージを送信する例を示します。
import javax.ejb.*;
import javax.naming.*;
import Sample.*;
public class TopicClient {
public static void main(String [] args) {
final String factoryName = "java:comp/env/jms/TestTopicFactory ";
final String topicName = "java:comp/env/jms/TestTopic ";
javax.jms.TopicConnectionFactory factory = null;
javax.jms.Topic topic = null;
javax.jms.TopicConnection topicConnection = null;
javax.jms.TopicSession topicSession = null;
javax.jms.TopicPublisher topicPublisher = null;
javax.jms.TextMessage textMessage = null;
try {
javax.naming.InitialContext ic = new javax.naming.InitialContext();
factory = (javax.jms.TopicConnectionFactory)ic.lookup(factoryName);
topic = (javax.jms.Topic)ic.lookup(topicName);
topicConnection = factory.createTopicConnection();
topicSession = topicConnection.createTopicSession(false, javax.jms.Session.AUTO_ACKNOWLEDGE);
topicPublisher = topicSession.createPublisher(topic);
textMessage = topicSession.createTextMessage();
topicPublisher.publish(textMessage);
topicConnection.close();
}
catch (javax.naming.NamingException ex) {
ex.printStackTrace();
}
catch (javax.jms.JMSException ex) {
ex.printStackTrace();
}
}
}
目次
索引
![]()
|