标签:
用的是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一下,就可以了
标签:
原文地址:http://www.cnblogs.com/yingzhongwen/p/5732735.html