JBoss ESB学习笔记8第七个ESB应用Https Gateway.docx

上传人:b****4 文档编号:11945846 上传时间:2023-04-16 格式:DOCX 页数:15 大小:81.46KB
下载 相关 举报
JBoss ESB学习笔记8第七个ESB应用Https Gateway.docx_第1页
第1页 / 共15页
JBoss ESB学习笔记8第七个ESB应用Https Gateway.docx_第2页
第2页 / 共15页
JBoss ESB学习笔记8第七个ESB应用Https Gateway.docx_第3页
第3页 / 共15页
JBoss ESB学习笔记8第七个ESB应用Https Gateway.docx_第4页
第4页 / 共15页
JBoss ESB学习笔记8第七个ESB应用Https Gateway.docx_第5页
第5页 / 共15页
点击查看更多>>
下载资源
资源描述

JBoss ESB学习笔记8第七个ESB应用Https Gateway.docx

《JBoss ESB学习笔记8第七个ESB应用Https Gateway.docx》由会员分享,可在线阅读,更多相关《JBoss ESB学习笔记8第七个ESB应用Https Gateway.docx(15页珍藏版)》请在冰豆网上搜索。

JBoss ESB学习笔记8第七个ESB应用Https Gateway.docx

JBossESB学习笔记8第七个ESB应用HttpsGateway

JBossESB学习笔记8——第七个ESB应用HttpsGateway

续上篇介绍了第六个ESB应用,本文介绍第七个ESB应用——HttpsGateway。

1概述

该实例主要演示了两点:

一是配置一个https的ESB入口,二是在ESB外部端点中配置http路由器实现https传输方式的调用。

2新建ESB工程

操作过程略。

3ESB配置

3.1创建消息队列

这里将创建一个消息地理用于接收客户端消息,在esbcontent文件夹下创建文件jbm-queue-service.xml用于配置消息队列,内容如下:

Xml代码

1

xmlversion="1.0"encoding="UTF-8"?

>

2

3

4name="jboss.esb.quickstart.destination:

service=Queue,name=httpsgateway"xmbean-dd="xmdesc/Queue-xmbean.xml">

5

6jboss.messaging:

service=ServerPeer

7

8jboss.messaging:

service=PostOffice

9

10

3.2定义Provider

这里将创建两个provider,一个提供客户端消息通道,另一个是jbr-provider,下面具体介绍。

3.2.1jms-provider

Xml代码

11

12

13

14dest-type="QUEUE"/>

15

16

3.2.2jbr-provider

Xml代码

17

18

19value="C:

/jbossesb-server-4.7/httpsgateway.keystore"/>

20

21

22value="C:

/jbossesb-server-4.7/httpsgateway.keystore"/>

23

24

25

26

27

关于jbr-provider的配置如上所示,下面对各个属性做简要说明:

jbr-KeyStoreURL:

密钥库文件的路径,下面会说明如何创建密钥库文件

jbr-KeyStorePassword:

密钥库文件的密码,在创建密钥库文件时指定

jbr-TrustStoreURL:

受信任的密钥库文件路径,可与jbr-KeyStoreURL属性值一样

jbr-TrustStorePassword:

受信任的密钥库文件的密码

jbr-ClientAuthMode:

客户端验证模式

serviceInvokerTimeout:

服务调用时限

httpsgatewayJBRChanel:

JBR端口设置

关于各个属性的详细说明,可参考官方文档或者相关API。

3.2.3keystore制作

密钥库文件的制作如下图所示,这里使用的是JDK提供的keytool工具。

关于如何使用keytool制作密钥库文件,请自行查找,网上到处都是,这里不再说明。

将制作好的keystore文件命名为httpsgateway.keystore,并保存至C:

/jbossesb-server-4.7目录下。

3.2.4配置属性文件

在esbcontent/META-INF目录下新建属性文件HttpRouter.properties,其内容如下:

Properties代码

28configurators=HttpProtocol

29protocol-socket-factory=mons.httpclient.contrib.ssl.EasySSLProtocolSocketFactory

30keystore=C:

/jbossesb-server-4.7/httpsgateway.keystore

31keystore-passw=123456

32truststore=C:

/jbossesb-server-4.7/httpsgateway.keystore

33truststore-passw=123456

34max-connections-per-host=5

3.3定义Action类

3.3.1ClientAction

该类用于打印输出客户端响应的具体内容。

Java代码

35packagecom.thu.afa.esb.jbossesb.action.client;

36

37importorg.jboss.soa.esb.actions.AbstractActionLifecycle;

38importorg.jboss.soa.esb.helpers.ConfigTree;

39importorg.jboss.soa.esb.http.HttpHeader;

40importorg.jboss.soa.esb.http.HttpResponse;

41importorg.jboss.soa.esb.message.Message;

42

43importjava.util.List;

44

