JBoss7 创建客户端通过JNDI调用EJB

2024-09-04 17:08

本文主要是介绍JBoss7 创建客户端通过JNDI调用EJB,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

转:http://k1280000.iteye.com/blog/1654740

参考:http://wenku.baidu.com/link?url=phjFT-9Y03RtAFoqDMgKOvqdk3XdrGghYQBge4ZzC9W3t0fjkVkzJLQ0d92_KaJ5MS9mNa2yIDFNG65XmKfvoHgVAY-TyLrTLunGUIaZWve

JBOSS 6,7调用通过JNDI查找EJB的方法和JBOSS5不一样

 

JBOSS 5

 

Java代码  收藏代码
  1. Properties props = new Properties();  
  2. props.setProperty("java.naming.factory.initial""org.jnp.interfaces.NamingContextFactory");  //jndi factory   
  3. props.setProperty("java.naming.provider.url""localhost:1099"); //jndi server url  
  4. props.setProperty("java.naming.factory.url.pkgs""org.jboss.naming");  //jndi finding package  
  5.   
  6. InitialContext ctx = new InitialContext (props);  
  7. DBBeanRemote db = (DBBeanRemote) ctx.lookup("DBBean/remote");  

 

 

JBOSS 6,7

EJB invocations from a remote client using JNDI

官方文档https://docs.jboss.org/author/display/AS71/EJB+invocations+from+a+remote+client+using+JNDI

 

总结:

 

1. 查找JNDI

 

 

Java代码  收藏代码
  1. final Hashtable jndiProperties = new Hashtable();  
  2. jndiProperties.put(Context.URL_PKG_PREFIXES,  
  3.         "org.jboss.ejb.client.naming");//让JNDI API知道是由谁来管理我们用来查找JNDI 名字的命名空间的。  
  4. final Context context = new InitialContext(jndiProperties);  
  5. //appName 和 moduleName分别就打包的格式而定  
  6. //如果是.ear就是appName,其它的是moduleName(.jar,.war)  
  7. final String appName = "";  
  8. final String moduleName = "EJBDBTest";  
  9. final String distinctName = "";  
  10. //实现类名  
  11. final String beanName = DB.class.getSimpleName();  
  12. System.out.println(beanName);  
  13. //接口类名  
  14. final String viewClassName = DBRemote.class.getName();  
  15. System.out.println(viewClassName);  
  16. String jndi = "ejb:" + appName + "/" + moduleName + "/"  
  17.         + distinctName + "/" + beanName + "!" + viewClassName;  
  18. System.out.println(jndi);  
  19. DBRemote db = (DBRemote) context.lookup(jndi);  

 

 In AS7, for remote access to EJBs, you use the ejb: namespace with the following syntax:

Xml代码  收藏代码
  1. For stateless beans:  
  2. ejb:<app-name>/<module-name>/<distinct-name>/<bean-name>!<fully-qualified-classname-of-the-remote-interface>  
  3. For stateful beans:  
  4. 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 

 

 

Xml代码  收藏代码
  1. endpoint.name=client-endpoint  
  2. remote.connectionprovider.create.options.org.xnio.Options.SSL_ENABLED=false  
  3.    
  4. remote.connections=default  //connection 的名字  
  5.    
  6. remote.connection.default.host=xx.xxx.xxx.xx <strong>//IP</strong>  
  7. remote.connection.default.port = xxxx <strong>//port</strong>  
  8. remote.connection.default.connect.options.org.xnio.Options.SASL_POLICY_NOANONYMOUS=false  
  9.   
  10. //JBOSS 用户名密码  
  11. remote.connection.default.username=appuser     
  12. 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

Xml代码  收藏代码
  1.    
  2. remote.connections=one, two  
  3.    
  4. remote.connection.one.host=localhost  
  5. remote.connection.one.port=6999  
  6. remote.connection.one.connect.options.org.xnio.Options.SASL_POLICY_NOANONYMOUS=false  
  7.    
  8. remote.connection.two.host=localhost  
  9. remote.connection.two.port=7999  
  10. remote.connection.two.connect.options.org.xnio.Options.SASL_POLICY_NOANONYMOUS=false

