首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 开发语言 > 编程 >

EJB 调度自学笔记

2013-08-04 
EJB 部署自学笔记1.Eclipse中新建EJB工程,添加服务器为jboss2.编写EJB服务端代码:(1)、AdviceHome:package

EJB 部署自学笔记
1.Eclipse中新建EJB工程,添加服务器为jboss
2.编写EJB服务端代码:
(1)、AdviceHome:

package headfist;

import java.rmi.RemoteException;
import javax.ejb.CreateException;
import javax.ejb.EJBHome;

public interface AdviceHome extends EJBHome {
public Advice create() throws CreateException,RemoteException;
}


(2)、Advice:
package headfist;

import java.rmi.RemoteException;
import javax.ejb.EJBObject;

public interface Advice extends EJBObject {
public String getAdvice() throws RemoteException;
}


(3)、AdviceBean:
package headfist;

import java.rmi.RemoteException;

import javax.ejb.EJBException;
import javax.ejb.SessionBean;
import javax.ejb.SessionContext;

public class AdviceBean implements SessionBean{

private String[] adviceStrings = {"one","two","three","four","five","six"};

@Override
public void ejbActivate() throws EJBException, RemoteException {
System.out.println("ejb activate");

}

@Override
public void ejbPassivate() throws EJBException, RemoteException {
System.out.println("ejb Passivate");

}

@Override
public void ejbRemove() throws EJBException, RemoteException {
System.out.println("ejb remove");

}

@Override
public void setSessionContext(SessionContext sessioncontext)
throws EJBException, RemoteException {
System.out.println("session context");

}

public String getAdvice() {
System.out.println("in get advice");
int random = (int) (Math.random()*adviceStrings.length);
return adviceStrings[random];
}

public void ejbCreate() {
System.out.println("in ejb create");
}
}


3、编写配置文件:
ejb-jar.xml:

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE ejb-jar PUBLIC "-//Sun Microsystems, Inc.//DTD Enterprise JavaBeans 2.0//EN" "http://java.sun.com/dtd/ejb-jar_2_0.dtd">
<ejb-jar>
  <display-name>Ejbl</display-name>
  <enterprise-beans>
    <session>
      <display-name>AdviceBean</display-name>
      <ejb-name>AdviceBean</ejb-name>
      <home>headfist.AdviceHome</home>
      <remote>headfist.Advice</remote>
      <ejb-class>headfist.AdviceBean</ejb-class>
      <session-type>Stateless</session-type>
      <transaction-type>Bean</transaction-type>
    </session>
  
  </enterprise-beans>
</ejb-jar>


Jboss.xml:
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE jboss PUBLIC "-//JBoss//DTD JBOSS 4.0//EN" "http://www.jboss.org/j2ee/dtd/jboss_4_0.dtd">
<jboss>
<enterprise-beans>
  <session>
   <ejb-name>AdviceBean</ejb-name>
   <jndi-name>AdviceBean</jndi-name>
  </session>
</enterprise-beans>
</jboss>


Jndi.properties:

java.naming.factory.initial=org.jnp.interfaces.NamingContextFactory
java.naming.factory.url.pkgs=org.jboss.naming:org.jnp.interfaces
java.naming.provider.url=localhost:1099




jar cvf AddCount.jar *.class META-INF/*.xml

配置类似如下:





3.客户端代码:

import java.util.Properties;

import headfist.Advice;
import headfist.AdviceHome;

import javax.naming.Context;
import javax.naming.InitialContext;
import javax.rmi.PortableRemoteObject;


public class Client {

public static void main(String[] args) {
new Client().go();
}

public void go() {
try{
//Properties prop = new Properties();
//prop.setProperty("java.naming.factory.initial","org.jnp.interfaces.NamingContextFactory");
//prop.setProperty("java.naming.factory.url.pkgs","org.jboss.naming:org.jnp.interfaces");
//prop.setProperty("java.naming.provider.url","localhost:1099");

Context ctx=new InitialContext();

        Object o=ctx.lookup("AdviceBean");

        AdviceHome home=(AdviceHome)PortableRemoteObject.narrow(o,AdviceHome.class);

            Advice advisor=home.create();
            System.out.println(advisor.getAdvice());

        }catch(Exception e) {
        e.printStackTrace();
        }
}
}

客户端需要引入EJB服务端写的jar包,以及JBOSS服务器jar包,同时copy一份jndi.properties文件到src根目录下。

热点排行