سؤال

لديّ تطبيق بغل يعمل أرغب في إعداد رصيف للرد على طلبات 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 - كل ما يتم عرضه هو "تم استلامه" ، لكل اختبار: مكون.

ما أريد القيام به هو تحديث هذا بحيث بدلاً من رؤية "استلام" ، أريد أن أذهب إلى المكان الذي حددت فيه ملف index.html. افتراضي هو أنني يجب أن أغير الاختبار: مكون من نقطة النهاية الخارجية - هل هذا صحيح؟ أين يمكنني تحديد المسار (النسبي أو المطلق)؟

هل كانت مفيدة؟

المحلول

اضطررت إلى إضافة رصيف: مثيل الموصل:

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

نصائح أخرى

لكن هذا لم ينفع بالنسبة لي.

> [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 إلى حدوثين يتصرفان متماثلتين على منفذين مختلفين.

أبسط الحلول هو إزالة مكالمة AddConnector من jettyconfig.xml والسماح للبغل بتعيين المنفذ.

كما أنه ليس من الضروري تحديد المضيف والمنفذ على نقطة النهاية. هذا يكفي:

<jetty:endpoint address="http://localhost:8080" name="serverEndpoint" path="services/Foo" synchronous="false" />
مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top