0

在 mule 中,工作室航班预订示例在我使用 web 应用程序转换它时正在工作web.xml

<?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>

在骡子应用中

<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"/>

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

4

2 回答 2

2

我是这样做的:

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

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"/>

现在应用程序正在运行。

于 2013-04-17T08:47:03.700 回答
1

var ${app.home} 由 mule 独立容器设置,因此当您将它嵌入到 webapp 中运行时,您有两个选项:

  1. 自己设置变量
  2. 将其更改为相对于您的 webapp 位置的路径
于 2013-04-16T13:14:22.623 回答