[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根目录下。
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根目录下。