用的是wildfly 9.0.2

一:在myeclipse中新建wildfly 9.0.2的server(如何新建去网上搜)

二:修改wildfly server的argument(在run configurations里,不在preference里)

在Program arguments后面加入-b 172.16.15.142

三:新建Ejb项目,新建interface和bean

Ejb1.java:

 package ejb100;

 public interface Ejb1 {
     public String sayHello(String name);
 }

Ejb1Bean.java:

 package ejb100;

 import javax.ejb.Remote;
 import javax.ejb.Stateless;

 @Stateless
 @Remote
 public class Ejb1Bean implements Ejb1 {
     @Override
     public String sayHello(String name) {
         // TODO Auto-generated method stub
         return "Hello, " + name;
     }
 }

四:将该ejb project add deployment到server中,直接在myeclipse上操作

四:新建java project

1. 将jboss-client.jar加入build path

2. 将JBoss文件夹里的standalone文件夹里的deployment文件夹里的相应的ejb服务文件夹加入到build path中

3. 编写test程序

 package ejb100test;

 import java.util.Properties;

 import javax.naming.Context;
 import javax.naming.InitialContext;
 import javax.naming.NamingException;

 import ejb100.Ejb1;

 public class Ejb100Test {

     public static void main(String[] args) throws NamingException {
         // TODO Auto-generated method stub
         Properties prop = new Properties();
         prop.put(Context.URL_PKG_PREFIXES, "org.jboss.ejb.client.naming");
         InitialContext context = new InitialContext(prop);

         Ejb1 test = (Ejb1)context.lookup("ejb:/Ejb100/Ejb1Bean!" + Ejb1.class.getName());
         System.out.println(test.sayHello("yingzhongwen"));
     }

 }

注意这里的地址是ejb:/module/bean-simple-name!interface-full-name。注意大小写

在src文件夹下加入jboss-ejb-client.properties

 endpoint.name=client-endpoint
 remote.connectionprovider.create.options.org.xnio.Options.SSL_ENABLED=false

 remote.connections=default

 remote.connection.default.host=172.16.15.142
 remote.connection.default.port=8180
 remote.connection.default.connect.options.org.xnio.Options.SASL_POLICY_NOANONYMOUS=false
 remote.connection.default.username=ejbuser
 remote.connection.default.password=ejbuser

因为我在standalone.xml里修改了port偏移值为100,因此默认的port8080变成了8180

通过127.0.0.1:10090(port偏移了)web url可以看到被部署的ejb服务。

****************************************************************************

注意整个过程容易犯的错误:

1. 忘记将jboss-client.jar加入build path

2. jboss-ejb-client.properties配置错误,比如ip, port等等

3. context.lookup里的路径写错,虽然在ejb console里写的是java:global开头的地址,但是经测试发现这个地址并不能用,需要使用ejb开头的地址,另外大小写也是容易忽略的问题

4. 不需要用ant或者export等工具来将ejb打成jar包,如果打成jar包放到deployment中,则注意这里需要将其jar包放到build path中,并且context.lookup里的路径应该这么写:ejb:/jar-name/bean-simple-name!interface-full-name。

*****************************************************************************

在服务器内部调用其他的ejb服务:

Injection.java:

 package ejb200;

 public interface Injection {
     public String sayHello();
 }

InjectionBean.java

 package ejb200;

 import javax.ejb.EJB;
 import javax.ejb.Remote;
 import javax.ejb.Stateless;

 import ejb100.Ejb1;

 @Stateless
 @Remote(Injection.class)
 public class InjectionBean implements Injection {
     @EJB
     private Ejb1 ejb1;
     @Override
     public String sayHello() {
         // TODO Auto-generated method stub
         return ejb1.sayHello("yingzhongwen");
     }

 }

这时只需要redeploy一下,就可以了

