了解这个例子的前提是对jboss的熟悉,和对ejb的略微了解。
Hello.jar的文件组织是这样的:
1.三个类
com.rox.Hello(SessionBean)
com.rox.HelloHome(EJBHome,接口)
com.rox.HelloWorld(EJBObject,接口)
2.配置文件
META-INF
ejb-jar.xml
jboss.xml
直接把Hello.jar放入jboss的运行目录(deploy)中,配置成功.
以下是各个文件的内容:
Hello.java:
package com.rox;
import java.rmi.RemoteException;
import javax.ejb.EJBException;
import javax.ejb.SessionBean;
import javax.ejb.SessionContext;
/**
* XDoclet-based session bean. The class must be declared
* public according to the EJB specification.
*
* To generate the EJB related files to this EJB:
* - Add Standard EJB module to XDoclet project properties
* - Customize XDoclet configuration for your appserver
* - Run XDoclet
*
* Below are the xdoclet-related tags needed for this EJB.
*
* @ejb.bean name="Hello"
* display-name="Name for Hello"
* description="Description for Hello"
* jndi-name="ejb/Hello"
* type="Stateless"
* view-type="remote"
*/
public class Hello implements SessionBean {
/** The session context */
private SessionContext context;
public Hello() {
super();
// TODO Auto-generated constructor stub
}
/**
* Set the associated session context. The container calls this method
* after the instance creation.
*
* The enterprise bean instance should store the reference to the context
* object in an instance variable.
*
* This method is called with no transaction context.
*
* @throws EJBException Thrown if method fails due to system-level error.
*/
public void setSessionContext(SessionContext newContext)
throws EJBException {
context = newContext;
}
public void ejbCreate() throws EJBException, RemoteException {
// TODO Auto-generated method stub
System.out.println("ejb create");
}
public void ejbRemove() throws EJBException, RemoteException {
// TODO Auto-generated method stub
}
public void ejbActivate() throws EJBException, RemoteException {
// TODO Auto-generated method stub
}
public void ejbPassivate() throws EJBException, RemoteException {
// TODO Auto-generated method stub
}
/**
* An example business method
*
* @ejb.interface-method view-type = "remote"
*
* @throws EJBException Thrown if method fails due to system-level error.
*/
public String sayIt() throws EJBException {
System.out.println("hello didi");
return "hello didi.";
}
}
HelloHome.java:
package com.rox;
/**
* Home interface for Hello.
* @xdoclet-generated at ${TODAY}
* @copyright The XDoclet Team
* @author XDoclet
* @version ${version}
*/
public interface HelloHome
extends javax.ejb.EJBHome
{
public static final String INITIAL_NAME="ejb/HelloWorld";
public static final String COMP_NAME="java:comp/env/ejb/HelloWorld";
public static final String JNDI_NAME="ejb/HelloWorld";
public com.rox.HelloWorld create()
throws javax.ejb.CreateException,java.rmi.RemoteException;
}
HelloWorld.java:
package com.rox;
import java.rmi.RemoteException;
import javax.ejb.EJBObject;
public interface HelloWorld extends EJBObject{
public String sayIt() throws RemoteException;
}
ejb-jar.xml:
<!---->
<!---->http://java.sun.com/dtd/ejb-jar_2_0.dtd">
<ejb-jar></ejb-jar>
<description></description>
<display-name></display-name>Generated by XDoclet
<enterprise-beans></enterprise-beans>
<!---->
<session></session>
<description></description>
<display-name></display-name>Name for Hello
<ejb-name></ejb-name>HelloWorld
<home></home>com.rox.HelloHome
<remote></remote>com.rox.HelloWorld
<ejb-class></ejb-class>com.rox.Hello
<session-type></session-type>Stateless
<transaction-type>
</transaction-type>
Container
<!---->
<!---->
<!---->
<!---->
<!---->
<!---->
<!---->
<!---->
<assembly-descriptor></assembly-descriptor>
<!---->
<!---->
<!---->
<!---->
<!---->
<!---->
<!---->
<!---->
<!---->
<!---->
jboss.xml:
<!---->
<!---->http://www.jboss.org/j2ee/dtd/jboss_2_4.dtd">
<jboss></jboss>
<enterprise-beans></enterprise-beans>
<!---->
<session></session>
<ejb-name></ejb-name>HelloWorld
<jndi-name></jndi-name>ejb/HelloWorld
<!---->
<resource-managers></resource-managers>
<!---->
只是配置完了,服务器没有报错,并不能说明问题.下面我们写一个测试的客户端程序EjbTest.java:
package com.rox;
import java.rmi.RemoteException;
import java.util.Hashtable;
import java.util.Properties;
import javax.ejb.CreateException;
import javax.naming.Context;
import javax.naming.NamingException;
public class EjbTest {
/**
* @param args
*/
public static void main(String[] args) {
// TODO Auto-generated method stub
javax.naming.InitialContext initialContext = null;
Properties environment = new Properties();
environment.put(Context.PROVIDER_URL, "localhost:1099");
environment.put(Context.INITIAL_CONTEXT_FACTORY, "org.jnp.interfaces.NamingContextFactory");
environment.put(Context.URL_PKG_PREFIXES, "org.jboss.naming:org.jnp.interfaces");
try {
initialContext = new javax.naming.InitialContext(environment);
} catch (NamingException e) {
// TODO Auto-generated catch block
e.printStackTrace();
return;
}
HelloHome helloHome = null;
try {
Object obj = initialContext.lookup("ejb/HelloWorld");
helloHome = (HelloHome)javax.rmi.PortableRemoteObject.narrow(obj, HelloHome.class);
} catch (ClassCastException e) {
// TODO Auto-generated catch block
e.printStackTrace();
} catch (NamingException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
try {
HelloWorld hello = helloHome.create();
System.out.println(hello.sayIt());
} catch (RemoteException e) {
// TODO Auto-generated catch block
e.printStackTrace();
} catch (CreateException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
}
注意:由于上面environment.put(Context.INITIAL_CONTEXT_FACTORY, "org.jnp.interfaces.NamingContextFactory");
这句话中用到了org.jnp.interfaces.NamingContextFactory类,所以应当确保{JBOSS_HOME}/client下的jbossall-client.jar位于classpath中.
运行EjbTest,输出结果:hello didi.
稍后我将结合该例子研究log4j,据说很简单的
分享到:
相关推荐
第一章 前言......4 1.1 本教程适合人群4 1.2 联系作者..4 第二章运行环境配置4 2.1 下载与安装........4 2.2 运行一个EJB3例子.......9 2.3 在独立的TOMCAT 中调用EJB....9 2.4 发布在JBOSS集成环境中的WEB应用调用...
第一章 前言......4 1.1 本教程适合人群4 1.2 联系作者..4 第二章运行环境配置4 2.1 下载与安装........4 2.2 运行一个EJB3例子.......9 2.3 在独立的TOMCAT 中调用EJB....9 2.4 发布在JBOSS集成环境中的WEB应用调用...
4.1 STATELESS SESSION BEANS(无状态BEAN)开发..................................................................................................13 4.1.1 开发只存在Remote接口的无状态Session Bean ..........
8.3.2 开发本地调用的无状态 Session Bean 311 8.4 发布Session Bean 314 8.4.1 打包EJB-JAR 315 8.4.2 Annotation与部署描述文件 315 8.5 开发有状态的Session Bean 318 8.6 Session Bean的生命周期 321 8.6.1 无...
(1):编写第一个无状态的SessionBean 2 一、配置开发环境 2 二、开发无状态Session Bean 3 三、编写客户端程序 5 (2):编写有状态的SessionBean 7 (3):使用Session Bean的本地接口 9 (4):Session Bean中的...
1、新建一个普通Java Project工程: 2、加入JBOSS运行库,及jboss\bin\client下的jboss-client.jar包 3、把EJB的接口拷贝到该工程内: 4、新建一个客户端类:类名(ClientTest) 代码如下: import java.util....
2.2 Stateless Session Beans(无状态bean)开发 2.3 Stateless Session Bean与Stateful Session Bean的区三别 2.4 Session Bean的生命周期 3.消息驱动Bean (Message Driven Bean) 3.1 Queue消息的发送与接收(PTP...
经典JAVA EE企业应用实战基于WEBLOGIC JBOSS的JSF+EJB 3+JPA整合开发——源码.part1 其他部分详见我的上传列表,全部分卷下载完成才能解压。 本书介绍了Java EE规范的三大主要规范JSF、EJB 3和JPA,其中JSF是Sun...
1.2. 第一个例子:注册示例.............................................................................................................................................. 15 1.2.1. 了解代码.................
会话Bean必须实现SessionBean,生成EJB对象,value参数用于计数器的初始化,在无状态会话Bean中不能带参数。本例子中EJB对象使用完毕,将从内存中清除。 创建具有3个Count EJB对象的数组 jndi配置,硬编码到java中...
经典JAVA EE企业应用实战基于WEBLOGIC JBOSS的JSF+EJB 3+JPA整合开发 PDF 书籍 本书介绍了Java EE规范的三大主要规范JSF、EJB 3和JPA,其中JSF是Sun公司提供的JSF RI;EJB 3部分则包含Session Bean、Message ...
1,下载安装JDK1.6; 2,下载安装MyEclispse8.5; 3,下载安装JBoss4; 4,在MyEclispse8.5环境下配置JBoss4;...5,新建一个EJB3项目;...6,新建一个远程的无状态的SessionBean; 远程接口代码如下:
经典JAVA EE企业应用实战基于WEBLOGIC JBOSS的JSF+EJB 3+JPA整合开发——源码.part4 其他部分详见我的上传列表,全部分卷下载完成才能解压。 本书介绍了Java EE规范的三大主要规范JSF、EJB 3和JPA,其中JSF是Sun...
经典JAVA EE企业应用实战基于WEBLOGIC JBOSS的JSF+EJB 3+JPA整合开发——源码第10章 其他部分详见我的上传列表。 本书介绍了Java EE规范的三大主要规范JSF、EJB 3和JPA,其中JSF是Sun公司提供的JSF RI;EJB 3部分...
经典JAVA EE企业应用实战基于WEBLOGIC JBOSS的JSF+EJB 3+JPA整合开发——源码第4章 其他部分详见我的上传列表。 本书介绍了Java EE规范的三大主要规范JSF、EJB 3和JPA,其中JSF是Sun公司提供的JSF RI;EJB 3部分则...
经典JAVA EE企业应用实战基于WEBLOGIC JBOSS的JSF+EJB 3+JPA整合开发——源码第二章 其他部分详见我的上传列表。 本书介绍了Java EE规范的三大主要规范JSF、EJB 3和JPA,其中JSF是Sun公司提供的JSF RI;EJB 3部分...
ejb java jboss welogic java6 java5 ejb3 session bean
经典JAVA EE企业应用实战基于WEBLOGIC JBOSS的JSF+EJB 3+JPA整合开发——源码第3章 其他部分详见我的上传列表 本书介绍了Java EE规范的三大主要规范JSF、EJB 3和JPA,其中JSF是Sun公司提供的JSF RI;EJB 3部分则包含...
入门及教材 逐步讲解如何在myeclipse下搭建SessionBean 和 EntityBean 如何部署至jboss 如何测试 ejb为2.1规范