camel-users mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From "Daniel Langevin" <daniel.lange...@shq.gouv.qc.ca>
Subject Re: Rép. : Re: Restconfiguration using Servlet with Camel in OSGI Karaf
Date Wed, 29 Nov 2017 13:04:43 GMT
Hi,

Finally i found the configuration for Spring Configuration (Simply
adding OSGI shema)
Thank you for the track to follow

Here is the way.

A)  file name ABC-REST-0.0.1.XML deployed containg all routes for the
system ABC.

<beans xmlns="http://www.springframework.org/schema/beans"
       xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
       xmlns:camel="http://camel.apache.org/schema/spring"
       xmlns:osgi="http://www.springframework.org/schema/osgi"
       xmlns:cxf="http://camel.apache.org/schema/cxf"
       xsi:schemaLocation="
          http://www.springframework.org/schema/beans 
http://www.springframework.org/schema/beans/spring-beans-2.5.xsd 
          http://camel.apache.org/schema/cxf 
http://camel.apache.org/schema/cxf/camel-cxf.xsd 
          http://camel.apache.org/schema/spring 
http://camel.apache.org/schema/spring/camel-spring-2.17.7.xsd 
          http://www.springframework.org/schema/osgi
http://www.springframework.org/schema/osgi/spring-osgi.xsd">

<osgi:reference id="httpService"
interface="org.osgi.service.http.HttpService"/>

<bean id="camelservlet"
class="org.apache.camel.component.servlet.CamelHttpTransportServlet"/>
<bean
class="org.apache.camel.component.servlet.osgi.OsgiServletRegisterer"
       init-method="register"
       destroy-method="unregister">
    <property name="alias" value="/rest/ABC"/>
    <property name="httpService" ref="httpService"/>
    <property name="servlet" ref="camelservlet"/>
</bean>


<restConfiguration bindingMode="auto" component="servlet' port="8181"
contextPath="/rest/ABC" />
<rest path="/SendMail">
 <get uri="/{abcIdMail}">
      <to pattern="InOut" uri="direct:abcProcMail"/>
 </get>
</rest>
...


B) file name XYZ-REST-0.0.1.XML deployed containg all routes for the
system XYZ.

<beans xmlns="http://www.springframework.org/schema/beans"
       xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
       xmlns:camel="http://camel.apache.org/schema/spring"
       xmlns:osgi="http://www.springframework.org/schema/osgi"
       xmlns:cxf="http://camel.apache.org/schema/cxf"
       xsi:schemaLocation="
          http://www.springframework.org/schema/beans 
http://www.springframework.org/schema/beans/spring-beans-2.5.xsd 
          http://camel.apache.org/schema/cxf 
http://camel.apache.org/schema/cxf/camel-cxf.xsd 
          http://camel.apache.org/schema/spring 
http://camel.apache.org/schema/spring/camel-spring-2.17.7.xsd 
          http://www.springframework.org/schema/osgi
http://www.springframework.org/schema/osgi/spring-osgi.xsd">

<osgi:reference id="httpService"
interface="org.osgi.service.http.HttpService"/>

<bean id="camelservlet"
class="org.apache.camel.component.servlet.CamelHttpTransportServlet"/>
<bean
class="org.apache.camel.component.servlet.osgi.OsgiServletRegisterer"
       init-method="register"
       destroy-method="unregister">
    <property name="alias" value="/rest/XYZ"/>
    <property name="httpService" ref="httpService"/>
    <property name="servlet" ref="camelservlet"/>
</bean>


<restConfiguration bindingMode="auto" component="servlet' port="8181"
contextPath="/rest/XYZ" />
<rest path="/GetQuote">
 <get uri="/{xyzIdQuote}">
      <to pattern="InOut" uri="direct:abcProcQuote"/>
 </get>
</rest>
...


Daniel Langevin








>>> Kerry <karaf-user@avionicengineers.com> 2017-11-28 15:37 >>>
OK if you don't use blueprint then that shouldn't be a problem but I
wouldn't waste time at the moment trying to deploy my example (I need to
update the docs on it to list all the feature dependencies to be
installed in Karaf.. like I say it is a rough example at the moment)

Instead look at the Camel configuration in the two files
rest-camel-bp.xml and rest-time-bp.xml. That should give you an example
of how to set up two separate bundles but having a common path.


