当mule项目转换为Web应用程序时,mule ajax连接器中使用的app.home不起作用

时间:2013-04-16 11:32:22

标签: mule mule-studio

在mule中,当我使用web.xml

在Web应用程序中转换它时,工作室航班预订示例正常工作
<?xml version="1.0" encoding="UTF-8"?>
<web-app id="WebApp_ID">
 <!--Mule configuration (Mule format)-->
  <context-param>
    <param-name>org.mule.config</param-name>
    <param-value>flight-config.xml</param-value>
  </context-param>
  <listener>
    <listener-class>
    org.mule.config.builders.MuleXmlBuilderContextListener
    </listener-class>
  </listener>
  <servlet>
    <servlet-name>muleServlet</servlet-name>
    <servlet-class>org.mule.transport.servlet.MuleReceiverServlet</servlet-class>
    <load-on-startup>100</load-on-startup>
  </servlet>
 <!--Mule configuration ends-->
</web-app>

在mule申请中

<ajax:connector name="ajaxServer" serverUrl="http://0.0.0.0:9092/reservation" resourceBase="${app.home}/docroot" doc:name="Ajax"/>

以上连接器正在运行,但在Web应用程序中显示错误

    HTTP ERROR 404
    Problem accessing /reservation/. Reason: 
        NOT_FOUND
--------------------------------------------------------------------------------
Powered by Jetty://

在WebContent中,我创建了一个文件夹docroot并相应地创建了文件夹,我在Web应用程序中使用的连接器是

<ajax:connector name="ajaxServer" serverUrl="http://0.0.0.0:9092/reservation" resourceBase="/docroot" doc:name="Ajax"/>

但这不起作用。可能是造成此错误的原因是什么?

2 个答案:

答案 0 :(得分:2)

我是这样做的:

添加了一个ContextListener,扩展了MuleXmlBuilderContextListener,它执行以下操作

ServletContext context = event.getServletContext();
    System.setProperty("rootPath", context.getRealPath("/"));
    initialize(context);

并像这样使用了这个rootPath:

<ajax:connector name="ajaxServer" serverUrl="http://0.0.0.0:9092/reservation" resourceBase="${rootPath}WEB-INF/docroot" doc:name="Ajax"/>

现在应用程序正在运行。

答案 1 :(得分:1)

var $ {app.home}是由mule独立容器设置的,因此当你在webapp中嵌入它时,你有两个选择:

  1. 自己设置变量
  2. 将其更改为相对于您的网址位置的路径