将Mule ESB Http项目转换为Tomcat项目(4) 将ESB项目改造为Web项目

 系列2中创建的ESB项目无法在Studio中直接转换为可以部署到Tomcat的Web项目,因为Mule Anypoint Studio提供的Project Facet不包含Dynamic Web Module,只有Static Web Module,需要我们进行手动修改。

     将Mule ESB Http项目转换为Tomcat项目(4) 将ESB项目改造为Web项目_第1张图片

     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下

将Mule ESB Http项目转换为Tomcat项目(4) 将ESB项目改造为Web项目_第2张图片

 2. 改变项目的packaging类型为war,这样会使得在进行编译时,使用的是mave compile plugin,而不是mule提供的mule-app-maven-plugin。

 

   com.mycompany
    testproject
    1.0.0-SNAPSHOT
    war


3. 改动项目中引用的mule esb jar包的scope,从provided改为system,这样避免从Mule Enterprise Repository下载mule esb jar包,使其直接指向本地目录,例如对于

mule-core-ee-3.8.0-M1.jar的引用,改动之前的dependency是这样的:


            com.mulesoft.muleesb
            mule-core-ee
            ${mule.version}
            provided
 
改动之后变成了


    com.mulesoft.muleesb
    mule-core-ee
    ${mule.version}
    system
   D:\MuleLib\mule\mule-core-${mule.version}.jar
 

这样在编译时仅仅是引用本地mule lib目录下的jar包,而不必从mule ee repository上下载对应jar包,其他的mule esb jar包做同样修改。


4.添加maven-war-plugin,去除原来pom.xml文件build节点里的plugin.


        testproject
		
			
				org.apache.maven.plugins
				maven-war-plugin
				2.3
				
					
						
						
							WEB-INF
							src/main/app
							
								*.xml
								
							
						
					
					false
				
								 
		
	
5.运行mvn eclipse:clean, mvn eclipse:eclipse命令,将ESB项目转化为可导入Eclipse的eclipse项目。
将Mule ESB Http项目转换为Tomcat项目(4) 将ESB项目改造为Web项目_第3张图片

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的内容如下:




	      
	
		org.mule.config
		
		WEB-INF/testproject.xml
	
	
	
	
		org.mule.config.builders.MuleXmlBuilderContextListener
	
	
	
	
		muleServlet
		org.mule.transport.servlet.MuleReceiverServlet
	
	
	
		muleServlet
		/*
		

修改src/main/app目录下的testproject.xml,将原流程中的http:listener改为servlet inbound enpoint,注释http:listener-config节点,需要在头部添加servlet前缀的namespace定义。




   
    
        
        
        
            
        
    

8.这两个文件改完以后,执行mvn clean package,即可在项目target目录下生成testproject.war文件。

将Mule ESB Http项目转换为Tomcat项目(4) 将ESB项目改造为Web项目_第4张图片






你可能感兴趣的:(Mule,ESB)