JBOSS是一个开放源码的免费EJB服务器,它实现了其它J2EE所规定的大多数功能,现在sun公司已经把JBOSS作为J2EE1.4的标准实现服务器了,本文就带领大家从Jboss3.2.6的安装开始,一直到开发出一个完整的”hello,world”的ejb为止。
JBOSS的安装与启动
如果你是第一次使用JBOSS,你一定会感到很沮丧,因为它虽然是开放源码,并可以免费下载,但是它的文档或技术培训却是收费的,而且对于国人来说高不可及(几天的培训大约要10000美元,文档也要几十至几百美一份)!如果你试图在网上找一些关于JBOSS下简单入门的文章,可只是那么寥寥可数的几篇,而且很少有菜鸟级的文章。相反,对其核心设计等高深理论性的文章倒是居多,这样反倒让你越看越糊涂。因此,本文的目的就是:让你的JBOSS尽快地跑起来,并马上可以在其之上开发出简单的EJB!
在安装JBOSS之前,首先要确定你已经安装了jdk1.3或以上版本,由于JBOSS不像weblogic等其它应用服务器捆绑了JDK,因此JBOSS非要jdk的支持才能运行。然后在 http://www.jboss.org网站上下载一个jboss的发行版(我下载的是jboss-3.2.6.zip),在本文中我使用的其稳定的发行版JBOSS3.2.6 (集成了tomcat4.1),需要附带一句的是tomcat是apache基金会旗下著名的开源jsp/servlet服务器,如果要更多的了解tomcat,请访问http://jakarta.apache.org 以获得更详细的信息。
当你把jboss-3.2.6.zip下载之后,下一步就是将它解压缩,如果你是在windows上,可以用winzip或winrar;如果是在linux下,就用unzip命令,以我自己为例,假设我将它解压到了如下目录
c:\ jboss-3.2.6
相对于weblogic,websphere等j2ee服务器来说,JBOSS的启动是简单得出乎意料,如果你是windows用户,只需要进入c:\ jboss-3.2.6\bin下面,输入run.bat命令,JBOSS就跑起来啦;如果是linux用户的话,只需要进入c:\ jboss-3.2.6\bin下面,输入run.sh,那么JBOSS也同样运行。怎么样?是挺简单的吧?
当你输入run.bat或run.sh后,你会发现屏幕上会不断地滚动一些提示信息,过大约1分钟之后(依赖于你机器的配置,我的是P4 1.7G,128M),提示信息就会停止滚动,如下图所示:
(注意:如果你是在windows下,那么请让这个DOS窗口一直保持这种状态,千万不可将其中止!)
这样,JBOSS就已经处于运行状态了。和其它J2EE服务器一样,JBOSS也提供了一个WEB方式控制台,使用方法是在IE浏览器中输入http://127.0.0.1:8080/web-console/,这样你就会看到如下图所示的一个控制台:
怎么样?这个界面丝毫不比weblogic的差吧?通过这个控制台,你可以动态地对JBOSS的服务进行管理和监控。
编写第一个EJB:”hello,world”
下面我们正式开始EJB编程。在编写我们的第一个EJB之前,你应该对EJB有一个大致的了解,如果没有的话,建议你先到网上找一些这方面的文章来看,否则你将无法理解下面要讲述的内容。
远程接口
远程接口是指对于客户端而言所能看到了调用接口
//HelloWorld.java
package sample;
/*这是一个远程接口,客户端调用这个接口来使真正的ejb工作*/
public interface HelloWorld extends javax.ejb.EJBObject
{
public String hello() throws java.rmi.RemoteException;
}
Home接口
我们可以把Home接口看做是一个制造EJB的工厂,Home接口告诉EJB容器:“嗨,我的客户要我生成一个EJB,现在我把这个任务交给你啦!”
//HelloWorldHome.java
package sample;
/*Home接口告诉EJB容器怎样生成或销毁EJB的实例*/
public interface HelloWorldHome extends javax.ejb.EJBHome
{
HelloWorld create() throws java.rmi.RemoteException,javax.ejb.CreateException;
}
EJB的实现
这里才是真正的EJB的实现
//HelloWorldBean.java
package sample;
import javax.ejb.SessionContext;
/*这个类具体实现的远程接口HelloWorld*/
pubic class HelloWorldBean implements javax.ejb.SessionBean
{
private SessionContext ctx;
public void setSessionContext(SessionContext ctx)
{
this.ctx = ctx;
}
pubic void ejbRemove()
{
System.out.println(“ejbRemove()”);
}
public void ejbActivate()
{
System.out.println(“ejbActivate()”);
}
public void ejbPassivate()
{
System.out.println(“ejbPassivate()”);
}
/*hello方法是实际的业务逻辑,它可以在客户端显示“hello,world”这个字符串*/
public String hello()
{
System.out.println(“hello()”);
return “hello,world”;
}
}
好了,这个会话EJB的全部代码编写完毕,下一步我们要做的是编写它的部署文件:
ejb-jar.xml
<?xml version="1.0" encoding="UTF-8"?>
<ejb-jar>
<description>JBoss Hello World Application</description>
<display-name>Hello World EJB</display-name>
<enterprise-beans>
<session>
<ejb-name>Hello</ejb-name>
<home>sample.HelloHome</home>
<remote>sample.Hello</remote>
<ejb-class>sample.HelloBean</ejb-class>
<session-type>Stateless</session-type>
<transaction-type>Bean</transaction-type>
</session>
</enterprise-beans>
</ejb-jar>
这个ejb-jar.xml文件应放在当前项目的META-INF目录下,在本例中我将其放在
F:\projects\jbss-tutorial目录下了,当然你应该根据需要来将它放在你自己的项目目录中,为了能更清楚地让你了解ejb-jar.xml文件的位置,以下我列出了这个示例的整个目录结构:
这样我们就完成了一个简单的会话EJB的编写,但其实JBOSS还提供了一个额外的配置文件:JBoss.xml,利用它可以对JBOSS服务器进行更多的定制,但由于本例实在是太简单了,因此我们可以将它省略不写。
虽然我们完成了这个会话EJB的编写,但还有最后的一步工作要做:打包。首先我们进入当前项目的根目录:
cd F:\project\jboss-tutorial
然后执行jar命令将所有的类及ejb-jar.xml打包:
jar cf HelloWorld.jar sample META-INF
这时你会发现,在当前目录下多了一个名为HelloWorld.jar的文件,这就是我们的最终成品。
部署我们的EJB
部署EJB在JBOSS中是一件非常容易的事,你只需简单将HelloWorld.jar拷贝到c:\ jboss-3.2.6\server\default\deploy目录下就可以了。
这时,你可以切换到JBOSS运行的那个DOS窗口下,你会发现屏幕上会新出现如下提示信息:
15:09:21,184 INFO [MainDeployer] Starting deployment of
package: file:/F:/jboss
-3.2.3/server/default/deploy/HelloWorld.jar
15:09:21,324 INFO [EjbModule] Creating
15:09:21,354 INFO [EjbModule] Deploying HelloWorld
15:09:21,464 INFO [EjbModule] Created
15:09:21,484 INFO [EjbModule] Starting
15:09:21,555 INFO [EjbModule] Started
15:09:21,555 INFO [MainDeployer] Successfully completed
deployment of package: file:/F:/jboss-3.2.6/server/default/deploy/HelloWorld.jar
客户端代码
如果没有客户端代码的话,那么EJB对我们来说几乎毫无用处。以下我们将编写客户端代码来调用这个HelloWorld。
如果你在同一台机器上运行客户端代码和JBOSS服务器的话,那以下代码无须任何修改就可以运行,但你的客户端在另一台机器上运行的话,那你要将源码中的相应行改变一下:
/*以下是客户端源码中需要修改的行*/
env.put(Context.PROVIDER_URL, "localhost:1099");
假设EJB部署在一台IP地址为192.168.0.1的机器上,那么就应该将以上源码改为如下:
/*以下是客户端源码中修改后的行*/
env.put(Context.PROVIDER_URL, "192.168.0.1:1099");
/*HelloWorldClient.java*/
package sample;
import javax.naming.Context;
import javax.naming.InitialContext;
import java.util.Hashtable;
public class HelloWorldClient
{
public static void main( String [] args )
{
Hashtable env = new Hashtable();
env.put(Context.INITIAL_CONTEXT_FACTORY,"org.jnp.interfaces.NamingContextFactory");
env.put(Context.PROVIDER_URL, "localhost:1099");
env.put("java.naming.factory.url.pkgs","org.jboss.naming:org.jnp.interfaces");
try
{
Context ctx = new InitialContext(env);
Object obj = ctx.lookup( "HelloWorld" );
HelloWorldHome home =(HelloWorldHome)javax.rmi.PortableRemoteObject.narrow(
obj, HelloWorldHome.class );
HelloWorld helloWorld = home.create();
System.out.println( helloWorld.hello());
helloWorld.remove();
}
catch ( Exception e )
{
e.printStackTrace();
System.out.println( "Exception: " + e.getMessage() );
}
}
}
好了,下面我就就可以编译并运行这个客户端了,如果你在编译的时候JVM报告找不到某些类的话,则可能是你没有将j2ee.jar这个包放在CLASSPATH这个路径变量中。客户端的执行结果虽然只是简单的在屏幕上打印一行“hello,world”,但它是来自于另一个世界
——JBOSS的声音!
分享到:
相关推荐
本篇文章将指导你如何使用JBoss7.1和EJB3.1在Eclipse3.7环境中创建你的第一个EJB项目。EJB(Enterprise JavaBeans)是一种Java平台上的组件模型,用于构建可扩展的、可靠的、安全的企业级应用。JBoss是Red Hat公司...
- 第一部分是项目的主Jar包,它包含了你的EJB组件代码。 - 第二部分是jBoss客户端库,位于jBoss的“client”目录下,用于客户端调用EJB。 - 第三部分是在项目“src”目录下的`jndi.properties`文件,其中包含了...
这是一个基于EJB(Enterprise JavaBeans)技术的项目,利用了JBuilder作为开发工具,JBoss应用服务器进行部署,以及MySQL数据库存储数据。这个项目名为"ejb_jboss_estoreW",推测是一个电子商务(e-store)平台的...
经典JAVA EE企业应用实战基于WEBLOGIC JBOSS的JSF+EJB 3+JPA整合开发——源码.part1 其他部分详见我的上传列表,全部分卷下载完成才能解压。 本书介绍了Java EE规范的三大主要规范JSF、EJB 3和JPA,其中JSF是Sun...
- 创建一个简单的EJB3项目,并通过JBoss服务器运行它。这个例子应该包括基本的无状态会话Bean的创建和调用。 - 使用JBoss提供的工具和文档来指导这一过程。 **2.3 在独立的TOMCAT中调用EJB** - 配置TOMCAT使其能够...
创建一个EJB项目是使用MyEclipse进行EJB开发的第一步。这涉及到设置项目的基本属性,如项目名称、源代码目录、构建路径等。通过MyEclipse的图形界面,开发者可以轻松完成这一过程,同时也可以配置项目的编译器版本、...
**第一种方法:接口和实现类分别配置@Remote和@Stateless** - 定义一个远程接口`SayHello`,并使用`@Remote`注解标记。 ```java package com.tudou.ejb.session; import javax.ejb.Remote; @Remote ...
本书内容主要包括三部分,第一部分介绍Java EE开发的基础知识,以及如何搭建开发环境;第二部分详细讲解了JSF RI、EJB 3的Session Bean等Java EE知识;第三部分提供了一个JSF+EJB 3+ JPA整合开发的项目:电子拍卖...
《JBoss 3.2 Workbook for Enterprise JavaBeans™, 3rd Edition》为开发者提供了一个全面了解和掌握EJB技术的机会。通过本书的学习,读者不仅可以了解到EJB的基本概念和技术细节,还能掌握如何在JBoss环境下有效地...
- **创建**: 当第一次被调用时创建。 - **销毁**: 当没有客户端再引用时被销毁。 ##### 4.6 拦截器 (Interceptor) - **定义**: 截取 EJB 方法调用的逻辑,可以用来实现日志记录、性能监控等功能。 - **配置**: 在 ...
#### (1):编写第一个无状态的SessionBean ##### 一、配置开发环境 在开始编写无状态的SessionBean之前,首先需要确保开发环境已经正确配置。以下是所需的主要组件: 1. **Eclipse**:版本3.4.2,推荐使用针对...
本书内容主要包括三部分,第一部分介绍Java EE开发的基础知识,以及如何搭建开发环境;第二部分详细讲解了JSF RI、EJB 3的Session Bean等Java EE知识;第三部分提供了一个JSF+EJB 3+ JPA整合开发的项目:电子拍卖...
#### 第一步:配置Eclipse与JBoss 在Eclipse中进行EJB开发前,需要对Eclipse进行必要的配置,使其能够识别并连接到JBoss服务器。 1. **配置JBoss路径**:打开Eclipse的首选项对话框(Preferences),设置JBoss的...
在EJB3.0的第一个"Hello, World"项目中,我们将学习如何创建和配置一个简单的EJB组件。首先,我们需要了解EJB的基本概念。EJB分为三种类型:会话bean(Session Beans)、实体bean(Entity Beans)和消息驱动bean...
5. **EJB与JBoss的集成**:在Eclipse中,开发者可以创建一个JBoss服务器实例,并将其配置为EJB应用的运行环境。EJB项目可以通过Eclipse的“发布”功能部署到JBoss服务器上。此外,Eclipse还允许实时跟踪和调试在...
【JBOSS6.0.0M4发布EJB3测试】这个主题涉及到的是Java企业版(Java EE)中的核心组件——Enterprise JavaBeans (EJB)的第三版(EJB3),以及它在JBoss Application Server 6.0.0 Milestone 4 (JBOSS6.0.0M4)版本中的...