¸Þ½ÃÁö µå¸®ºì ºó
C:/ejb ¿öÅ©½ºÆäÀ̽º¿¡ »õ·Î¿î ÇÁ·ÎÁ§Æ® news ¸¦ »ý¼ºÇϰí, Add External JARs.. ¹öưÀ» ÀÌ¿ëÇÏ¿© weblogic.jar ¸¦
Build Path ¿¡ Ãß°¡ÇÕ´Ï´Ù.
¾Æ·¡ SQL¹®À» ÀÌ¿ëÇØ¼ ¿¹Á¦¿¡ »ç¿ëµÉ Å×À̺íÀ» »ý¼ºÇÕ´Ï´Ù.
create table news ( seq varchar2(5) primary key, name varchar2(20), title varchar2(50), content varchar2(4000));
¿£Æ¼Æ¼ ºó ÀÛ¼º
»ý¼ºÇÑ Å×À̺í°ú ¿¬°üÀ» ¸Î°í ÀÖ´Â ¿£Æ¼Æ¼ ºóÀ» ÀÛ¼ºÇÕ´Ï´Ù.
1. ¿ø°Ý ÀÎÅÍÆäÀ̽º ÀÛ¼º
News.java
package kr.co.hanbitbook.ejb.examples.news;
import java.rmi.RemoteException;
import javax.ejb.EJBObject;
public interface News extends EJBObject {
public String getSeq() throws RemoteException;
public void setName(String name) throws RemoteException;
public String getName() throws RemoteException;
public void setTitle(String title) throws RemoteException;
public String getTitle() throws RemoteException;
public void setContent(String content) throws RemoteException;
public String getContent() throws RemoteException;
}
2. Ȩ ÀÎÅÍÆäÀ̽º ÀÛ¼º
NewsHome.java
package kr.co.hanbitbook.ejb.examples.news;
import java.rmi.RemoteException;
import javax.ejb.CreateException;
import javax.ejb.EJBHome;
import javax.ejb.FinderException;
public interface NewsHome extends EJBHome {
public News create(
String seq,
String name,
String title,
String content)
throws CreateException, RemoteException;
public News findByPrimaryKey(String seq)
throws FinderException, RemoteException;
}
3. ºó Ŭ·¡½º ÀÛ¼º
NewsEJB.java
package kr.co.hanbitbook.ejb.examples.news;
import java.rmi.RemoteException;
import javax.ejb.CreateException;
import javax.ejb.EJBException;
import javax.ejb.EntityBean;
import javax.ejb.EntityContext;
import javax.ejb.RemoveException;
public abstract class NewsEJB implements EntityBean {
private static final long serialVersionUID = -5470278548227735562L;
EntityContext ctx;
public abstract void setSeq(String seq);
public abstract String getSeq();
public abstract void setName(String name);
public abstract String getName();
public abstract void setTitle(String title);
public abstract String getTitle();
public abstract void setContent(String content);
public abstract String getContent();
public String ejbCreate(
String seq,
String name,
String title,
String content) throws CreateException {
setSeq(seq);
setName(name);
setTitle(title);
setContent(content);
return null;
}
public void ejbPostCreate(
String seq,
String name,
String title,
String content) throws CreateException {
}
public void ejbActivate() throws EJBException, RemoteException {
// TODO Auto-generated method stub
}
public void ejbLoad() throws EJBException, RemoteException {
// TODO Auto-generated method stub
}
public void ejbPassivate() throws EJBException, RemoteException {
// TODO Auto-generated method stub
}
public void ejbRemove() throws RemoveException, EJBException,
RemoteException {
// TODO Auto-generated method stub
}
public void ejbStore() throws EJBException, RemoteException {
// TODO Auto-generated method stub
}
public void setEntityContext(EntityContext ctx) throws EJBException,
RemoteException {
this.ctx = ctx;
}
public void unsetEntityContext() throws EJBException, RemoteException {
ctx = null;
}
}
¸Þ½ÃÁö µå¸®ºì ºó ÀÛ¼º
AddNewsBean.java
package kr.co.hanbitbook.ejb.examples.news;
import javax.ejb.CreateException;
import javax.ejb.EJBException;
import javax.ejb.MessageDrivenBean;
import javax.ejb.MessageDrivenContext;
import javax.jms.JMSException;
import javax.jms.MapMessage;
import javax.jms.Message;
import javax.jms.MessageListener;
import javax.naming.Context;
import javax.naming.InitialContext;
public class AddNewsBean implements MessageDrivenBean, MessageListener {
private static final long serialVersionUID = -2106248019150161026L;
MessageDrivenContext ctx;
NewsHome home;
public void ejbCreate() throws CreateException {}
public void ejbRemove() throws EJBException {
// TODO Auto-generated method stub
}
public void setMessageDrivenContext(MessageDrivenContext ctx)
throws EJBException {
this.ctx = ctx;
}
public void onMessage(Message msg) {
System.out.println("on Message È£Ãâ");
try {
Context initial = new InitialContext();
Object obj = initial.lookup("news"); // news !!!
home = (NewsHome)obj;
} catch (Exception e) {
System.out.println(e);
}
try {
if ( msg instanceof MapMessage ) {
MapMessage mm = (MapMessage)msg;
String seq = mm.getString("seq");
String name = mm.getString("name");
String title = mm.getString("title");
String content = mm.getString("content");
System.out.println(seq + ":" + name + ":" + title + ":" + content);
try {
News news = null;
try {
news = home.findByPrimaryKey(seq);
} catch (Exception e) {
System.out.println("findByPrimaryKey : " + e.toString());
}
if (news == null) {
System.out.println("°°Àº seq°ªÀÌ ¾øÀ» °æ¿ì......");
home.create(seq, name, title, content);
System.out.println("»õ·Î¿î °ªÀ» ÀúÀåÇß½À´Ï´Ù.");
}
} catch (Exception e) {
System.out.println("CMP Exception : " + e.toString());
}
}µå
} catch (JMSException e) {
System.out.println("JMSException : " + e.toString());
}
} // onMessage ¸Þ¼Òµå ³¡
}
¹èÄ¡ µð½ºÅ©¸³ÅÍ ÀÛ¼º(À¥·ÎÁ÷ ºô´õ ÀÌ¿ë) ¹× ¹èÄ¡
À¥·ÎÁ÷ ºô´õ¸¦ ½ÇÇàÇϰí ÄÄÆÄÀÏµÈ °æ·ÎÀÎ C:\ejb\news\bin ¸¦ ¼±ÅÃÇÕ´Ï´Ù.
ÁÂÃø¸Þ´º¿¡¼ NewsEJB ¸¦ ¼±ÅÃÇϰí General ÅÇ¿¡¼ JNDI Name: Ç׸ñÀÇ °ªÀÌ news ·Î ¼öÁ¤ÇÕ´Ï´Ù.

