2017-10-31 1 views
0

Ich verwende REST DSL Component in meinem Projekt mit Jboss Fuse Karaf 6.3 instance. Ich habe zwei ProblemeCamel REST DSL - Adresse wird bereits verwendet: bind Ausnahme

  1. Mit der restConfiguration, muss ich immer eine Portnummer angeben. versucht mit der Komponente als "Servlet", muss immer noch eine Portnummer angeben. Gibt es einen Weg dies zu vermeiden? Bitte beachten Sie, dass ich hier kein Webprojekt erstelle.

  2. Ein Bundle zeigt Rest-Endpunkte mit "Restlet" -Komponente an Port 8080, die gut funktioniert. Ein anderes Bundle versucht, einige Endpunkte mit der gleichen restConfiguration anzuzeigen. java.net.BindException: Jetzt wird dieses Bündel nicht wegen der unter Ausnahme

    Bedingt durch die ersten Schritte Adresse bereits in Gebrauch: bind bei sun.nio.ch.Net.bind0 (native Methode) [: 1.8.0_111]

ich bin mit Frühling DSL in beiden Bundles wie unter einem mit Abbinden und einem mit json.

Bundle1

<restConfiguration bindingMode="json" component="restlet" port="8080"/> 
    <rest path="HelloService/rs"> 

Bundle2

<restConfiguration bindingMode="off" component="restlet" port="8080"/> 
    <rest path="AnotherService/rs"> 

Alle Lösungen oder Vorschläge für diese bitte?

Antwort

2

Sie können dies nicht mit mehreren Bundles in karaf/jboss fuse tun, wenn Restlet, Jetty usw. verwendet werden. Sie können den gleichen Port nur dann wiederverwenden, wenn Sie servlet verwenden, dann verwenden Sie den gemeinsamen http-Service/Servlet kommt mit JBoss Fuse aus der Box.

So sollten Sie

<restConfiguration bindingMode="off" component="servlet"/> 

Die Portnummer tun, wenn Servlet nur zu Dokumentationszwecken ist, wenn Sie Prahlerei api-docs mit Kamel-Prahlerei-java verwenden.

0

Vielen Dank Claus.

konnte ich es mit "Servlet" Komponente arbeiten erhalten, aber mit einigen zusätzlichen Änderungen unter

erwähnt
  1. Veröffentlicht CamelHttpTransportServlet als OSGi Service
<osgi:reference id="anHttpService" interface="org.osgi.service.http.HttpService" /> 

<bean class="org.apache.camel.component.servlet.osgi.OsgiServletRegisterer" 
    init-method="register" destroy-method="unregister"> 
    <property name="alias" value="/myService" /> 
    <property name="httpService" ref="anHttpService" /> 
    <property name="servlet" ref="aCamelServlet" /> 
    <property name="servletName" value="aCamelServlet" /> 
</bean> 

<bean id="aCamelServlet" 
    class="org.apache.camel.component.servlet.CamelHttpTransportServlet" /> 
  1. Ändern Sie die Ruhekonfiguration als
<restConfiguration bindingMode="json" component="servlet"> 
    <endpointProperty key="servletName" value="aCamelServlet" /> 
</restConfiguration> 

Außerdem wurde das Kamel-Servlet zum Pom hinzugefügt. Auf diese Weise werden beide Bundles mit einem eigenen Kontextpfad ausgeführt.

Verwandte Themen