Enterprise JavaBean 笔记:JBoss安装与配置
记得刚上大学不久,学 Java 的时候,就曾经听说过 Enterprise JavaBean 了,但一直没有试用过,因为,从这个名字看来,很容易和 JavaBean 混淆。而在 Enterprise JavaBean 介绍中提到的分布式、可伸缩的网络模块的时候,又显然和作为对象数据存取规范的 JavaBean 规范不同。Enterprise JavaBean 更像是一个遵循 JavaBean 规范的网络服务提供者。一直以来用PHP来开发网站,对 Java 这边规范的 MVC 开发模式还是颇为羡慕。而这个学期就开始 EJB 的旅程了~
这个系列博客大概会持续讨论关于 Enterprise JavaBean 的问题,欢迎大家提出意见。 :-)
环境选择:
这里选择 NetBeans + JBoss AS 5.1 作为开发环境。选择 JBoss AS 5.1 是因为课程需要,其实 NetBeans + Glassfish 的组合可能更好。
- JBoss AS 5.1:可以在http://sourceforge.net/projects/jboss/files/JBoss/JBoss-5.1.0.GA找到,下载后解压即可。
- Netbeans 7.2:可以在http://www.netbeans.org下载NetBeans 7.2 for Java EE(按提示安装即可,其中可以选择安装安装包带上的Glassfish 3.2.2,Java EE 6兼容服务器)。
配置:
NetBeans安装成功后,如果开始时选择了Glassfish,那么已经有一个Java EE 6兼容服务器。不过,这里选择课堂要求的JBoss Application Server 5.1。
- 在NetBeans的服务器平台上,点击“工具”->“服务器”。
- 在服务器窗口点击“添加服务器”,按提示添加“JBoss Application Server”,选择JBoss的安装根目录即可。
-
启动JBoss AS 5.1,如果出现“java.lang.IllegalArgumentException: Wrong arguments. new for target java.lang.reflect.Constructor expected=[java.net.URI] actual=[java.io.File]”的提示,大多是因为注入AttachmentStore类的时候没有指定注入类型导致。
编辑%JBOSS_HOME%/server/default/conf/bootstrap/profile.xml文件:…… <bean name="AttachmentStore" class="org.jboss.system.server.profileservice.repository.AbstractAttachmentStore"> <constructor> <parameter> <inject bean="BootstrapProfileFactory" property="attachmentStoreRoot" /> </parameter> </constructor> ……修改<parameter>标签为:
…… <parameter class="java.io.File"> ……即可。
测试:
-
新建 EJB 模块。新建 Stateless Session Bean(无状态会话Bean),新建向导创建Local(本地)接口的无状态会话 Bean,添加一个 Bussiness Method (在编辑区域内,按 alt + Insert,即弹出生成代码框,选择 NetBeans 的原因一部分就是因为 NetBeans 挺方便的代码生成功能)。
代码看起来像:package hello.greeting; import javax.ejb.Stateless; @Stateless public class Greeting implements GreetingLocal { public String greet(String name) { return "Hello, " + name + "!"; } }接口如下:
package hello.greeting; import javax.ejb.Local; @Local public interface GreetingLocal { public String greet(String name); } -
新建 Web 应用程序项目,编辑项目属性,添加 上面创建的 EJB 模块到 Libraries (库)中,不需要包括在编译包中。这里只是为了让这个 Web 应用程序知道会话 Bean 的接口而已。
编辑 index.jsp,在空白处添加对 EJB 的引用:
<%@page contentType="text/html" pageEncoding="UTF-8"%> <%@page import="javax.naming.*" %> <% InitialContext context = new InitialContext(); GreetingLocal bean = (GreetingLocal) context.lookup("Greeting/local"); out.println(bean.greet("Jack")); %> - 发布 EJB 模块和 Web 应用程序来测试吧~
Sep 14, 2026 02:54:29 PM
Understanding cryptocurrency transaction records is an important step in digital asset investigations. Clear documentation of wallet addresses transaction times and transfer amounts can make it easier to reconstruct the movement of funds after a suspected scam. GEInvestigator