On 28/11/17 20:15, Daniel Langevin wrote:
> Hi,
>
> before open the case i tried to include theese lines
into my SPRING
> Bundle. (i don't use BLUEPRINT)
>
>
>
> <beans xmlns="http://www.springframework.org/schema/beans"
>         xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
>         xmlns:camel="http://camel.apache.org/schema/spring"
>         xmlns:cxf="http://camel.apache.org/schema/cxf"
>         xsi:schemaLocation="
>            http://www.springframework.org/schema/beans 
> http://www.springframework.org/schema/beans/spring-beans-2.5.xsd 
>            http://camel.apache.org/schema/cxf 
> http://camel.apache.org/schema/cxf/camel-cxf.xsd 
>            http://camel.apache.org/schema/spring 
> http://camel.apache.org/schema/spring/camel-spring-2.17.7.xsd">
>
> <reference id="httpService"
> interface="org.osgi.service.http.HttpService"/>
>
> <bean id="camelservlet"
>
class="org.apache.camel.component.servlet.CamelHttpTransportServlet"/>
> <bean
>
class="org.apache.camel.component.servlet.osgi.OsgiServletRegisterer"
>         init-method="register"
>         destroy-method="unregister">
>      <property name="alias" value="/rest"/>
>      <property name="httpService" ref="httpService"/>
>      <property name="servlet" ref="camelServlet"/>
> </bean>
>
> but i received error on deployement.
>
> org.xml.sax.SAXParseException: cvc-complex-type.2.4.a: Invalid
content
> was found starting with element 'reference'
>
> Do i missed something in my Beans declaration ?
>
>
>
> Daniel
>
>
>
>
>
>
>>>> Kerry <karaf-user@avionicengineers.com> 2017-11-28 14:34 >>>
> Hi,
>
> I have achieve the exact same thing Daniel (based upon the
> camel-example-servlet-rest-blueprint example available in the GitHub
> repo)
>
> My (rough) example can be found here:
https://github.com/jtkb/cameltest 
>
>
> The two bundles of interest are the 'api' and 'time-api' Maven
modules.
> Take a look at the blueprint XML files under
> resources/OSGI-INF/blueprint.
>
> you'll see the the root context path for both bundles is
> /camel-example-res-blueprint/rest (although for the api bundle it
> extends it further with /user - never tried it without but could be
> worth checking)
>
> Pay close attention to to the restConfiguration and servletName.
>
> BTW, this example as it stands isn't great as it has circular
package
> dependencies - I need to fix that.
>
> Kerry
>
>
> On 28/11/17 16:05, Daniel Langevin wrote:
>> Hi,
>>
>> i try to implement a Rest service In OSGI Karaf 4.0.9  with Camel
> 2.17.7
>> i want to have multiple REST service from more than one bundle
using
> the same port number
>> like this.
>>
>> A)  file name ABC-REST-0.0.1.XML deployed containg all routes for
the
> system ABC.
>> <restConfiguration bindingMode="auto" component="restlet'
port="9101"
> contextPath="/rest/ABC" />
>> <rest path="/SendMail">
>>    <get uri="/{abcIdMail}">
>>         <to pattern="InOut" uri="direct:abcProcMail"/>
>>    </get>
>> </rest>
>> ...
>>
>> call the service with http://serverName:9101/rest/ABC/Sendmail/nnn 
>> recevie a 200 OK
>>
>>
>> B) file name XYZ-REST-0.0.1.XML deployed containg all routes for
the
> system XYZ.
>> <restConfiguration bindingMode="auto" component="restlet'
port="9102"
> contextPath="/rest/XYZ" />
>> <rest path="/GetQuote">
>>    <get uri="/{abcIdQuote}">
>>         <to pattern="InOut" uri="direct:xyzProcQuote"/>
>>    </get>
>> </rest>
>> ...
>> call the service with http://serverName:9102/rest/XYZ/getQuote/nnn 
>> receive a 200 OK
>>
>> I want to be able to bind all my rest services on the same port
using
> http servlet , like this ( no error on deployement )
>> C) file name ABC-REST-0.0.1.XML containg all routes for the system
> ABC.
>> <restConfiguration bindingMode="auto" component="servlet'
port="8181"
> contextPath="/rest/ABC" />
>> <rest path="/SendMail">
>>    <get uri="/{abcIdMail}">
>>         <to pattern="InOut" uri="direct:abcProcMail"/>
>>    </get>
>> </rest>
>> ...
>> call the service with http://serverName:8181/rest/XYZ/getQuote/nnn 
>> receive a 404 url not found
>>
>>
>> aD)fi
le name XYZ-REST-0.0.1.XML containg all routes for the system
> XYZ.
>> <r
> estConfiguration bindingMode="auto" component="servlet' port="8181"
> contextPath="/rest/XYZ" />
>> <rest path="/GetQuote">
>>    <get uri="/{abcIdQuotel}">
>>         <to pattern="InOut" uri="direct:xyzProcQuote"/>
>>    </get>
>> </rest>
>> ...
>> call the service with http://serverName:8181/rest/XYZ/getQuote/nnn 
>> receive a 404 url not found
>>
>>
>>
>> What i missed ?
>> Do i have to refered the http servlet someware in my camel Context
?
>>
>>
>> Thank's
>>
>>
>> Daniel Langevin
>>
>>
>>
>>
>>
>>
>>
>>
>>
>>
>>
>> "Le présent courriel peut contenir des renseignements confidentiels
> et ne s'adresse qu'au destinataire dont le nom apparaît ci-dessus. Si
ce
> courriel vous est parvenu par mégarde, veuillez le supprimer et nous
en
> aviser aussitôt."
>
>
> "Le présent courriel peut contenir des renseignements confidentiels
et ne s'adresse qu'au destinataire dont le nom apparaît ci-dessus. Si ce
courriel vous est parvenu par mégarde, veuillez le supprimer et nous en
aviser aussitôt."



"Le présent courriel peut contenir des renseignements confidentiels et ne s'adresse qu'au
destinataire dont le nom apparaît ci-dessus. Si ce courriel vous est parvenu par mégarde,
veuillez le supprimer et nous en aviser aussitôt."
Mime
View raw message