1.注册一个虚拟主机。
2.先安装服务端;
3.再安装客户端;
4.最后测试服务器状态
引入动态http代理的主要目的是在加入新的http代理而不需要重启Mule代理服务。注意,要真正的动态代理,需要注入实现了路径与服务器地址映射的检索服务的Spring的Bean,在enricher位置通过groovy获得Bean的实例进行调用。实例程序的限制:
这个例子程序缺乏生产环境中使用处理:
错误处理
从数据库检索路径的映射配置信息
这个例子将HTTP相对路径和目标服务器之间的映射写在XML配置文件里。这当然不能允许动态修改代理配置。
支持更多的HTTP方法
只支持HTTP get和post方法
处理的HTTP参数。
实例程序没考虑HTTP参数但这些都被认为是在HTTP相对路径的一部分。
支持HTTPS。
为了能够有一个服务代理,一个简单的SOAP问候服务使用一个Mule配置文件和一个Java类实现。
Mule配置包含以下配置:
01.<?xml version="1.0" encoding="UTF-8"?>
02.<mule
03.xmlns:cxf="http://www.mulesoft.org/schema/mule/cxf"
04.xmlns="http://www.mulesoft.org/schema/mule/core"
05.xmlns:doc="http://www.mulesoft.org/schema/mule/documentation"
06.xmlns:spring="http://www.springframework.org/schema/beans"
07.xmlns:test="http://www.mulesoft.org/schema/mule/test"
08.xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
09.xsi:schemaLocation="
10.http://www.mulesoft.org/schema/mule/cxf http://www.mulesoft.org/schema/mule/cxf/current/mule-cxf.xsd
11.http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans-current.xsd
12.http://www.mulesoft.org/schema/mule/core http://www.mulesoft.org/schema/mule/core/current/mule.xsd
13.http://www.mulesoft.org/schema/mule/test http://www.mulesoft.org/schema/mule/test/current/mule-test.xsd"
14.
15.<spring:beans>
16.<spring:bean id="helloService" class="com.ivan.mule.dynamichttpproxy.HelloService"/>
17.</spring:beans>
18.
19.<flow name="GreetingFlow">
20.<inbound-endpoint address="http://localhost:8182/services/GreetingService"
21.exchange-pattern="request-response"/>
22.
23.<cxf:jaxws-service serviceClass="com.ivan.mule.dynamichttpproxy.HelloService"/>
24.<component>
25.<spring-object bean="helloService"/>
26.</component>
27.</flow>
28.</mule>
服务类:
01.package com.ivan.mule.dynamichttpproxy
02.
03.import java.util.Date
04.import javax.jws.WebParam
05.import javax.jws.WebResult
06.import javax.jws.WebService
07.
08./**
09.* SOAP web service endpoint implementation class that implements
10.* a service that extends greetings.
11.*
12.* @author Ivan Krizsan
13.*/
14.@WebService
15.public class HelloService {
16./**
17.* Greets the person with the supplied name.
18.*
19.* @param inName Name of person to greet.
20.* @return Greeting.
21.*/
22.@WebResult(name = "greeting")
23.public String greet(@WebParam(name = "inName") final String inName) {
24.return "Hello " + inName + ", the time is now " + new Date()
25.}
26.}
服务器信息Bean,用于存储原始HTTP请求路径与对应目标服务器ip端口的映射信息:
01.package com.ivan.mule.dynamichttpproxy
02.
03./**
04.* Holds information about a server which to forward requests to.
05.*
06.* @author Ivan Krizsan
07.*/
08.public class ServerInformationBean {
09.private String serverAddress
10.private String serverPort
11.private String serverName
12.
13./**
14.* Creates an instance holding information about a server with supplied
15.* address, port and name.
16.*
17.* @param inServerAddress
18.* @param inServerPort
19.* @param inServerName
20.*/
21.public ServerInformationBean(final String inServerAddress,
22.final String inServerPort, final String inServerName) {
23.serverAddress = inServerAddress
24.serverPort = inServerPort
25.serverName = inServerName
26.}
27.
28.public String getServerAddress() {
29.return serverAddress
30.}
31.
32.public String getServerPort() {
33.return serverPort
34.}
35.
36.public String getServerName() {
37.return serverName
38.}
39.}
欢迎分享,转载请注明来源:夏雨云
评论列表(0条)