开发工具:myeclipse8.5、ant
jdk:1.5
容器:jboss4.2.3
1、安装jboss:解压、配置JBOSS_HOME环境变量
2、测试安装是否成功:启动%JBOSS_HOME%\bin\run.bat,访问http://localhost:8080


3、开发EJB3
a 接口:interface HelloWorld
b 实现类:class HelloWorldBean implements HelloWorld
c 在实现类上加上注解:
//无状态session bean
@Stateless
//远程bean
@Remote(HelloWorld.class)
4、export导出jar文件,放到%JBOSS_HOME%\server\default\deploy目录,启动jboss,测试远程EJBHelloWorldBean ,客户端代码如下:

public class EJBClient {
public static void main(String[] args) {
// Properties props = new Properties();
// props.setProperty("java.naming.factory.initial", "org.jnp.interfaces.NamingContextFactory");
// props.setProperty("java.naming.provider.url", "localhost:1099");
try {
// InitialContext ctx = new InitialContext(props);
//通过属性文件jndi.properties设置jndi信息
InitialContext ctx = new InitialContext();
HelloWorld helloWorld = (HelloWorld) ctx.lookup("HelloWorldBean/remote");
System.out.println(helloWorld);
UserDTO dto = helloWorld.sayHello("wsc");
System.out.println(dto.getUsername());
} catch (NamingException e) {
e.printStackTrace();
}
}
}

其中jndi.properties内容如下:
java.naming.factory.initial=org.jnp.interfaces.NamingContextFactory
java.naming.provider.url=localhost:1099

可以通过jboss的管理界面,查看HelloWorldBean这个ejb是否发布成功:


5、为了实现EJB开发的快速发布测试,这里引入了ant构建脚本,实现自动的发布。build.xml文件内容如下:

<?xml version="1.0" encoding="UTF-8"?>
<project name="helloworld" basedir=".">
<property name="src.dir" value="${basedir}\src"></property>
<property environment="env"></property>
<property name="jboss.home" value="${env.JBOSS_HOME}"></property>
<property name="jboss.server.config" value="default"></property>
<property name="build.dir" value="${basedir}\build"></property> <path id="build.classpath">
<fileset dir="${jboss.home}\client">
<include name="*.jar"/>
</fileset>
<pathelement location="${build.dir}"/>
</path> <target name="echotest" description="测试环境变量是否正确">
<echo>${env.JBOSS_HOME}</echo>
</target> <target name="prepare">
<delete dir="${build.dir}"></delete>
<mkdir dir="${build.dir}"/>
</target> <target name="compile" depends="prepare" description="编译">
<javac srcdir="${src.dir}" destdir="${build.dir}">
<classpath refid="build.classpath"></classpath>
</javac>
</target> <target name="ejbjar" depends="compile" description="创建ejb发布包">
<jar destfile="${basedir}\${ant.project.name}.jar">
<fileset dir="${build.dir}">
<include name="**/*.class"/>
</fileset>
</jar>
</target> <target name="deploy" depends="ejbjar,undeploy" description="发布ejb包">
<copy file="${basedir}\${ant.project.name}.jar" todir="${jboss.home}\server\${jboss.server.config}\deploy"></copy>
</target> <target name="undeploy" description="卸载ejb包">
<delete file="${jboss.home}\server\${jboss.server.config}\deploy\${ant.project.name}.jar"></delete>
</target>
</project>

6、附项目的整体目录结构如下:

7、感谢传智播客老师的精彩讲解和分享。。。

