一、目录结构与打包
jbossEJB(文件夹)
---------------
|
|--ejb组件(文件夹)
|   |
|   |--META-INF(文件夹)
|   |     |--ejb-jar.xml
|   |     |--jboss.xml
|   |
|   |--ejbs(文件夹)
|   |     |--Hai.class
|   |     |--HaiHome.class
|   |     |--HaiBean.class
|
|--web组件(文件夹)
|   |--haiejb.jsp
|   |
|   |--WEB-INF(文件夹)
|   |     |--web.xml
|   |     |--jboss.xml
|
|--META-INF(文件夹)
|   |--application.xml

打包haiejb.jar:jar cvf haiejb.jar META-INF/ ejbs/
打包haiejb.war:jar cvf haiejb.war haiejb.jsp WEB-INF/
打包haiejb.ear:jar cvf haiejb.ear haiejb.jar haiejb.war META-INF/

二、文件
1、ejb-jar.xml
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE ejb-jar PUBLIC "-//Sun Microsystems, Inc.//DTD Enterprise JavaBeans 2.0//EN"
"http://java.sun.com/dtd/ejb-jar_2_0.dtd">
<ejb-jar>
    <description>Hai EJB instance.</description>
    <display-name>Hai EJB</display-name>
    <enterprise-beans>
        <session>
            <ejb-name>HaiEJB</ejb-name>
            <home>ejbs.HaiHome</home>
            <remote>ejbs.Hai</remote>
            <ejb-class>ejbs.HaiBean</ejb-class>
            <session-type>Stateless</session-type>
            <transaction-type>Bean</transaction-type>
        </session>
    </enterprise-beans>
</ejb-jar>
2、jboss.xml
<?xml version="1.0" encoding="UTF-8"?>
<jboss>
    <enterprise-beans>
        <session>
            <ejb-name>HaiEJB</ejb-name>
            <jndi-name>ejb/HaiEJB</jndi-name>
        </session>
    </enterprise-beans>
</jboss>
3、java文件
//Haihome.java
package ejbs;
import java.io.Serializable;
import java.rmi.*;
import javax.ejb.*;
public interface HaiHome extends EJBHome {
    Hai create() throws RemoteException, CreateException;
}
//Hai.java
package ejbs;
import javax.ejb.*;
import java.rmi.RemoteException;
public interface Hai extends EJBObject {
    public String sayHai() throws RemoteException;
}
//HaiBean.java
package ejbs;
import javax.ejb.*;
import javax.naming.*;
public class HaiBean implements SessionBean{
    public String sayHai(){
        return "Hai, EJB technology!";
    }
    public void ejbCreate() throws EJBException {}
    public void ejbRemove() throws EJBException {}
    public void ejbPassivate(){}
    public void ejbActivate(){}
    public void setSessionContext(SessionContext sc){}
}
4、haiejb.jsp
<%@ page contentType="text/html;charset=GBK" %>
<%@ page import="ejbs.*,javax.ejb.*,javax.naming.*,javax.rmi.PortableRemoteObject,java.rmi.RemoteException" %>
<html>
<body>
<% String message = "nothing!";
   try {
        InitialContext ic = new InitialContext();
        Object objRef = ic.lookup("ejb/HaiEJB");
        HaiHome home = (HaiHome) PortableRemoteObject.narrow(objRef,ejbs.HaiHome.class);
        Hai haiRemote = home.create();
        message = haiRemote.sayHai();
   } catch (RemoteException re) {
       re.printStackTrace();
   } catch (CreateException ce) {
       ce.printStackTrace();
   } catch (NamingException ne) {
       ne.printStackTrace();
   }
%>
<h1><%=message%></h1>
</body>
</html>
5、web.xml
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE web-app PUBLIC "-//Sun Microsystems, Inc.//DTD Web Application 2.3//EN"
"http://java.sun.com/dtd/web-app_2_3.dtd">
<web-app>
    <ejb-ref>
        <ejb-ref-name>HaiEJB</ejb-ref-name>
        <ejb-ref-type>Session</ejb-ref-type>
        <home>ejbs.HaiHome</home>
        <remote>ejbs.Hai</remote>
    </ejb-ref>
</web-app>
6、jboss-web.xml
<?xml version="1.0" encoding="UTF-8"?>
<jboss-web>
    <ejb-ref>
        <ejb-ref-name>HaiEJB</ejb-ref-name>
        <jndi-name>ejb/HaiEJB</jndi-name>
    </ejb-ref>
</jboss-web>

三、部署J2EE应用

  把haiejb.ear拷贝到JBOSS_HOME\server\default\deploy\
启动jboss 4.0.2默认服务器,注意命令行窗口中有无异常,如果有异常情况,请查看log文件:
    JBOSS_HOME\server\default\log\server.log
从中查找分析问题所在,然后改正之,直到无异常显示
    说明:haiejb的servlet写在JBOSS_HOME\server\default\work\jboss.web\localhost\里,可以删除并重新部署。

  最后在浏览器地址栏中键入:
http://localhost:8080/haiejb/haiejb.jsp

  结果:  Hai, EJB technology!

