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

JBOSS EAP 6.2 -EJB远程调用-客户端的配置

时间:2015-01-25 22:40:14      阅读:234      评论:0      收藏:0      [点我收藏+]

标签:

        EJB访问方式分为远程客户端访问、本地客户端访问和WebService客户端。

        所谓的EJB的远程调用是说客户端与服务端的EJB对象不在同一个JVM进程中。

        本地客户端是说客户端与服务端的EJB对象在同一个JVM进程中。

         WebService客户端可以访问无状态会话Bean的接口,只有在业务逻辑方法被标识为@WebMethod的时候,webService客户端才可以访问到。

 

远程调用

         在没有远程调用的时候,我们需要用到别人的数据了,就直接把别人的接口和实现都拿过来了,接着打到自己的包中,这样做一方面来说是造成了代码的冗余,自己的包会很大,另一方面这样也不是远程调用。

        接下来我们改进,改成远程调用,直接调用别人的接口就可以操作了。这样的好处是针对接口编程,结构清晰,很灵活。

 

客户端配置:

1、当然需要调用的EJBBEAN必须是远程的:

@Stateless(name="ClassEao")
@Remote(ClassEao.class)
@TransactionManagement(TransactionManagementType.CONTAINER)
@TransactionAttribute(TransactionAttributeType.REQUIRED)
public class ClassEaoImpl extends ExamBase<Class> implements ClassEao {

	

}

我们在EAO的实现上加远程的注解。

 

2、我们注入Bean的时候需要用远程的JNDI,在自己的webspring-mvc.xml里面配置,即

<jee:jndi-lookup id="SchoolTeachingBean"
		jndi-name="ejb:itoo-basic-schoolteaching-ear/itoo-basic-schoolteaching-core-0.0.1-SNAPSHOT/SchoolTeachingBeanImpl!com.tgb.itoo.basic.service.SchoolTeachingBean"
		environment-ref="evn">
	</jee:jndi-lookup>

注意上面的jndi-name,我们的项目是打成了一个ear包,并且去掉了ear的版本号:

<build>
<finalName>${project.artifactId}</finalName>
</build>

同时在applicationContext-common.xml里面配置如下:

<util:properties id="evn"
		location="classpath:config/jboss-ejb-client.properties"></util:properties>

这样的目的是通过evn找到相应的JBOSS的配置,也就是需要远程调用的JBOSSip,端口号,用户名和密码。


3、在自己的Web层添加配置文件jboss-ejb-client.properties

endpoint.name=client-endpoint
remote.connectionprovider.create.options.org.xnio.Options.SSL_ENABLED=false
org.jboss.ejb.client.scoped.context=true
jboss.naming.client.ejb.context=true
Context.URL_PKG_PREFIXES=org.jboss.ejb.client.naming
javax.naming.Context.INITIAL_CONTEXT_FACTORY=org.jboss.naming.remote.client.InitialContextFactory
remote.connection.default.connect.options.org.xnio.Options.SASL_POLICY_NOANONYMOUS=false
remote.connectionprovider.create.options.org.xnio.Options.SSL_STARTTLS=false
jboss.naming.client.connect.options.org.xnio.Options.SASL_POLICY_NOPLAINTEXT=false
remote.connections=one
remote.connection.one.host=192.*.*.*
remote.connection.one.port=4447
remote.connection.one.username=adminks
remote.connection.one.password=!adminks123

       主要是配置IP和端口号以及需要远程调用的JBOSS的账户名和密码,同时我们还可以在JBOSS中配置多个远程调用的接口。

 

4、最后一步,在自己的ear包里面加入jboss-deployment-structure.xml配置如下:

<?xml version="1.0" encoding="UTF-8"?>
<jboss-deployment-structure>
		<sub-deployment name="itoo-assess-studentassess-web-0.0.1-SNAPSHOT.war">
		<dependencies>
			<module name="org.jboss.xnio" />
		</dependencies>
	</sub-deployment>
</jboss-deployment-structure>

          因为现在用的JBOSS版本是eap 6.2 相比较以前的版本加入了模块的概念(用到才被加载),加入以上配置是为了找到war包里面jndi的配置。

 

总结:

        上面主要介绍了EJB远程调用的客户端的配置,主要是因为现在JBOSS提升版本后,突出的一点是JBOSS的模块化,也是因为这个又爱又恨的模块化出了一系列的问题,解决了一系列的问题。下篇博客继续说远程调用JBOSS的配置。

JBOSS EAP 6.2 -EJB远程调用-客户端的配置

标签:

原文地址:http://blog.csdn.net/liutengteng130/article/details/43120617

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