搭建EJB3开发环境的更多相关文章

  1. 自定义搭建PHP开发环境

    学习了一段时间php了,因为之前是刚接触php,所以用的是集成安装包(wamp).现在想进一步了解apache.mysql.php之间的关系以及提升自己所以进行自定义搭建PHP开发环境.废话不多说,请 ...

  2. 使用virtualenv搭建python3开发环境

    问题描述 环境: CentOS6.5 想在此环境下使用python3进行开发,但CentOS6.5默认的python环境是2.6.6版本. 之前的做法是直接从源码安装python3,替换掉现有的开发环 ...

  3. Windows下搭建PHP开发环境

    PHP集成开发环境有很多,如XAMPP.AppServ......只要一键安装就把PHP环境给搭建好了.但这种安装方式不够灵活,软件的自由组合不方便,同时也不利于学习.所以我还是喜欢手工搭建PHP开发 ...

  4. 搭建Android开发环境附图详解+模拟器安装(JDK+Eclipse+SDK+ADT)

    ——搭建android开发环境的方式有多种,比如:JDK+Eclipse+SDK+ADT或者JDK+Eclipse+捆绑好的AndroidSDK或者Android Studio. Google 决定将 ...

  5. mac os 下搭建android开发环境

    mac os 下搭建android开发环境 周银辉 mac os 下搭建android环境比较方便, 如下几个步骤: 1,安装jdk 先搞清楚自己是否已经安装,在命令行下:java -version, ...

  6. mac 下 用 glfw3 搭建opengl开发环境

    mac 下 用 glfw3 搭建opengl开发环境 下载编译 glfw3 Build Setting 里面, Library Search Paths -> 设置好编译 glfw 库的路径 H ...

  7. 在Eclipse下搭建Android开发环境教程

    我们昨天向各位介绍了<在NetBeans上搭建Android SDK环境>,前不久也介绍过<在MyEclipse 8.6上搭建Android开发环境>, 都受到了读者的欢迎.但 ...

  8. 第二章 搭建Android开发环境

    这一章为我们讲解了如何搭建Android开发环境. 首先要了解的是Android底层开发需要哪些工具:搭建android应用程序开发环境.android NDK开发环境和交叉编译环境,前两个用来测试L ...

  9. 搭建java开发环境、使用eclipse编写第一个java程序

    搭建java开发环境.使用eclipse编写第一个java程序 一.Java 开发环境的搭建 1.首先安装java SDK(简称JDK). 点击可执行文件 jdk-6u24-windows-i586. ...

随机推荐

  1. 《javascript高级程序设计》 第20章 JSON

    20.1 语法 20.1.1 简单值 20.1.2 对象 20.1.3 数组 20.2 解析与序列化 20.2.1 JSON 对象 20.2.2 序列化选项 20.2.3 解析选项 JSON 对象有两 ...

  2. Qt之QPauseAnimation

    简述 QPauseAnimation类为QSequentialAnimationGroup提供了一个暂停. 如果你想为QSequentialAnimationGroup动画之间添加延迟,可以插入一个Q ...

  3. JavaWeb基础: 会话技术简介

    会话技术 用户使用Web应用的过程实际是调用了一系列的Servlet来组合处理请求,从而完成整个业务流.不同Servlet组合起来为用户服务的时候就会遇到一个数据共享和传输的问题,如何让多个Servl ...

  4. HDU----(4519)郑厂长系列故事——体检

    郑厂长系列故事——体检 Time Limit: 500/200 MS (Java/Others)    Memory Limit: 65535/32768 K (Java/Others)Total S ...

  5. .net读取xml文件中文乱码问题解决

    读取XML的编码方式Encoding.UTF8 要和<?xml version="1.0" encoding="utf-8"?>的encoding ...

  6. /etc/crontab文件和crontab -e命令区别

    /etc/crontab文件和crontab -e命令区别 1.格式不同 前者 # For details see man 4 crontabs # Example of job definition ...

  7. SVMtoy

    SVMtoy [label_matrix, instance_matrix] = libsvmread('ex8b.txt'); options = ''; % contour_level = [-1 ...

  8. 问题解决The connection to adb is down, and a severe error has occured.

    遇到问题描述: 运行android程序控制台输出 [2013-06-25 11:10:32 - MyWellnessTracker] The connection to adb is down, an ...

  9. Objective-C:Foundation框架-常用类-NSObject

    NSObject是所有类的基类,其常见用法有: #import <Foundation/Foundation.h> @interface Person : NSObject - (void ...

  10. js模拟快捷键操作表单

    <html> <head> </head> <body> <script> //键盘快捷键提交表单ctrl+s document.onkey ...