JBOSS 6,7调用通过JNDI查找EJB的方法和JBOSS5不一样。
JBOSS 5
Properties props = new Properties();
props.setProperty("java.naming.factory.initial", "org.jnp.interfaces.NamingContextFactory"); //jndi factory
props.setProperty("java.naming.provider.url", "localhost:1099"); //jndi server url
props.setProperty("java.naming.factory.url.pkgs", "org.jboss.naming"); //jndi finding package
InitialContext ctx = new InitialContext (props);
DBBeanRemote db = (DBBeanRemote) ctx.lookup("DBBean/remote");
JBOSS 6,7
官方文档https://docs.jboss.org/author/display/AS71/EJB+invocations+from+a+remote+client+using+JNDI
总结:
1. 查找JNDI
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 = "EJBDBTest";
final String distinctName = "";
//实现类名
final String beanName = DB.class.getSimpleName();
System.out.println(beanName);
//接口类名
final String viewClassName = DBRemote.class.getName();
System.out.println(viewClassName);
String jndi = "ejb:" + appName + "/" + moduleName + "/"
+ distinctName + "/" + beanName + "!" + viewClassName;
System.out.println(jndi);
DBRemote db = (DBRemote) context.lookup(jndi);
In AS7, for remote access to EJBs, you use the ejb: namespace with the following syntax:
For stateless beans:
ejb:<app-name>/<module-name>/<distinct-name>/<bean-name>!<fully-qualified-classname-of-the-remote-interface>
For stateful beans:
ejb:<app-name>/<module-name>/<distinct-name>/<bean-name>!<fully-qualified-classname-of-the-remote-interface>?stateful
2.加入JAR文件
把jboss-client jar加入到项目,在 JBOSS_HOME/bin/client/jboss-client-7.1.0.Final.jar 目录下.
3. 创建客户端调环境(告诉客户端应该去哪里,怎么调server的EJB)
在project path 下创建 jboss-ejb-client.properties
endpoint.name=client-endpoint
remote.connectionprovider.create.options.org.xnio.Options.SSL_ENABLED=false
remote.connections=default //connection 的名字
remote.connection.default.host=xx.xxx.xxx.xx //IP
remote.connection.default.port = xxxx //port
remote.connection.default.connect.options.org.xnio.Options.SASL_POLICY_NOANONYMOUS=false
//JBOSS 用户名密码
remote.connection.default.username=appuser
remote.connection.default.password=apppassword
或者你可以另外命名这个文件的名字,只要加入系统参数里就好,如下
-Djboss.ejb.client.properties.file.path=/home/me/my-client/custom-jboss-ejb-client.properties
你还可以建立不同的连接
remote.connectionprovider.create.options.org.xnio.Options.SSL_ENABLED=false
remote.connections=one, two
remote.connection.one.host=localhost
remote.connection.one.port=6999
remote.connection.one.connect.options.org.xnio.Options.SASL_POLICY_NOANONYMOUS=false
remote.connection.two.host=localhost
remote.connection.two.port=7999
remote.connection.two.connect.options.org.xnio.Options.SASL_POLICY_NOANONYMOUS=false
分享到:
相关推荐
使用JNDI(Java Naming and Directory Interface)查找并调用远程EJB,或者通过EJB的客户端视图进行调用。JBOSS7提供了一个JNDI命名空间,可以在其中注册和查找EJB。 6. **事务管理** EJB3支持声明式事务管理,...
通过JNDI,Web层可以查找并调用EJB层的服务。 其次,"jndi.properties"文件是用来配置JNDI的,JNDI是一个接口,允许Java程序查找和绑定命名服务。在EJB+JPA环境中,它通常用于定义数据源(DataSource)的JNDI名称,...
调用EJB时,客户端可以通过`InitialContext`查找EJB,如下所示: ```java InitialContext ctx = new InitialContext(); HelloWorld helloworld = (HelloWorld) ctx.lookup("HelloWorldBean/remote"); ``` 这里...
在 EJB 3.0 中,需要创建客户端来调用 EJB 的业务逻辑。在本例中,我们创建了一个名为 TestClient 的客户端,该客户端使用 JNDI 查找 EJB,并调用 SayHello 方法。 EJB 3.0 中的 JNDI 查找 在 EJB 3.0 中,JNDI ...
2. 测试工具:JBoss提供了一个名为jbossclient的命令行工具,可以用于远程调用EJB进行测试。 七、EJB与Web应用集成 1. JSP和Servlet:在Web应用中,可以通过JSP和Servlet来调用EJB,实现前端和后端的交互。 2. Web...
通过对ejbclient的源码研究,可以了解客户端如何查找和调用EJB,以及如何处理异常和连接管理。 7. **工具支持**: - Maven或Gradle可以用来管理和构建EJB项目,确保依赖项的正确引入。 - IDE中的EJB插件提供代码...
1. **EJB客户端接口**:了解EJB客户端如何与远程服务器上的EJB组件进行交互,包括定义Home接口和Remote接口,以及调用EJB方法的步骤。 2. **JNDI查找**:学习如何通过Java Naming and Directory Interface (JNDI) ...
总的来说,理解JBoss 3.0的EJB配置和部署涉及到对EJB规范的理解,包括ejb-jar.xml、web.xml、application.xml等配置文件的编写,以及客户端如何通过JNDI查找和调用EJB。对于初学者,建议深入学习J2EE和EJB基础知识,...
客户端可以通过JNDI查找并调用EJB,如: ```java InitialContext ctx = new InitialContext(); Object objref = ctx.lookup("ejbtest"); zcxejb1Home beanHome = (zcxejb1Home) PortableRemoteObject.narrow(objref,...
在Tomcat应用中,你可以使用JNDI API来查找Jboss上的EJB,然后通过这个引用调用EJB的方法。 - 调用EJB时,注意处理可能出现的网络异常、远程方法调用异常等。 5. **安全与性能优化**: - 考虑使用SSL/TLS加密连接...
5. **客户端调用**:ejb_client可能是一个简单的Java客户端程序,使用EJB的远程接口来调用服务端的EJB方法。JNDI(Java Naming and Directory Interface)用于查找并绑定EJB的引用。 6. **readme.txt**:这个文件...
客户端程序用于调用EJB服务器端提供的服务。这里简要介绍客户端程序的编写方法: 1. **客户端代码**: - 客户端需要通过 JNDI 查找服务器端的bean,并获取其远程接口实例。 - 示例代码: ```java ...
客户端通过这个JAR来查找和调用EJB。 4. **部署**:在JBoss中部署EJB 2.0应用,通常需要将ejb-jar.jar、client-ejb-jar.jar和相应的jboss.xml放入`server/default/deploy`目录下。 接下来,我们转向EJB 3.0的配置...
1. 远程调用:通过JNDI查找EJB,使用Java远程方法调用(RMI)或IIOP通信。 2. 本地调用:在同一个应用内,可以通过注解`@EJB`直接注入EJB实例。 八、监控与调试 1. JBoss管理控制台:通过浏览器访问`...
其中,HaiHome接口代表EJB的远程接口,允许客户端通过RMI(Remote Method Invocation)调用EJB;HaiClient接口是会话bean的本地接口,提供了具体业务方法的定义;HaiBean类实现了会话bean的业务逻辑。 2. WEB应用:...
- 通过Eclipse将创建好的EJB模块部署到JBoss服务器,并通过控制台输出信息验证部署是否成功。 5. 建立客户端工具类 - 客户端类通常负责调用部署在服务器上的EJB,实现与EJB组件的交互。这涉及到Java命名和目录...
- EJB 3.0 中的实体 Bean 需要在服务器上配置数据连接池,以便通过 JNDI 访问数据库。 - 在 jBoss 的 `docs\examples\jca` 文件夹下找到相关配置文件(例如 `mssql-ds.xml`),将其复制到 `server\default\deploy`...
- 第二部分是jBoss客户端库,位于jBoss的“client”目录下,用于客户端调用EJB。 - 第三部分是在项目“src”目录下的`jndi.properties`文件,其中包含了JNDI(Java Naming and Directory Interface)的初始化参数...
在客户端调用EJB之前,需要确保客户端能够正确地访问服务器端的JNDI命名服务。如果客户端和服务器位于不同的Java虚拟机上,则需要在客户端提供一个`jndi.properties`文件,该文件应包含如下信息: - `java.naming....