寻求可替代Mule、Jetty/Jersey的XML配置风格Web服务框架
寻找匹配现有XML配置架构的Mule/Jetty/Jersey替代软件
我来给你梳理下适合的替代方案,结合你现有基于Mule、Jetty/Jersey的XML配置架构,这些选项能最小化Java代码改动:
推荐替代方案
1. Apache Camel + Jetty + JAX-RS(Jersey/RestEasy)
Camel和Mule同属ESB范畴,配置风格非常接近——都是通过XML定义连接器、端点、服务/路由逻辑。它原生集成Jetty作为HTTP连接器,同时支持JAX-RS组件,完全适配你现有架构:
- 你的
com.rest.RestResource这类JAX-RS资源类可以直接复用,不需要修改核心业务代码 - Jetty配置既可以通过Camel的Jetty组件XML参数定义,也能沿用你现有的独立
jettyConfig.xml文件
2. Spring Boot + Jetty + Jersey
如果不需要完整的ESB功能,Spring Boot是轻量型的理想选择:
- 虽然Spring Boot常用注解配置,但它完全支持XML配置方式,你可以用Spring XML来定义Jetty容器、JAX-RS端点,逻辑和现有配置一致
- JAX-RS资源类无需大幅改动,仅需少量XML配置完成注册即可
3. Apache CXF + Jetty
CXF专注于Web服务开发,支持XML配置服务端点,原生集成Jetty作为嵌入式服务器:
- 配置风格和Mule的服务定义逻辑匹配,通过XML声明端点和绑定的资源类
- 原生支持JAX-RS,你的RestResource类可以直接迁移
- Jetty的配置可以在CXF的XML中直接定义,也支持引用外部Jetty配置文件
当前系统配置详情
启动命令
org.mule.MuleServer -config deploy_jetty_jersey.xml
deploy_jetty_jersey.xml 配置内容
<mule xmlns="http://www.mulesource.org/schema/mule/core/2.2" xmlns:jetty="http://www.mulesource.org/schema/mule/jetty/2.2" xmlns:jersey="http://www.mulesource.org/schema/mule/jersey/2.2" xmlns:vm="http://www.mulesource.org/schema/mule/vm/2.2" xsi:schemaLocation="http://www.mulesource.org/schema/mule/jetty/2.2 http://www.mulesource.org/schema/mule/jetty/2.2/mule-jetty.xsd http://www.mulesource.org/schema/mule/core/2.2 http://www.mulesource.org/schema/mule/core/2.2/mule.xsd http://www.mulesource.org/schema/mule/jersey/2.2 http://www.mulesource.org/schema/mule/jersey/2.2/mule-jersey.xsd http://www.mulesource.org/schema/mule/vm/2.2 http://www.mulesource.org/schema/mule/vm/2.2/mule-vm.xsd"> <jetty:connector name="httpConnector" useContinuations="true" configFile="jettyConfig.xml" /> <jetty:endpoint address="http://localhost:8080" name="serverEndpoint" path="html" synchronous="false" /> <model name="ServiceSample"> <service name="testComponent"> <inbound> <jetty:inbound-endpoint ref="serverEndpoint" /> </inbound> </service> <service name="restTestHello" initialState="started"> <inbound> <inbound-endpoint address="jersey:http://localhost:7003/rest" synchronous="true" /> </inbound> <component> <singleton-object class="com.rest.RestResource" /> </component> </service> </model> </mule>
jettyConfig.xml 配置内容
<Set name="handler"> <New id="Handlers" class="org.mortbay.jetty.handler.HandlerCollection"> <Set name="handlers"> <Array type="org.mortbay.jetty.Handler"> <Item> <New id="Contexts" class="org.mortbay.jetty.handler.ContextHandlerCollection" /> </Item> <Item> <New id="DefaultHandler" class="org.mortbay.jetty.handler.DefaultHandler" /> </Item> <Item> <New id="StaticHandler" class="org.mortbay.jetty.handler.ResourceHandler" /> </Item> <Item> <New class="org.mortbay.jetty.handler.ContextHandler"> <Set name="contextPath">/</Set> <Set name="resourceBase"> <SystemProperty name="jetty.home" default="." /> XXXXXX </Set> <Call name="addHandler"> <Arg> <New class="org.mortbay.jetty.handler.ResourceHandler" /> </Arg> </Call> </New> </Item> </Array> </Set> </New> </Set> <Call name="addLifeCycle"> <Arg> <New class="org.mortbay.jetty.deployer.WebAppDeployer"> <Set name="contexts"> <Ref id="Contexts" /> </Set> <Set name="webAppDir">XXX</Set> </New> </Arg> </Call> <Set name="stopAtShutdown">true</Set> <Set name="sendServerVersion">true</Set> <Set name="sendDateHeader">true</Set> <Set name="gracefulShutdown">1000</Set>
内容的提问来源于stack exchange,提问作者Shunmuga Ashok
相关产品推荐
相关产品推荐

