Enterprise JavaBean 笔记:JBoss安装与配置

Plux posted @ 2012年9月25日 21:13 in Java with tags java EJB , 2279 阅读

记得刚上大学不久,学 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 的组合可能更好。

  1. JBoss AS 5.1:可以在http://sourceforge.net/projects/jboss/files/JBoss/JBoss-5.1.0.GA找到,下载后解压即可。
  2. 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。

  1. 在NetBeans的服务器平台上,点击“工具”->“服务器”。
  2. 在服务器窗口点击“添加服务器”,按提示添加“JBoss Application Server”,选择JBoss的安装根目录即可。
  3. 启动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">
    ……

    即可。

测试:

  1. 新建 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);
    }
  2. 新建 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"));
    %>
  3. 发布 EJB 模块和 Web 应用程序来测试吧~

登录 *


loading captcha image...
(输入验证码)
or Ctrl+Enter