Classes ÅÇ¿¡¼ ¿£Æ¼Æ¼ ºóÀ» ±¸¼ºÇϴ Ŭ·¡½º°¡ ¿Ã¹Ù¸¥Áö È®ÀÎÇÕ´Ï´Ù.

Persistence ÅÇ¿¡¼ DataSourde name: oraxa9, Table name: NEWS ·Î ¼³Á¤ÇÕ´Ï´Ù.

Resources ¸Þ´º¿¡¼ ¿£Æ¼Æ¼ ºóÀÌ »ç¿ëÇÒ µ¥ÀÌÅÍ ¼Ò½º¸¦ ±×¸²Ã³·³ ¼³Á¤ÇÕ´Ï´Ù.

CMP Fields ¸Þ´º¿¡¼ °¢ Çʵ带 Ŭ¸¯ÇÏ¿© Edit ¹öưÀ» Ȱ¼ºÈ ÇÑ ÈÄ, Edit ¹öưÀ» ÀÌ¿ëÇØ¼ Çʵå ŸÀÔÀ» ¸ðµÎ LongString À¸·Î
¼³Á¤ÇÕ´Ï´Ù.

JNDI name: addnews ·Î, ¸ñÀûÁö Çü½ÄÀ» javax.jms.Topic ·Î, ¸ñÀûÁöÀÇ JNDI ¸íÀº
jmstopic ·Î ÁöÁ¤ÇÕ´Ï´Ù.
(jmstopicÀ¸·Î ÁöÁ¤ÇÏ´Â ºÎºÐÀº XML ÆÄÀÏÀ» ¿¾î Á÷Á¢ ¼öÁ¤ÇØ ÁÖ¾î¾ß ÇÕ´Ï´Ù.)

Classes ÅÇ¿¡¼ ¸Þ½ÃÁö µå¸®ºì ºóÀ» ±¸¼ºÇϴ Ŭ·¡½º¸¦ È®ÀÎÇÕ´Ï´Ù.

