【EJB系列】(一)——JBOSS7中开发一个简单的EJB应用
来源:互联网 发布:淘宝层级上升流量下降 编辑:程序博客网 时间:2024/04/29 22:19
导读
在本篇文章中你将了解到如何使用JBOSS7开发出一个简单的EJB应用以及在这个过程中遇到的问题。
环境
MyEclipse10
JBOSS7
JDK1.8.0
准备
MyEclipse10中配置JBOSS7
了解JBOSS目录结果
首先了解一下JBOSS7的目录结构,和之前的版本不一样
在 JBoss 7 中,文件系统分为两部分:
1. 独立服务器standalone
2. 域服务器domain (这是 JBoss 7 首次引入的) — 用于统一的管理多个实例
bin: 包含启动的脚本,用来启动独立服务器(如果使用独立实例的话)或者域(使用域服务器)
docs: 包含服务器文档,有两个子目录,分别是 licenses (licenses.xml 和相关内容) 和 Schema (配置所使用的 .xsd 文件)
domain: 包含域结构,有子目录组成:configuration (包含域的配置文件), data (包含已发布模块的内容文件夹), lib(用于支持 Java EE 扩展) tmp (临时目录).
standalone: 结构和 Domain 文件夹相同
modules: 因为 JBoss 7 是一个模块化的服务器,应用服务器的模块对应这里的一个子目录。
配置JBOSS
配置JDK
运行JBOSS
开发EJB
创建EJB Project
编写接口和实现
接口
package com.tgb.ejb;public interface FirstEjb { String saySomething(String name);}
实现
package com.tgb.ejb;import javax.ejb.Remote;import javax.ejb.Stateless;@Stateless@Remotepublic class FirstEjbBean implements FirstEjb { @Override public String saySomething(String name) { // TODO Auto-generated method stub return "你好"+name; }}
加入注解
上面的注解表示是无状态的会话Bean(@Stateless)以及要通过远程方式调用(@Remote)。
部署到JBOSS中并运行
开发客户端
新建一个JavaProject
将客户端和要调用的EJB建立联系
打包接口
在FirstEjb上右击,选择Export,并打包到ejb_01_client项目中
将打包好的jar包配置到客户端
添加调用EJB需要依赖的jar包到客户端
jar包在jboss安装路径下的bin\client中jboss-client.jar
编写客户端
package com.tgb.ejb;import java.util.Hashtable;import javax.naming.Context;import javax.naming.InitialContext;public class FirstEjbClient { public static void main(String[] args)throws Exception{ //JBOSS6,7之前 /*InitialContext context=new InitialContext(); FirstEjb firstEjb=(FirstEjb)context.lookup("FirstEjbBean/remote"); String s=firstEjb.saySomething("许晨阳"); System.out.println(s);*/ final Hashtable jndiProperties = new Hashtable(); jndiProperties.put(Context.URL_PKG_PREFIXES,"org.jboss.ejb.client.naming");//让JNDI API知道是由谁来管理我们用来查找JNDI 名字的命名空间的。 final Context context = new InitialContext(jndiProperties); //appName 和 moduleName分别就打包的格式而定 //如果是.ear就是appName,其它的是moduleName(.jar,.war) final String appName = ""; final String moduleName = "ejb_01"; final String distinctName = ""; //实现类名 final String beanName = "FirstEjbBean"; System.out.println(beanName); //接口类名 final String viewClassName = FirstEjb.class.getName(); System.out.println(viewClassName); String jndi = "ejb:" + appName + "/" + moduleName + "/" + distinctName + "/" + beanName + "!" + viewClassName; System.out.println(jndi); FirstEjb firstEjb = (FirstEjb) context.lookup(jndi); String s= firstEjb.saySomething("许晨阳"); System.out.println(s); }}
编写配置文件jboss-ejb-client.properties
告诉客户端EJB在哪
endpoint.name=client-endpointremote.connectionprovider.create.options.org.xnio.Options.SSL_ENABLED=falseremote.connections=default remote.connection.default.host=127.0.0.1 remote.connection.default.port = 4448remote.connection.default.connect.options.org.xnio.Options.SASL_POLICY_NOANONYMOUS=falseremote.connection.default.username=saremote.connection.default.password=sa
运行客户端
总结
1.在jboss-ejb-client.properties中配置host和port
remote.connection.default.host=127.0.0.1 remote.connection.default.port = 4448
开始host的配的是“localhost”,结果运行客户端报错:
WARN: Could not register a EJB receiver for connection to remote:localhost
所以改成了“127.0.0.1”;端口号要根据JBOSS的standalone.xml文件中的配置,默认是4447,我的改成了4448。
在这个过程中发现自己对standalone中的一些配置不是很清楚。可参考一下JBoss配置指南(三)
2.客户端代码中appName等的含义
appName:如果部署到服务器的是一个.ear包,那么app-name就为除去后缀.ear之后的包名。如果部署的是.war包或普通的.jar包,那么appName留空即可,我自己这个工程是以.jar包部署的,所以appName为空。
moduleName:此处就是部署到服务器上.war包或.jar包的名字,注意,moduleName不能为空。
distinctName:这是一个可选的用于指定在JBoss AS7上具体的部署配置的一个参数名,不需要使用的话,留空即可,此处我们留空。
beanName:这是我们要使用lookup查找获取的Bean,这个项目中为FirstEjbBean,即FirstEjb的实现Bean,无需全限定类名,beanName不能为空。
最后我们拼接处的路径是
ejb:/ejb_01//FirstEjbBean!com.tgb.ejb.FirstEjb
如果是有状态的EJB,那么拼接的字符串后面还要加上“?stateful”。
- 【EJB系列】(一)——JBOSS7中开发一个简单的EJB应用
- 【EJB系列】(二)——JBOSS7中EJB的远程调用和本地调用
- 使用eclipse通过jboss开发简单的ejb应用(jboss7.x & ejb3.x)
- 开发一个简单的EJB
- 开发一个简单的EJB
- 【EJB学习笔记】——建立一个简单的EJB应用
- 开发一个EJB应用
- 【EJB系列】(六)——EJB的事务管理
- 【EJB基础】开发一个简单的EJB应用程序
- HelloWorld系列-一个简单的EJB例子
- EJB学习(一)—EJB概述
- 开发并部署一个简单的EJB
- JBoss 系列四:JBoss7/WildFly中EJB调运示例
- EJB系列(三)——EJB事务管理
- EJB系列(六)——EJB数据持久化
- 【EJB系列】(四)——EJB基本内容总结
- 【EJB系列】(五)——EJB与WebService
- EJB系列(一)——Session Bean基础介绍
- 机房重构——密码修改
- Qt网络与通信-UDP
- uva 1583 Digit Generator
- eclipse_ndk配置详解
- CSS中的负margin之我见
- 【EJB系列】(一)——JBOSS7中开发一个简单的EJB应用
- android 常见的一些异常和错误
- 你再也不用狂淘宝,逛商场了,在家直接随心所欲打印衣服吧
- [Lintcode] Search Insert Position
- 大数加法1.1
- RandomAccessFile关于多线程的一些知识
- Android实训案例(七)——四大组件之一Service初步了解,实现通话录音功能,抽调接口
- 数据库设计
- 欢迎使用CSDN-markdown编辑器