45publicclassHttpResponsePrinterextendsAbstractActionLifecycle{

46

47protectedConfigTreeconfigTree;

48

49publicHttpResponsePrinter(ConfigTreeconfig){

50this.configTree=config;

51}

52

53

54publicMessageprocess(Messagemessage)throwsException{

55

56HttpResponsehttpResponse=(HttpResponse)message.getBody().get(HttpResponse.RESPONSE_KEY);

57

58System.out.println("===========ClientResponse:

===================================");

59System.out.println("MessagePayload:

");

60System.out.println("\t["+message.getBody().get()+"]");

61

62System.out.println();

63System.out.println("HttpResponse:

");

64System.out.println("\tCode:

"+httpResponse.getResponseCode());

65System.out.println("\tLength:

"+httpResponse.getLength());

66System.out.println("\tEncoding:

"+httpResponse.getEncoding());

67

68System.out.println("\tHeaders:

");

69Listheaders=httpResponse.getHttpHeaders();

70for(HttpHeaderheader:

headers){

71System.out.println("\t\t"+header.getName()+":

"+header.getValue());

72}

73

74System.out.println("================================================================");

75

76returnmessage;

77}

78}

3.3.2ServerAction

该类用于打印输出服务端请求的具体内容。

Java代码

79packagecom.thu.afa.esb.jbossesb.action.server;

80

81importorg.jboss.soa.esb.actions.AbstractActionLifecycle;

82importorg.jboss.soa.esb.helpers.ConfigTree;

83importorg.jboss.soa.esb.message.Message;

84importorg.jboss.soa.esb.message.Properties;

85

86publicclassHttpRequestPrinterextendsAbstractActionLifecycle{

87

88protectedConfigTreeconfigTree;

89

90publicHttpRequestPrinter(ConfigTreeconfig){

91this.configTree=config;

92}

93

94

95publicMessageprocess(Messagemessage)throwsException{

96Propertiesproperties=message.getProperties();

97

98System.out.println("===========ServerRequest:

====================================");

99System.out.println("MessagePayload:

");

100System.out.println("\t["+message.getBody().get()+"]");

101

102System.out.println();

103System.out.println("\tHeaders:

");

104System.out.println("\t\thost:

"+properties.getProperty("host"));

105System.out.println("\t\tMethod:

"+properties.getProperty("MethodType"));

106System.out.println("\t\tPath:

"+properties.getProperty("Path"));

107System.out.println("\t\tuser-agent:

"+properties.getProperty("user-agent"));

108System.out.println("\t\tcontent-type:

"+properties.getProperty("content-type"));

109System.out.println("================================================================");

110

111message.getBody().add("HttpResponsePayload!

!

");

112

113returnmessage;

114}

115}

3.4定义第一个Service

Xml代码

116

117invmScope="GLOBAL"name="HttpsClientService">

118

119

120name="httpsgatewayListener"/>

121

122

123

124

125

126

127value="https:

//localhost:

9433/x/y">

128

129value="/META-INF/HttpRouter-localhost-https-9433.properties"/>

130

131

132

133

134

135

136class="com.thu.afa.esb.jbossesb.action.client.HttpResponsePrinter"/>

137

138

配置说明:

该服务执行了两次操作,首先将接收到的消息执行了一次http转发,然后由HttpResponsePrinter打印请求的内容。

3.5定义第二个Service

Xml代码

139

140invmScope="GLOBAL"name="HttpsServerService">

141

142

143is-gateway="true"name="httpsgatewayJbsListener"/>

144

145

146

147class="com.thu.afa.esb.jbossesb.action.server.HttpRequestPrinter"/>

148

149

配置说明:

该服务用语打印输出接收到的消息的内容。

3.6配置部署文件

部署依赖文件deployment.xml内容如下:

Xml代码

150

151jboss.esb.quickstart.destination:

service=Queue,name=httpsgateway

152

153

3.7部署ESB

将整个工程导出成一个ESB文件,并保存至JBossESBServer的部署目录下,启动JBossESBServer即可。

4ESB客户端

4.1新建Java工程

这里略去操作过程以及添加所需要的Jar包,具体操作过程可参考第一个ESB实例说明。

4.2发送消息的客户端

Java代码

154/***********************************************************************

155*

ProjectName:

helloworldclient

156*

FileName:

com.thu.afa.esb.jbossesb.client.HttpsGatewayClient.java

157*

Copyright:

Copyright(c)2010

158*

Company:

159***********************************************************************/

160packagecom.thu.afa.esb.jbossesb.client;

161

162importjava.util.Properties;

163

164importjavax.jms.Message;

165importjavax.jms.ObjectMessage;

166importjavax.jms.Queue;

167importjavax.jms.QueueConnection;

168importjavax.jms.QueueConnectionFactory;

169importjavax.jms.QueueReceiver;

170importjavax.jms.QueueSender;

171importjavax.jms.QueueSession;

172importjavax.jms.TextMessage;

173importjavax.naming.Context;

174importjavax.naming.InitialContext;

175

176/**

177*

ClassName:

HttpsGatewayClient

178*

Description:

179*@authorAfa

180*@date2010-9-7

181*@version1.0

182*/

183publicclassHttpsGatewayClient

184{

185privateQueueConnectionconnection;

186privateQueueSessionsession;

187privateQueuequeue;

188

189publicvoidsetupConnection()throwsException

190{

191Propertiesproperties=newProperties();

192properties.put(Context.INITIAL_CONTEXT_FACTORY,"org.jnp.interfaces.NamingContextFactory");

193properties.put(Context.URL_PKG_PREFIXES,"org.jboss.naming:

org.jnp.interfaces");

194properties.put(Context.PROVIDER_URL,"jnp:

//127.0.0.1:

1099");

195InitialContextcontext=newInitialContext(properties);

196

197QueueConnectionFactoryfactory=(QueueConnectionFactory)context.lookup("ConnectionFactory");

198connection=factory.createQueueConnection();

199queue=(Queue)context.lookup("queue/httpsgateway");

200session=connection.createQueueSession(false,QueueSession.AUTO_ACKNOWLEDGE);

201connection.start();

202

203System.out.println("ConnectionStarted");

204}

205

206publi

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 党团工作 > 党团建设

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1