Resources ÁÂÃø ¸Þ´º¿¡¼ EJB Refs ÅÇÀ» ¼±ÅÃÇÑ ÈÄ, Add ¹öưÀ» Ŭ¸¯ÇÏ¿© ¸Þ½ÃÁö ºóÀÌ »ç¿ëÇÒ ¿£Æ¼Æ¼ ºó¿¡ ´ëÇÑ ·¹ÆÛ·±½º¸¦ ÁöÁ¤ÇÕ´Ï´Ù.
(±×¸²¿¡¼¿Í °°ÀÌ news.jar#NewsEJB °ªÀ» ³ÖÀ» ¼ö ¾øÀ» ¼ö ÀÖ½À´Ï´Ù. ÀÌ ºÎºÐÀº XMLÆÄÀÏÀ» ¿¾î Á÷Á¢ ÆíÁýÇØ ÁÖ¾î¾ß ÇÕ´Ï´Ù.)

·¹ÆÛ·±½º°¡ Ãß°¡µÇ´Â °ÍÀ» È®ÀÎÇÒ ¼ö ÀÖ½À´Ï´Ù.

Save ¹öưÀ» Ŭ¸¯ÇÏ¿© ¹èÄ¡ µð½ºÅ©¸³ÅÍ ÆÄÀÏÀ» »ý¼ºÇÕ´Ï´Ù.
ejb-jar.xml ÆÄÀÏÀ» ¿°í ejb-link ¿¤¸®¸ÕÆ®ÀÇ °ªÀ» news.jar#NewsEJB ·Î ¼öÁ¤ÇÕ´Ï´Ù.
weblogic-ejb-jar.xml ÆÄÀÏÀ» ¿°í destination-jndi-name ¿¤¸®¸ÕÆ®ÀÇ °ªÀ» jmstopic ·Î
¼öÁ¤ÇÕ´Ï´Ù.
´Ù½Ã À¥·ÎÁ÷ ºô´õ¸¦ ½ÇÇàÇÑ ÈÄ À¥·ÎÁ÷ ºô´õÀÇ Archive...¹öưÀ» ÀÌ¿ëÇØ¼ news.jar ÆÄÀÏÀ» C:\ejb\news µð·ºÅ丮¿¡ »ý¼ºÇÕ´Ï´Ù.
Äֿܼ¡¼ news.jar ÆÄÀÏÀ» ¹èÄ¡ÇÕ´Ï´Ù.
Å×½ºÆ®
C:/ejb ¿öÅ©½ºÆäÀ̽º¿¡ »õ·Î¿î ÇÁ·ÎÁ§Æ® news_client ¸¦ »ý¼ºÇϰí, Add External JARs.. ¹öưÀ» ÀÌ¿ëÇÏ¿© weblogic.jar
¸¦ Build Path ¿¡ Ãß°¡ÇÕ´Ï´Ù.
¾Æ·¡ ÀÚ¹Ù ÆÄÀÏÀ» ÀÛ¼ºÇÏ°í ½ÇÇàÇÕ´Ï´Ù.
´ÙÀ½ SQL*PLUS¸¦ ¿°í news Å×ÀÌºí¿¡ µ¥ÀÌÅͰ¡ ÀÖ´ÂÁö È®ÀÎÇÕ´Ï´Ù.
NewsClient.java
package kr.co.hanbitbook.ejb.examples.news;
import javax.jms.MapMessage;
import javax.jms.Session;
import javax.jms.Topic;
import javax.jms.TopicConnection;
import javax.jms.TopicConnectionFactory;
import javax.jms.TopicPublisher;
import javax.jms.TopicSession;
import javax.naming.Context;
import javax.naming.InitialContext;
import javax.naming.NamingException;
public class NewsClient {
public static void main(String[] args) {
Context ctx = null;
try{
java.util.Properties p = new java.util.Properties();
p.put(Context.INITIAL_CONTEXT_FACTORY, "weblogic.jndi.WLInitialContextFactory");
p.put(Context.PROVIDER_URL, "t3://localhost:7001");
ctx = new InitialContext(p);
TopicConnectionFactory tcf = (TopicConnectionFactory) ctx.lookup("weblogic.jms.ConnectionFactory");
TopicConnection qc = tcf.createTopicConnection();
qc.start();
Topic Topic = null;
TopicSession tsession = null;
try{
tsession = qc.createTopicSession(false, Session.AUTO_ACKNOWLEDGE);
Topic = (Topic)ctx.lookup("jmstopic");
}catch(NamingException ne){
Topic = tsession.createTopic("jmstopic");
ctx.bind("jmstopic", Topic);
}
TopicPublisher qsender = tsession.createPublisher(Topic);
MapMessage mm = tsession.createMapMessage();
String[] msg = new String[]{ "±è¼º¹Ú", "»õ·Î¿î ¿µÈ", "¹ÝÁöÀÇ Á¦¿Õ 3" };
mm.setString("seq", "1");
mm.setString("name",msg[0]);
mm.setString("title",msg[1]);
mm.setString("content", msg[2]);
qsender.publish(mm);
System.out.println("»õ·Î¿î ´º½º¸¦ Àü¼ÛÇÏ¿´½À´Ï´Ù.");
qc.close();
}catch(Exception e){
System.out.println(e.toString());
}
}
}
Âü°í ¹®¼
¾Ë±â½±°Ô Ç®¾î ¾´ À¥·ÎÁ÷°ú EJB 11Àå -ÇѺû¹Ìµð¾î,±è¼º¹Ú Àú-
¿¹Á¦¿¡ ¾²¿´´ø jar,war,ear ÆÄÀÏ (¹èÄ¡½Ã ÀÍ¼Ê¼Ç ¹ß»ýÇÒ ¶§ Âü°í¿ë)
- ´ÙÀ½ : ¼¼¼Ç ºó°ú ¿£Æ¼Æ¼ ºóÀ» ÀÌ¿ëÇÑ °Ô½ÃÆÇ ¿¹Á¦
- ÀÌÀü : CMR
