原创

ESB企业服务总线Apache Synapse代理服务原理

        Apache Synapse是一种轻量级的高性能企业服务总线(ESB),Apache Synapse由快速和异步的中介引擎提供支持,为XML,Web服务和REST提供了非常好的支持。下面为大家讲述一下ESB企业服务总线Apache Synapse代理服务原理。


准备工作

Java运行环境:JDK1.7版本(官方推荐:Java运行时 - 1.6.0_23或更高版本的JDK或JRE 

Apache Ant  http://ant.apache.org

Axis2 server http://axis.apache.org/axis2/java/core/download.cgi


编译synapse-distribution项目成功后生成Synapse包synapse-3.0.0-bin.zip,解压压缩包打开cmd窗口切换到F:\synapse-3.0.0\bin目录,执行命令synapse.bat –sample 0,控制台输出如下日志:

...
2017-04-27 16:54:44,964 [-] [WrapperSimpleAppMain]  
INFO PassThroughHttpSSLListener Pass-through HTTPS listener started on port: 8243
2017-04-27 16:54:44,964 [-] [WrapperSimpleAppMain]  
INFO PassThroughHttpListener Starting pass-through HTTP listener...
2017-04-27 16:54:44,979 [-] [WrapperSimpleAppMain]  
INFO PassThroughHttpListener Pass-through HTTP listener started on port: 8280
2017-04-27 16:54:44,979 [-] [WrapperSimpleAppMain]  
INFO Axis2SynapseController Management using JMX available via
: service:jmx:rmi:///jndi/rmi://hdnav-pc:1099/synapse
2017-04-27 16:54:44,979 [-] [WrapperSimpleAppMain]  
INFO TimeoutHandler This engine will expire all callbacks after 
: 180 seconds, irrespective of the timeout action, after the specified or optional timeout
2017-04-27 16:54:44,979 [-] [WrapperSimpleAppMain]  
INFO ServerManager Server ready for processing...
2017-04-27 16:54:44,979 [-] [WrapperSimpleAppMain]  
INFO SynapseServer Apache Synapse started successfully

如果控制台输出“INFO SynapseServer Apache Synapse started successfully”信息,表示SynapseServer服务启动成功。 


该步骤不使用Apache Synapse自带Axis2 server服务,直接下载Axis2 server安装包。首先使用Ant命令编译服务案例,如SimpleStockQuoteService如下图目录:

 blob.png


执行build.xml文件,生成SimpleStockQuoteService.aar如下图:

blob.png


axis2-1.7.4-bin.zip解压,将SimpleStockQuoteService.aar文件放入到解压后的services目录下,运行bin目录命令axis2server.bat,输出日志如下:

F:\axis2-1.7.4\bin>axis2server.bat
Using JAVA_HOME    E:\Java\jdk1.7.0_17
Using AXIS2_HOME   F:\axis2-1.7.4\bin\..
[INFO] [SimpleAxisServer] Starting
[INFO] [SimpleAxisServer] Using the Axis2 RepositoryF:\axis2-1.7.4\bin\..\repository
[SimpleAxisServer] Using the Axis2 RepositoryF:\axis2-1.7.4\bin\..\repository
[SimpleAxisServer] Using the Axis2 Configuration FileF:\axis2-1.7.4\bin\..\conf\axis2.xml
[INFO] Clustering has been disabled
[INFO] Deploying module: addressing-1.7.4 - file:/F:/axis2-1.7.4/bin/../repository/modules/addressing-1.7.4.mar
[INFO] Deploying module: metadataExchange-1.7.4 - file:/F:/axis2-1.7.4/bin/../repository/modules/mex-1.7.4.mar
[INFO] Deploying module: mtompolicy-1.7.4 - file:/F:/axis2-1.7.4/bin/../repository/modules/mtompolicy-1.7.4.mar
[INFO] Deploying module: ping-1.7.4 - file:/F:/axis2-1.7.4/bin/../repository/modules/ping-1.7.4.mar
[INFO] Deploying module: script-1.7.4 - file:/F:/axis2-1.7.4/bin/../repository/modules/scripting-1.7.4.mar
[INFO] Deploying module: soapmonitor-1.7.4 - file:/F:/axis2-1.7.4/bin/../repository/modules/soapmonitor-1.7.4.mar
[INFO] Deploying Web service: SimpleStockQuoteService.aar - 
file:/F:/axis2-1.7.4/bin/../repository/services/SimpleStockQuoteService.aar
[INFO] Deploying Web service: version.aar - file:/F:/axis2-1.7.4/bin/../repository/services/version.aar
[INFO] Listening on port 8080
[INFO] [SimpleAxisServer] Started
[SimpleAxisServer] Started

启动成功,访问服务:http://localhost:8080/axis2/services/SimpleStockQuoteService?wsdl


该步骤使用内嵌Apache Synapse自带Axis2 server服务,所在目录F:\synapse-3.0.0\samples\axis2Server,将SimpleStockQuoteService.aar文件放入到F:\synapse-3.0.0\samples\axis2Server\repository\services目录下(如果不存在services文件夹创建即可),运行bin目录命令axis2server.bat,输出日志如下:

2017-04-28 09:11:59,531 [-] [WrapperSimpleAppMain]  
INFO HttpCoreNIOSSLListener Loading Trust Keystore from : ../../lib/trust.jks
2017-04-28 09:11:59,537 [-] [WrapperSimpleAppMain]  
INFO MailTransportListener MAILTO listener started
2017-04-28 09:11:59,538 [-] [WrapperSimpleAppMain]  WARN MailTransportListener 
Unable to configure the service SimpleStockQuoteService for 
the MAILTO transport: Service doesn't have configuration information for transport mailto.
 This service is being marked as faulty and will not be available over the MAILTO transport.
2017-04-28 09:11:59,539 [-] [WrapperSimpleAppMain]  WARN MailTransportListener 
Disabling the mailto transport for the service SimpleStockQuoteService,
 because it is not configured properly for the service
2017-04-28 09:11:59,727 [-] [WrapperSimpleAppMain]  
INFO HttpCoreNIOListener HTTPS Listener started on port : 9002
2017-04-28 09:11:59,737 [-] [WrapperSimpleAppMain]  
INFO HttpCoreNIOListener HTTP Listener started on port : 9000
2017-04-28 09:11:59,737 [-] [WrapperSimpleAppMain]  
INFO SampleAxis2ServerManager [SimpleAxisServer] Started

访问服务:http://localhost:9000/services/SimpleStockQuoteService?wsdl


代理服务(使用非内嵌Axis2 server服务)

Apache Synapse代理Axis2 server服务,修改synapse-3.0.0工程中/ conf / sample目录下的synapse_sample_150.xml文件中的配置如下:

<?xml version="1.0" encoding="UTF-8"?>
<!--
  ~  Licensed to the Apache Software Foundation (ASF) under one
  ~  or more contributor license agreements.  See the NOTICE file
  ~  distributed with this work for additional information
  ~  regarding copyright ownership.  The ASF licenses this file
  ~  to you under the Apache License, Version 2.0 (the
  ~  "License"); you may not use this file except in compliance
  ~  with the License.  You may obtain a copy of the License at
  ~
  ~   http://www.apache.org/licenses/LICENSE-2.0
  ~
  ~  Unless required by applicable law or agreed to in writing,
  ~  software distributed under the License is distributed on an
  ~   * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
  ~  KIND, either express or implied.  See the License for the
  ~  specific language governing permissions and limitations
  ~  under the License.
  -->
<!-- Introduction to proxy services -->
<definitions xmlns="http://ws.apache.org/ns/synapse">
    <proxy name="StockQuoteProxy">
        <target>
            <endpoint>
                <address uri="http://localhost:8080/axis2/services/SimpleStockQuoteService"/>
            </endpoint>
            <outSequence>
                <send/>
            </outSequence>
        </target>
        <publishWSDL uri="file:repository/conf/sample/resources/proxy/sample_proxy_1.wsdl"/>
    </proxy>
</definitions>

重新启动Axis2 server ,执行synapse.bat -sample 150命令,Synapse将在启动时显示一组消息,描述启动的过程,在运行客户端之前观察代理服务显示已发布WSDL。打开一个Web浏览器,并将其指向URL http://localhost:8280/services/StockQuoteProxy?wsdl会发现包含通过HTTP/S的服务正确EPR,Web参考图:

blob.png

关注下方微信公众号“Java精选”(w_z90110),回复关键字领取资料:如HadoopDubboCAS源码等等,免费领取资料视频和项目。 

涵盖:程序人生、搞笑视频、算法与数据结构、黑客技术与网络安全、前端开发、Java、Python、Redis缓存、Spring源码、各大主流框架、Web开发、大数据技术、Storm、Hadoop、MapReduce、Spark、elasticsearch、单点登录统一认证、分布式框架、集群、安卓开发、iOS开发、C/C++、.NET、Linux、Mysql、Oracle、NoSQL非关系型数据库、运维等。

评论

分享:

支付宝

微信