EJB 部署自学笔记

[b]1.Eclipse中新建EJB工程,添加服务器为jboss
2.编写EJB服务端代码:
(1)、AdviceHome:[/b]
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;
}


[b](2)、Advice:[/b]
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");
}
}


[b]3、编写配置文件:
ejb-jar.xml:[/b]
<?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>


[b]Jboss.xml:[/b]
<?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>


[b]Jndi.properties:[/b]

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根目录下。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值