`

EJB sessionBean实例(JBoss和两台电脑)

    博客分类:
  • EJB
阅读更多
关于JBOSS 在两台电脑上布置EJB,一台作为SERVER,一台做为CLIENT的简单sample.
1首先启动 jboss :run -b 192.168.1.4 run.bat 这样可以启动server并绑定SERVER IP。
2在 server电脑上写以下代码。

一个EJB远程接口
import java.rmi.RemoteException;
import javax.ejb.*;

public interface Converter extends EJBObject {
   public double dollarToYen(double dollars) throws RemoteException;
   public double yenToEuro(double yen) throws RemoteException;

   // Simple example.
   public String helloEcho(String word) throws RemoteException;
}


一个EJB session bean
import java.rmi.RemoteException;
import javax.ejb.*;

public class ConverterEJB implements SessionBean {

   private static final long serialVersionUID = 1L;

   public double dollarToYen(double dollars) {
       return dollars * 121.6000;
   }

   public double yenToEuro(double yen) {
       return yen * 0.0077;
   }

   public String helloEcho(String word) {
       System.out.println("Someone called 'Hello Echo Successed!'");
       return "*********" + word + "*********";
   }

   public void ejbCreate() {
       System.out.println("Ejb 4 is creating!...");
   }

   public void ejbPostCreate() {
   }

   public void ejbActivate() throws EJBException, RemoteException {
   }

   public void ejbPassivate() throws EJBException, RemoteException {
   }

   public void ejbRemove() throws EJBException, RemoteException {
   }

   public void setSessionContext(SessionContext arg0) throws EJBException,
   RemoteException {
   }

}


一个EJB远程 HOME
import java.rmi.RemoteException;

import javax.ejb.CreateException;
import javax.ejb.EJBHome;

public interface ConverterHome extends EJBHome {
   Converter create() throws CreateException, RemoteException;
}



然后在meta-inf目录下写个 ejb-jar.xml

引用
<?xml version="1.0" encoding="UTF-8"?>
<ejb-jar xmlns="http://java.sun.com/xml/ns/j2ee"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
version="2.1"
xsi:schemaLocation="http://java.sun.com/xml/ns/j2ee http://java.sun.com/xml/ns/j2ee/ejb-jar_2_1.xsd">
<display-name>ConverJAR</display-name>
<enterprise-beans>
    <session>
      <display-name>ConverterEJB</display-name>
      <ejb-name>ConverterEJB</ejb-name>
      <home>ConverterHome</home>
      <remote>Converter</remote>
      <ejb-class>ConverterEJB</ejb-class>
      <session-type>Stateless</session-type>
      <transaction-type>Bean</transaction-type>
      <security-identity>
        <use-caller-identity/>
      </security-identity>
    </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>ConverterEJB</ejb-name>
           <jndi-name>MyConverter</jndi-name>
       </session>
   </enterprise-beans>
</jboss>



然后绑定 JNDI
jndi.properties
引用
java.naming.factory.initial=org.jnp.interfaces.NamingContextFactory
java.naming.provider.url=192.168.1.4:1099
java.naming.factory.url.pkgs=org.jboss.naming:org.jnp.interfaces


目录结构是

ejb_server
   |___src
         |___Converter.java,ConverterEJB,ConverterHome
         |___META-INF/ejb-jar.xml,jboss.xml
         |___jndi.properties

需要的jar有 jboss-j2ee.jar(一般也就是j2ee.jar)

 
3.CLIENT端

我在另一台电脑上写。
建立一个ejb_client 工程,
写个类

import java.util.Properties;

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


public class EJB_Client {
    public static void main(String[]args){
    	Properties pros=new Properties();
    	pros.setProperty("java.naming.factory.initial", "org.jnp.interfaces.NamingContextFactory");
    	pros.setProperty("java.naming.provider.url", "jnp://192.168.1.4:1099");
    	try {
			Context context=new InitialContext(pros);
			Object objref=context.lookup("MyConverter");
			
			ConverterHome home=(ConverterHome)PortableRemoteObject.narrow(objref, ConverterHome.class);
			Converter currentConverter=home.create();
			System.out.println(currentConverter.dollarToYen(100));
    	} catch (Exception e) {
			// TODO Auto-generated catch block
			e.printStackTrace();
		}
		
    }
}


需要的JAR包是 jbossall-client.jar包,
还有就是要调用的server端的远程接口,只用Converter,ConverterHome接口就可以,其他什么SESSION BEAN,什么配置文件都不要,也不用安装jboss


其它要注意的小知识
1.jboss 里,MarshalledValueEX 类在E:\development\jboss-4.2.0.GA\jbossall-client.jar里
2.不需要环境变量里jboss_home.
3.在JBOSS里,JNDI树查看 :查找service=JNDIView ,进入该页面后点击 list方法,就会列出JBoss上所有的JNDI服务。

分享到:
评论

相关推荐

    EJB3图文教程之开发Session Bean

    在JBuilder2007的建模透视图中,选择Session Bean图标,在绘图区域单击鼠标左键,创建新的Session Bean实例。随后,修改Session Bean的属性,如命名等。 **2. 实现业务方法** 在EJB3.0中,Session Bean可以被视为...

    EJB3.0开发Session Bean.rar

    **企业级JavaBeans (EJB) 3.0:核心概念与Session Bean详解** 企业级JavaBeans(Enterprise JavaBeans,...在深入学习EJB 3.0之前,建议阅读"**EJB3.0开发Session Bean.pdf**"这个文档,它将提供更详细的指导和实例。

    ejb-jboss-web实例的workspace

    在EJB-JBoss-Web的实例中,开发者可以创建和管理EJB组件,这些组件通常包括会话bean(Session Beans)、实体bean(Entity Beans)和消息驱动bean(Message-Driven Beans)。会话bean负责业务逻辑,实体bean持久化...

    itfuture_sessionbean

    在实际开发中,"sessionbean1.exe"可能是一个用于演示或教学目的的示例程序,它可能包含了Session Bean的实例,帮助开发者更好地理解Session Bean的工作原理和配置过程。通过运行这个程序,开发者可以直观地看到...

    Eclipse+Jboss EJB技术 会话Bean

    在EJB中,会话Bean分为两种类型:无状态会话Bean(Stateless Session Bean)和有状态会话Bean(Stateful Session Bean)。无状态会话Bean不保留任何客户端特定的信息,每次调用都是独立的。而有状态会话Bean则可以...

    jboss7 + EJB3

    "MyEJBProject"很可能是用户提供的EJB3项目实例,可能包含了各种EJB组件,例如业务逻辑的Session Bean,持久化的Entity Bean,或者是处理JMS消息的Message-Driven Bean。这个项目的详细内容需要查看源代码才能...

    JBOSS EJB3.0实例教程

    ### JBoss EJB3.0 实例教程知识点详解 #### 一、教程概览与适用人群 本教程《JBoss EJB3.0 实例教程》由黎活明编写,适用于希望深入了解Java企业级开发中EJB3.0组件使用的开发者们。无论是初学者还是有一定经验的...

    EJB2.0 实例开发

    1. **会话Bean(Session Beans)**:会话bean是EJB的一种类型,主要负责业务逻辑处理。它们可以代表客户端对象在服务器端执行操作,通常用于临时存储用户状态和执行事务。会话bean分为无状态会话bean和有状态会话...

    JBoss EJB3.0实例教程

    ### JBoss EJB3.0 实例教程:深入解析企业级Java Beans #### 知识点一:EJB3.0概念与应用架构 - **Enterprise JavaBeans (EJB)**:是Java EE平台的核心组件之一,用于开发分布式、可移植且高度可扩展的企业应用...

    Jboss EJB3.0 实例教程.pdf

    ### JBoss EJB3.0 实例教程知识点详解 #### 一、教程概览与适用人群 - **适用人群**:本教程适用于初学者及具有一定Java基础的学习者,特别是那些希望深入了解并掌握EJB 3.0技术的开发者。 - **内容特色**:通过...

    eclipse + JBoss 5 + EJB3开发指南

    例如,`@PostConstruct`和`@PreDestroy`可用于定义Bean实例初始化和销毁时执行的方法。 #### (5):使用配置文件发布Session Bean 除了使用注解外,还可以使用部署描述符(`ejb-jar.xml`)来配置Session Bean的...

    EJB3应用实例

    通过这个"JBOSS7+EJB3"实例,我们可以深入了解EJB3如何在实际环境中运行,以及如何在JBOSS7这样的应用服务器上部署和管理EJB服务。这不仅有助于提升开发者对EJB3的理解,也有助于在实际项目中更高效地利用EJB3来构建...

    jboss EJB3.0实例教程

    通过"jboss EJB3.0实例教程",你可以学习到如何在实际环境中运用这些概念和步骤,逐步掌握EJB3.0的开发技巧。教程中的`EJB3.pdf`很可能包含了详细的实例讲解,从基础概念到实战演练,帮助你深入理解并掌握EJB3.0的...

    Jboss下开发ejb应用之一会话bean的应用

    3. 本地调用:在同一个应用内,可以直接注入会话Bean实例进行调用。 六、EJB的优势 1. 面向接口编程:通过接口定义服务,实现松耦合。 2. 内置事务管理:EJB容器自动管理事务,保证数据一致性。 3. 容器管理的生命...

    MyEclipse+JBoss开发EJB.doc

    1. 新建SessionBean,比如名为UserServiceBean。 2. 选择包名(如zizz.ejb),并在Name字段输入Bean的名称。 3. 选择Bean类型为Stateless,表示这是一个不保存会话状态的Bean。 4. 选择Remote访问,表示客户端可以...

Global site tag (gtag.js) - Google Analytics