首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > JAVA > J2EE开发 >

用过mule-esb的请进来一下 (via TranXcode)解决方案

2012-01-24 
用过mule-esb的请进来一下 (via TranXcode)mule-esb中的file构建可以设置文件夹路经path,当mule启动后会自

用过mule-esb的请进来一下 (via TranXcode)
mule-esb中的file构建可以设置文件夹路经path,当mule启动后会自动地会对该path路径进行监控。
不知道各位有没有用过这个file构件,如果用过的话,有没有实现过通过程序自动更改path路经,并且立即见效。因为我现在能想到的方法就是更改xml文件,然后重新启动mule服务,这样更新一次path路径生效速度将很慢。不知道有哪位大侠对mule进行研究过,是否知道mule里面提供没提供更改file构件中path路径中的方法。

感激不尽。

XML code
<flow name="File1">        <file:inbound-endpoint connector-ref="input"            path="C:\file">            <file:filename-wildcard-filter pattern="*.*" />        </file:inbound-endpoint>        <log-component />        <component>            <singleton-object class="com.tt.MessageEngineFileClient" />        </component>    </flow>


[解决办法]
我是LZ。

没想到竟然一个用户只能连续回复3次,CSDN真不够热情。连个顶帖的都没有,只能上另外一个号了。

还是自己把问题解决了。下面说下我的解决办法,万一有人碰到类似的问题也算是个方法吧。
[解决办法]
先说思路:由于mule服务装载到Spring的过程是这样的:先根据xml文件创建builder,然后再把Spring上下文context设为builder的父级上下文,然后再根据builder来创建mule上下文,这样mule就启动并且自动装载到Spring中去了。

现在我要先修改mule-config.xml文件(JDom),修改xml文件之后必须重新创建一个builder,重新创建builder之后又得放到Spring上下文context中去,所以context要设为静态变量。builder重新创建之后就得重新创建一个muleContext,这里我是直接用了原来的muleContext,所以muleContext也设为静态的了,先把muleContext Stop之后设为null,然后再创建一个新的 start。这样mule服务就实现了重新启动。 

上代码:
Java code
private static MuleContext muleContext;private static ApplicationContext context;/** * 停止mule上下文服务 *  * @throws MuleException */private static void stopMuleContext() throws MuleException {    if (muleContext != null) {        muleContext.stop();        muleContext = null;    }}/** * 启动mule上下文服务 *  * @throws MuleException */private static void startMuleContext() throws MuleException {    SpringXmlConfigurationBuilder builder = new SpringXmlConfigurationBuilder(            "mule-config.xml");    builder.setParentContext(context);    muleContext = new DefaultMuleContextFactory()            .createMuleContext(builder);    muleContext.start();}/** * 重新启动mule服务 *  * @param sendDir */public static void restartMuleService(String sendDir) {    try {        MuleLoader.stopMuleContext();        logger.info("ESB关闭成功");    } catch (MuleException e) {        e.printStackTrace();        logger.error("ESB关闭失败");    }    try {        JdomForXml.modifyMuleConfigXml(sendDir);    } catch (Exception e1) {        e1.printStackTrace();        logger.error("'mule-config.xml'配置文件中File构件的path路径更改异常");    }    try {        MuleLoader.startMuleContext();        logger.info("ESB重启成功");    } catch (MuleException e) {        e.printStackTrace();        logger.error("ESB重启失败");    }}
[解决办法]
大伙啊,给点热情。我也遇到同样的问题了

热点排行
Bad Request.