将Mule ESB Http项目转换为Tomcat项目(4) 将ESB项目改造为Web项目
来源:互联网 发布:家装造价师软件 编辑:程序博客网 时间:2024/06/05 20:07
系列2中创建的ESB项目无法在Studio中直接转换为可以部署到Tomcat的Web项目,因为Mule Anypoint Studio提供的Project Facet不包含Dynamic Web Module,只有Static Web Module,需要我们进行手动修改。
Mule ESB官方提供的Tomcat项目转换文档存在很多谬误,不建议参考,我进行转换时主要参考的是这篇博文。
https://www.ricston.com/blog/tomcat-mule-3-7/
1. 将Mule ESB的运行时的所有库包拷贝到一个本地库目录,这些库包原来所在的位置在Anypoint的安装目录的plugins\org.mule.tooling.server.3.8.0.ee_6.0.0.201601271348\mule\lib目录下(如图所示),我们把它们拷贝到一个指定目录,例如D:\muleLib下
2. 改变项目的packaging类型为war,这样会使得在进行编译时,使用的是mave compile plugin,而不是mule提供的mule-app-maven-plugin。
<groupId>com.mycompany</groupId> <artifactId>testproject</artifactId> <version>1.0.0-SNAPSHOT</version> <packaging>war</packaging>
3. 改动项目中引用的mule esb jar包的scope,从provided改为system,这样避免从Mule Enterprise Repository下载mule esb jar包,使其直接指向本地目录,例如对于
mule-core-ee-3.8.0-M1.jar的引用,改动之前的dependency是这样的:
<dependency> <groupId>com.mulesoft.muleesb</groupId> <artifactId>mule-core-ee</artifactId> <version>${mule.version}</version> <scope>provided</scope> </dependency>改动之后变成了
<dependency> <groupId>com.mulesoft.muleesb</groupId> <artifactId>mule-core-ee</artifactId> <version>${mule.version}</version> <scope>system</scope> <systemPath>D:\MuleLib\mule\mule-core-${mule.version}.jar</systemPath> </dependency>
这样在编译时仅仅是引用本地mule lib目录下的jar包,而不必从mule ee repository上下载对应jar包,其他的mule esb jar包做同样修改。
4.添加maven-war-plugin,去除原来pom.xml文件build节点里的plugin.
<build> <finalName>testproject</finalName><plugins><plugin><groupId>org.apache.maven.plugins</groupId><artifactId>maven-war-plugin</artifactId><version>2.3</version><configuration><webResources><!-- 打包时将src/main/app目录下的testproject.xml流程文件包含到war包的WEB-INF目录下!--><resource><targetPath>WEB-INF</targetPath><directory>src/main/app</directory><includes><include>*.xml</include></includes></resource></webResources><failOnMissingWebXml>false</failOnMissingWebXml></configuration></plugin> </plugins></build>5.运行mvn eclipse:clean, mvn eclipse:eclipse命令,将ESB项目转化为可导入Eclipse的eclipse项目。
6.导入5生成的eclipse项目,右键菜单选中[Configure]-[Convert To Maven Project],将其专程maven项目,这是为了以后添加第三方库包。
7.设置项目的Project Facet为Dynamic Web Module 3.0, Java 1.8.新建src/main/webapp目录,在这个目录下新建web.xml文件,设置web.xml的内容如下:
<?xml version="1.0" encoding="UTF-8"?><web-app xmlns="http://java.sun.com/xml/ns/javaee" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-app_3_0.xsd" version="3.0"> <context-param><param-name>org.mule.config</param-name><!-- 设置web application访问的mule流程文件的位置 --><param-value>WEB-INF/testproject.xml</param-value></context-param><!-- 设置Context Listener --><listener><listener-class>org.mule.config.builders.MuleXmlBuilderContextListener</listener-class></listener><!-- 设置接收http请求的Mule Servlet --><servlet><servlet-name>muleServlet</servlet-name><servlet-class>org.mule.transport.servlet.MuleReceiverServlet</servlet-class></servlet><servlet-mapping><servlet-name>muleServlet</servlet-name><url-pattern>/*</url-pattern></servlet-mapping></web-app>
修改src/main/app目录下的testproject.xml,将原流程中的http:listener改为servlet inbound enpoint,注释http:listener-config节点,需要在头部添加servlet前缀的namespace定义。
<?xml version="1.0" encoding="UTF-8"?><mule xmlns:servlet="http://www.mulesoft.org/schema/mule/servlet" xmlns:dw="http://www.mulesoft.org/schema/mule/ee/dw" xmlns:metadata="http://www.mulesoft.org/schema/mule/metadata" xmlns:http="http://www.mulesoft.org/schema/mule/http" xmlns="http://www.mulesoft.org/schema/mule/core" xmlns:doc="http://www.mulesoft.org/schema/mule/documentation"xmlns:spring="http://www.springframework.org/schema/beans" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans-current.xsdhttp://www.mulesoft.org/schema/mule/core http://www.mulesoft.org/schema/mule/core/current/mule.xsdhttp://www.mulesoft.org/schema/mule/http http://www.mulesoft.org/schema/mule/http/current/mule-http.xsdhttp://www.mulesoft.org/schema/mule/ee/dw http://www.mulesoft.org/schema/mule/ee/dw/current/dw.xsd http://www.mulesoft.org/schema/mule/servlet http://www.mulesoft.org/schema/mule/servlet/current/mule-servlet.xsd"> <!-- <http:listener-config name="HTTP_Listener_Configuration" host="0.0.0.0" port="8081" doc:name="HTTP Listener Configuration"/> --> <flow name="testprojectFlow"> <!-- <http:listener config-ref="HTTP_Listener_Configuration" path="Test" allowedMethods="POST" doc:name="HTTP"/> --> <servlet:inbound-endpoint path="Test" responseTimeout="10000" doc:name="Servlet"/> <dw:transform-message metadata:id="838915ab-810b-4c29-af43-ae0057731e2a" doc:name="Transform Message"> <dw:set-payload><![CDATA[%dw 1.0%output application/xml---{Student: {name: payload.name,id: payload.id as :number}}]]></dw:set-payload> </dw:transform-message> </flow></mule>
8.这两个文件改完以后,执行mvn clean package,即可在项目target目录下生成testproject.war文件。
- 将Mule ESB Http项目转换为Tomcat项目(4) 将ESB项目改造为Web项目
- 将Mule ESB Http项目转换为Tomcat项目(5) 改造Tomcat
- 将Mule ESB Http项目转换为Tomcat项目(2) ESB项目创建
- 将Mule ESB Http项目转换为Tomcat项目(3) ESB项目运行
- 将Mule ESB Http项目转换为Tomcat项目(1) 总论
- MULE ESB项目本地部署(windows)
- eclipse中 将java项目转换为web项目
- eclipse中 将java项目转换为web项目
- eclipse中 将java项目转换为web项目
- 如何将Java Web项目转换为Java项目?
- 如何将Java项目转换为Java Web项目?
- 如何将Java项目转换为Java Web项目
- eclipse中 将java项目转换为web项目
- eclipse中 将java项目转换为web项目
- Eclipse中如何将Java项目转换为WEB项目
- Eclipse中如何将Java项目转换为WEB项目
- eclipse中 将java项目转换为web项目
- eclipse中 将java项目转换为web项目
- *[Lintcode]Median of two Sorted Arrays
- 不良资产回收处置创新方式
- 值类型引用类型
- Failed to create SD card - Android Studio
- Leetcode 450. Delete Node in a BST 删除BST中的节点 解题报告
- 将Mule ESB Http项目转换为Tomcat项目(4) 将ESB项目改造为Web项目
- $_POST取不到值的原因
- 如何正确bootbox加载echarts图表
- 将Zookeeper集成到你的应用中
- 超简易,极基础,巨详细的SSM(Spring +Springmvc+Mybatis)框架整合搭建2.0版
- Android 系统服务管家servicemanager启动过程详解
- 使用MAT工具分析性能
- 分治——最小点对(HDU 1007)
- .NET编程语言基础题一