Ejb: remote调用的更多相关文章

  1. EJB的调用

    EJB调用.html :first-child{margin-top:0!important}img.plugin{box-shadow:0 1px 3px rgba(0,0,0,.1);border ...

  2. weblogic的ejb远程调用

    这是一篇对EJB远程调用的简单范例.      1.环境:win7  + weblogic 12c + myeclipse8.5      2.目的:实现在myeclispe中对weblogic中EJ ...

  3. 解决EJB本地调用“java.lang.ClassCastException: $Proxy96 cannot be cast to com.tgb.ejb.UserManager”异常

    EJB本地调用方式:把Webclient和EJB服务端部署到同一个JBoss,client和server通过一个JVM进行通信. Web客户端本地调用时.需引用EJB服务端打包的jar,不需引用JBo ...

  4. Ejb远程调用-jboss服务器调用服务器-Bean调用Bean

    英文参考地址 https://docs.jboss.org/author/display/AS71/Remote+EJB+invocations+via+JNDI+-+EJB+client+API+o ...

  5. JBOSS EAP 6 系列四 EJB实现——调用(贯穿始终的模块)

    本文主要介绍在JBOSS EAP 6.2(或者JBOSS AS7)中模块是如何贯穿EJB实现的始终.延续上一博文<认识模块的使用>的话题继续聊JBOSS做为模块申明式容器的这一特性在EJB ...

  6. ejb 远程调用

    1,客户端代码: package com.example.test; import java.util.Hashtable; import java.util.Properties; import j ...

  7. EJB Remote/Local 绑定和JNDI Lookup

    从同事那里学到一种方便的注解SessionBean的方式.代码我放到github去了 https://github.com/EdisonXu/Test/commit/703d49123dca9e666 ...

  8. 需要安全认证的远程EJB调用示例(Jboss EAP 6.2环境)

    一,Remote EJB 服务接口定义: package yjmyzz.ejb.server.helloworld; public interface HelloWorldService { publ ...

  9. JavaEE(8) - 本地和远程调用的有状态以及无状态Session EJB

    1. 使用NetBeans开发Session Bean #1. 创建项目:File-->New Project-->Java EE-->EJB Module #2. 在项目中创建Se ...

随机推荐

  1. extjs4 树列表 添加子节点 刷新所有父节点数据

    itemclick:function(view, record, item,index){console.log(record.parentNode) for(pNode = record.paren ...

  2. nodejs 执行shell 命令

    有需要从前端操作服务器执行shell命令的需求 建立一个process.js文件 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 var process =  ...

  3. Android Handler简单示例

    package com.firstapp.foo.firstapp; import android.os.Handler; import android.os.Message; import andr ...

  4. C语言解析json类型数据

    转自:http://buluzhai.iteye.com/blog/845404   首先感谢作者!! 我使用的是cJSON:http://sourceforge.net/projects/cjson ...

  5. UITextView打开文字中的URL

    1. 背景介绍 UITextView里显示的文字带有url,点击url可以打开对应的网页,可以分两种打开方式:(1)在App内打开url:(2)用safari打开url. 2. 实现代码: (1)声明 ...

  6. python装饰器方法

    前几天向几位新同事介绍项目,被问起了@login_required的实现,我说这是django框架提供的装饰器方法,验证用户是否登录,只要这样用就行了,因为自己不熟,并没有做过多解释. 今天查看dja ...

  7. Swift 学习难点笔记

    定义一个字典 let interestingNumber = [ ,,,,,], ,,,,,], ,,,,] ] var array = interestingNumber["Prime&q ...

  8. Eclipse常用设置(转)

    http://jingyan.baidu.com/article/3065b3b6efa9d7becff8a4c6.html 用惯了VS,再回过去用Eclipse真是一件痛苦的事.so,在这里记录下使 ...

  9. 3.IP地址分类_规划_子网掩码

    IP地址分类_规划_子网掩码 3.1MAC地址 网卡的身份证号———MAC地址 MAC地址的长度为48位(6个字节),通常表示为12个16进制数,每2个16进制数之间用冒号隔开,如:08:00:20: ...

  10. Android各个版本 版本号对应关系表

    Platform Version API Level VERSION_CODE Notes Android 5.0 21 LOLLIPOP Platform Highlights Android 4. ...