四、application client
//Client.java
import ejbs.HaiHome;
import ejbs.Hai;
import javax.ejb.*;
import javax.naming.*;
import javax.rmi.PortableRemoteObject;
import java.rmi.RemoteException;
import java.util.Properties;
public class Client{
    public static void main(String []args){
        String message = "nothing!";
Properties env=new Properties();
env.put("java.naming.factory.initial","org.jnp.interfaces.NamingContextFactory");
        env.put("java.naming.provider.url","localhost:1099");
        env.put("java.naming.factory.url.pkgs","org.jboss.naming:org.jnp.interfaces");
try{
            InitialContext ic = new InitialContext(env);
            Object objRef = ic.lookup("ejb/HaiEJB");
            HaiHome home =(HaiHome)PortableRemoteObject.narrow(objRef,HaiHome.class);
            Hai haiRemote = home.create();     
            message = haiRemote.sayHai();
            System.out.println(message);
        }catch(RemoteException re){
            re.printStackTrace();
        }catch (CreateException ce){
            ce.printStackTrace();
        }catch (NamingException ne){
            ne.printStackTrace();
        }
    }
}
application client的运行注意事项请参照本博客以前的文章(jboss3.2.3的例子)

转载于:https://www.cnblogs.com/comsteed/archive/2008/03/27/1126011.html

jboss4中手动部署EJB(jboss4.0.2+ejb2.0+j2sdk5.0+xpsp2)相关推荐

  1. 【Microsoft Azure 的1024种玩法】二十六. 在Azure VM中手动部署Windows Admin Center管理平台

    [简介] Windows Admin Center是微软开发的一套可以部署在本地基于浏览器的GUI的工具集平台,其平台可用于管理Windows相关服务器和PC机器,我们可以利用Windows Admi ...

  2. 【Microsoft Azure 的1024种玩法】七十四.五分钟在Azure Virtual Machines中快速部署一套软件项目管理及自动构建工具

    [简介] Apache Maven由 Apache 软件基金会所提供的一个软件项目管理及自动构建工具,Maven 为开发者提供了一套完整的构建生命周期框架.开发团队几乎不用花多少时间就能够自动完成工程 ...

  3. Tomcat手动部署Web项目详细步骤

    阅读须知:文章基于Tomcat8,其它版本若有差异,请自行辨别.本文为博主原创文章,转载请附原文链接. 不借助任何IDE,这里介绍在Tomcat中手动部署web项目的三种方式: 1.部署解包的weba ...

  4. 手动部署OpenStack环境(四:安装控制器必备软件)

    任务四.安装控制器必备组件 4.1.安装MySQL服务(controller0) 4.2.安装Rabbitmq消息队列(controller0) 4.3.Keystone认证(controller0) ...

  5. 手动部署OpenStack环境(二:CentOS6.6虚拟机的安装及配置)

    任务二.CentOS 6.6虚拟机的安装及配置 2.1.安装环境检查 2.2.安装及配置controller0节点 2.3.安装及配置computer0节点 2.4.安装及配置network0节点 2 ...

  6. Exchange 2003 在多域环境中的部署

    相信大多数Exchange管理员对单域环境中的部署已经非常熟悉,包括单域单台或者多台Exchange服务器的部署,网络中也有很多此类的教程.但是关于如何在多域环境中部署Exchange的文章非常少,在 ...

  7. 都9012年了,你还在手动部署代码吗(二)

    前言 在写完基于 Webhooks 的"第一篇<都9012年了,你还在手动部署代码吗>"之后,有同学评论到"至少你得用个 docker 啊"&quo ...

  8. OpenEjb使用笔记--让Tomcat可以部署EJB

    http://qujianfeng.iteye.com/blog/793409 1  OpenEJB概述 Tomcat本不支持部署EJB,通过向其安装OpenEjb,可使其支持. 2  安装 2.1  ...

  9. 离线手动部署docker镜像仓库——harbor仓库(二)

    前言: 在<离线手动部署docker镜像仓库--harbor仓库(一)>中,记录了离线部署harbor仓库的简单过程,这里主要记录修改默认访问端口80端口为1180端口的部署方式和注意点. ...

最新文章

  1. [学习笔记]Segment Tree Beats!九老师线段树
  2. oracle审计的激活与取消
  3. git remote扩展
  4. python gui测试框架_八款常用的 Python GUI 开发框架推荐
  5. .NET Core Runtime vs .NET Framework Runtime
  6. cf1504. Travelling Salesman Problem
  7. 前端学习(2950):webpack目录结构
  8. 【机器学习】机器学习处理不均衡分类
  9. 网络人的未来分享讲义_酒品看人品,未来酱分享饮酒识人技巧!谁是你值得深交的人?...
  10. android 项目将csv文件写入sqlite数据库 代码,如何将csv文件大容量插入sqlite c#
  11. relu函数_激活函数解析:Sigmoid, tanh, Softmax, ReLU, Leaky ReLU
  12. 广告行业中那些趣事系列36:腾讯2021广告大赛多模态视频广告标签baseline介绍和优化思路...
  13. 利用msf 对靶机metasploittable2 进行信息收集
  14. Kubernetes中配置Pod的liveness和readiness探针
  15. 翻译小窍门-谢谢你勾引我老公
  16. vscode常用插件-Auto Close Tag
  17. 如何设计游戏中的道具功能(二)
  18. 安装pyinstaller出错的解决办法及刷csdn访客数工具打包
  19. Android 10.0 蓝牙去掉传输文件的功能
  20. Server 2016/Windows 10使用域管理员账户操作提示权限不足的问题

热门文章

  1. python设计模式15-解释器模式
  2. Keil 中的预处理命令const
  3. rocketMq发送事务消息
  4. Exps on March 21st
  5. LCFinder 0.3.0 Beta 发布,图像标注与目标检测工具
  6. python 的err输出BaseException
  7. yii2框架获取刚插入数据库的id (原创)
  8. 11个让你吃惊的 Linux 终端命令
  9. Fantageek翻译系列之《使用Autolayout显示变化高度的UITableViewCell》
  10. 重载与覆盖(java)