码迷,mamicode.com
首页 > 其他好文 > 详细

Ejb: remote调用

时间:2016-08-03 15:20:19      阅读:197      评论:0      收藏:0      [点我收藏+]

标签:

用的是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:

1 package ejb100;
2 
3 public interface Ejb1 {
4     public String sayHello(String name);
5 }

Ejb1Bean.java:

 1 package ejb100;
 2 
 3 import javax.ejb.Remote;
 4 import javax.ejb.Stateless;
 5 
 6 @Stateless
 7 @Remote
 8 public class Ejb1Bean implements Ejb1 {
 9     @Override
10     public String sayHello(String name) {
11         // TODO Auto-generated method stub
12         return "Hello, " + name;
13     }
14 }

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

四:新建java project

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

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

3. 编写test程序

 1 package ejb100test;
 2 
 3 import java.util.Properties;
 4 
 5 import javax.naming.Context;
 6 import javax.naming.InitialContext;
 7 import javax.naming.NamingException;
 8 
 9 import ejb100.Ejb1;
10 
11 public class Ejb100Test {
12 
13     public static void main(String[] args) throws NamingException {
14         // TODO Auto-generated method stub
15         Properties prop = new Properties();
16         prop.put(Context.URL_PKG_PREFIXES, "org.jboss.ejb.client.naming");
17         InitialContext context = new InitialContext(prop);
18         
19         Ejb1 test = (Ejb1)context.lookup("ejb:/Ejb100/Ejb1Bean!" + Ejb1.class.getName());
20         System.out.println(test.sayHello("yingzhongwen"));
21     }
22 
23 }

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

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

 1 endpoint.name=client-endpoint
 2 remote.connectionprovider.create.options.org.xnio.Options.SSL_ENABLED=false
 3 
 4 remote.connections=default
 5 
 6 remote.connection.default.host=172.16.15.142
 7 remote.connection.default.port=8180
 8 remote.connection.default.connect.options.org.xnio.Options.SASL_POLICY_NOANONYMOUS=false
 9 remote.connection.default.username=ejbuser
10 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:

1 package ejb200;
2 
3 public interface Injection {
4     public String sayHello();
5 }

InjectionBean.java

 1 package ejb200;
 2 
 3 import javax.ejb.EJB;
 4 import javax.ejb.Remote;
 5 import javax.ejb.Stateless;
 6 
 7 import ejb100.Ejb1;
 8 
 9 @Stateless
10 @Remote(Injection.class)
11 public class InjectionBean implements Injection {
12     @EJB
13     private Ejb1 ejb1;
14     @Override
15     public String sayHello() {
16         // TODO Auto-generated method stub
17         return ejb1.sayHello("yingzhongwen");
18     }
19 
20 }

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

Ejb: remote调用

标签:

原文地址:http://www.cnblogs.com/yingzhongwen/p/5732735.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!