JBoss EJB 3.0 第十章:传输通信加密

JBoss EJB3.0 RC6 -PFD
http://www.jboss.org/jbossejb3/docs/reference/build/reference/en/html/index.html

[b]10 传输[/b]
这张解释了客户端怎样和EJB3容器之间通讯, 怎样设置替换的传输方式。传输方式基于JBoss Remoting, 更深层次的例子请参见其文档。

[b]10.1 缺省传输[/b]
基于socket的调用层,端口3878. 参见deploy/ejb3.deployer/META-INF/jboss-service.xml。实用设置:
   <mbean code="org.jboss.remoting.transport.Connector"
xmbean-dd="org/jboss/remoting/transport/Connector.xml"
name="jboss.remoting:type=Connector,name=DefaultEjb3Connector,handler=ejb3">
<depends>jboss.aop:service=AspectDeployer</depends>
<attribute name="InvokerLocator">socket://0.0.0.0:3873</attribute>
<attribute name="Configuration">
<handlers>
<handler subsystem="AOP">org.jboss.aspects.remoting.AOPRemotingInvocationHandler</handler>
</handlers>
</attribute>
</mbean>

InvokerLocator决定了协议、IP和端口。0.0.0.0表示所有网卡。

Configuration属性指定到了EJB容器的入口: AOPRemotingInvocationHandler.

[b]10.2 加密传输[/b]
有时候 你可能希望SSL来加密传输(太需要了)。先生成个keystore吧

[b]10.2.1 生成keystore和 truststore[/b]
先 来个公钥私钥对:
cd $JBOSS_HOME/server/default/conf/
keytool -genkey -alias ejb3-ssl -keypass opensource -keystore localhost.keystore
别名ejb3-ssl, 密码opensource, 文件名localhost.keystore

导出证书:
keytool -export -alias ejb3-ssl -file mycert.cer -keystore localhost.keystore

给客户端导入:
keytool -import -alias ejb3-ssl -file mycert.cer -keystore localhost.truststore

[b]10.2.2 设置SSL传输[/b]
最简单的方法是定义一个新的Remoting connector:
   <mbean code="org.jboss.remoting.transport.Connector"
xmbean-dd="org/jboss/remoting/transport/Connector.xml"
name="jboss.remoting:type=Connector,transport=socket3843,handler=ejb3">
<depends>jboss.aop:service=AspectDeployer</depends>
<attribute name="InvokerLocator">sslsocket://0.0.0.0:3843</attribute>
<attribute name="Configuration">
<handlers>
<handler subsystem="AOP">org.jboss.aspects.remoting.AOPRemotingInvocationHandler</handler>
</handlers>
</attribute>
</mbean>


keystore和密码系统Properties传入jboss:
run -Djavax.net.ssl.keyStore=../server/default/conf/localhost.keystore -Djavax.net.ssl.keyStorePassword=opensource

[b]10.2.3 配置EJB实用SSL[/b]
缺省连接时socket://0.0.0.0:3873. 使用@org.jboss.annotation.ejb.RemoteBinding来指定SSL:
[code] @RemoteBinding(clientBindUrl="sslsocket://0.0.0.0:3843", jndiBinding="StatefulSSL"),
@Remote(BusinessInterface.class)
public class StatefulBean implements BusinessInterface
{
...
}[/code]
还能指定不同的通讯方式:
[code] @RemoteBindings({
@RemoteBinding(clientBindUrl="sslsocket://0.0.0.0:3843", jndiBinding="StatefulSSL"),
@RemoteBinding(jndiBinding="StatefulNormal")
})
@Remote(BusinessInterface.class)
public class StatefulBean implements BusinessInterface
{
...
}[/code]

[b]10.2.4 设定客户端实用truststore[/b]
如果你的证书不是授信机构签名的, 你需要用System Properties来制定store和密码:
java -Djavax.net.ssl.trustStore=${resources}/test/ssl/localhost.truststore -Djavax.net.ssl.trustStorePassword=opensource com.acme.RunClient
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值