3

http 要求に応答するように Jetty をセットアップしたい作業中の Mule アプリケーションがあります。次の構成:

<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 ごとに「Received」だけです。

私がやりたいのは、これを更新して、「Received」を表示する代わりに、index.html ファイルを定義した場所に移動することです。私の仮定は、送信エンドポイントのために test:component out を変更する必要があるということです - これは正しいですか? パス (相対パスまたは絶対パス) はどこで指定しますか?

4

2 に答える 2

1

jetty:connector インスタンスを追加する必要がありました。

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

簡単な例にはエラーがあるため、jettyConfig.xml の内容は次のとおりです。

<?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>
于 2009-09-16T20:34:10.760 に答える
1

これは私にはうまくいきませんでした。

> [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 で定義されたポートで 1 つのインスタンスが作成され、次に Mule を介して別のインスタンスが作成されます。jettyConfig でポートを変更すると、2 つの異なるポートで同じように動作する 2 つのインスタンスが生成されます。

最も簡単な解決策は、jettyConfig.xml から addConnector 呼び出しを削除し、Mule にポートを割り当てさせることです。

エンドポイントでホストとポートを指定する必要もありません。これで十分です:

<jetty:endpoint address="http://localhost:8080" name="serverEndpoint" path="services/Foo" synchronous="false" />
于 2010-04-22T22:07:21.597 に答える