代码之家  ›  专栏  ›  技术社区  ›  OMG Ponies

MULE/码头设置

  •  3
  • OMG Ponies  · 技术社区  · 15 年前

    我有一个工作中的mule应用程序,我想在上面设置jetty来响应HTTP请求。以下配置:

    <jetty:endpoint address="http://localhost:8080" 
                    name="jettyEndpoint" 
                    host="localhost" 
                    port="8080" path="/" 
                    synchronous="true" /> 
    
    <service name="jettyUMO">
      <inbound>
        <jetty:inbound-endpoint ref="jettyEndpoint" /> 
      </inbound>
      <test:component appendString="Received" /> 
    </service>
    

    …当我启动应用程序并指向浏览器选择 http://localhost:8080 -根据test:component,所有显示的都是“已接收”。

    我要做的是更新这个,这样我就不想看到“已接收”,而是要转到我定义了index.html文件的地方。我的假设是我必须更改测试:出站端点的组件输出-这是正确的吗?在哪里指定路径(相对路径或绝对路径)?

    2 回复  |  直到 14 年前
        1
  •  1
  •   OMG Ponies    15 年前

    我必须添加一个jetty:connector实例:

    <jetty:connector name="httpConnector" 
                     configFile="conf/jettyConfig.xml" 
                     useContinuations="true" />
    

    下面是jettyconfig.xml的内容,因为 simple example 有错误:

    <?xml version="1.0"?>
    <!DOCTYPE Configure PUBLIC "-//Mort Bay Consulting//DTD Configure//EN" "http://jetty.mortbay.org/configure.dtd">
    
    <Configure id="Server" class="org.mortbay.jetty.Server">
      <Call name="addConnector">
        <Arg>
          <New class="org.mortbay.jetty.nio.SelectChannelConnector">
            <Set name="port">8080</Set>
          </New>
        </Arg>
      </Call>
    
      <Set name="handler">
        <New id="Handlers" class="org.mortbay.jetty.handler.HandlerCollection">
          <Set name="handlers">
            <Array type="org.mortbay.jetty.Handler">
              <Item>
                <New id="Contexts" class="org.mortbay.jetty.handler.ContextHandlerCollection"/>
              </Item>
              <Item>
                <New id="DefaultHandler" class="org.mortbay.jetty.handler.DefaultHandler"/>
              </Item>
            </Array>
          </Set>
        </New>
      </Set>
    
      <Call name="addLifeCycle">
        <Arg>
          <New class="org.mortbay.jetty.deployer.WebAppDeployer">
            <Set name="contexts"><Ref id="Contexts"/></Set>
            <Set name="webAppDir">path/webapps</Set>
          </New>
        </Arg>
      </Call>
    </Configure>
    
        2
  •  1
  •   dmossakowski    14 年前

    这对我不起作用。

    > [04-22 17:25:22] WARN  log [main]:
    > failed SelectChannelConnector@0.0.0.0:8080
    > java.net.BindException: Address already in use
    >         at sun.nio.ch.Net.bind(Native Method)
    

    我认为,发生的情况是,一个实例是在Jettyconfig中定义的端口上创建的,然后通过mule创建另一个实例。在Jettyconfig中更改端口会在两个不同的端口上生成两个行为相同的实例。

    最简单的解决方案是从jettyconfig.xml中删除addconnector调用,并让mule分配端口。

    也不需要在端点上指定主机和端口。这就足够了:

    <jetty:endpoint address="http://localhost:8080" name="serverEndpoint" path="services/Foo" synchronous="false" />