这篇关于JBoss7 创建客户端通过JNDI调用EJB的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/1136517

相关文章

Spring创建Bean的八种主要方式详解

《Spring创建Bean的八种主要方式详解》Spring(尤其是SpringBoot)提供了多种方式来让容器创建和管理Bean,@Component、@Configuration+@Bean、@En... 目录引言一、Spring 创建 Bean 的 8 种主要方式1. @Component 及其衍生注解

Java调用Python脚本实现HelloWorld的示例详解

《Java调用Python脚本实现HelloWorld的示例详解》作为程序员,我们经常会遇到需要在Java项目中调用Python脚本的场景,下面我们来看看如何从基础到进阶,一步步实现Java与Pyth... 目录一、环境准备二、基础调用:使用 Runtime.exec()2.1 实现步骤2.2 代码解析三、

MySQL 数据库表操作完全指南:创建、读取、更新与删除实战

《MySQL数据库表操作完全指南:创建、读取、更新与删除实战》本文系统讲解MySQL表的增删查改(CURD)操作,涵盖创建、更新、查询、删除及插入查询结果,也是贯穿各类项目开发全流程的基础数据交互原... 目录mysql系列前言一、Create(创建)并插入数据1.1 单行数据 + 全列插入1.2 多行数据

Python如何调用另一个类的方法和属性

《Python如何调用另一个类的方法和属性》在Python面向对象编程中,类与类之间的交互是非常常见的场景,本文将详细介绍在Python中一个类如何调用另一个类的方法和属性,大家可以根据需要进行选择... 目录一、前言二、基本调用方式通过实例化调用通过类继承调用三、高级调用方式通过组合方式调用通过类方法/静

C#控制台程序同步调用WebApi实现方式

《C#控制台程序同步调用WebApi实现方式》控制台程序作为Job时,需同步调用WebApi以确保获取返回结果后执行后续操作,否则会引发TaskCanceledException异常,同步处理可避免异... 目录同步调用WebApi方法Cls001类里面的写法总结控制台程序一般当作Job使用,有时候需要控制

Python用Flask封装API及调用详解

《Python用Flask封装API及调用详解》本文介绍Flask的优势(轻量、灵活、易扩展),对比GET/POST表单/JSON请求方式,涵盖错误处理、开发建议及生产环境部署注意事项... 目录一、Flask的优势一、基础设置二、GET请求方式服务端代码客户端调用三、POST表单方式服务端代码客户端调用四

MySQL 临时表创建与使用详细说明

《MySQL临时表创建与使用详细说明》MySQL临时表是存储在内存或磁盘的临时数据表,会话结束时自动销毁,适合存储中间计算结果或临时数据集,其名称以#开头(如#TempTable),本文给大家介绍M... 目录mysql 临时表详细说明1.定义2.核心特性3.创建与使用4.典型应用场景5.生命周期管理6.注

MySQL的触发器全解析(创建、查看触发器)

《MySQL的触发器全解析(创建、查看触发器)》MySQL触发器是与表关联的存储程序,当INSERT/UPDATE/DELETE事件发生时自动执行,用于维护数据一致性、日志记录和校验,优点包括自动执行... 目录触发器的概念:创建触www.chinasem.cn发器:查看触发器:查看当前数据库的所有触发器的定

创建springBoot模块没有目录结构的解决方案

《创建springBoot模块没有目录结构的解决方案》2023版IntelliJIDEA创建模块时可能出现目录结构识别错误,导致文件显示异常,解决方法为选择模块后点击确认,重新校准项目结构设置,确保源... 目录创建spChina编程ringBoot模块没有目录结构解决方案总结创建springBoot模块没有目录

Python跨文件实例化、跨文件调用及导入库示例代码

《Python跨文件实例化、跨文件调用及导入库示例代码》在Python开发过程中,经常会遇到需要在一个工程中调用另一个工程的Python文件的情况,:本文主要介绍Python跨文件实例化、跨文件调... 目录1. 核心对比表格(完整汇总)1.1 自定义模块跨文件调用汇总表1.2 第三方库使用汇总表1.3 导