Try this it's work for me.


<restConfiguration component="servlet" contextPath="/apiisp001" 
                   bindingMode="json" scheme="https" port="8443"
                   apiContextPath="/api-doc" apiContextListing="false" 
enableCORS="true">
<!-- 
     Add apiContextpath to give the possibility to list all service on 
apiisp001 Context with Camel Swagger
     with that request: https://localhost:8443/apiisp001/api-doc 
-->

<!-- Add this line to create a independant servlet prevent Conflict with a 
previous declare in other CamelContext -->
        <endpointProperty key="servletName" value="apiisp001CamelServlet" />

        <dataFormatProperty key="prettyPrint" value="true" />
        <apiProperty key="base.path" value="/apiisp001" />
        <apiProperty key="api.description" value="APIISP001 - Test API" />
        <apiProperty key="api.title" value="APIISP001" />
        <apiProperty key="api.version" value="1.0.0" />
        <apiProperty key="api.contact.name" value="Gerald Kallas"/>
        <apiProperty key="api.contact.email" value="catsh...@mailbox.org"/>
        <apiProperty key="api.termsOfService" value="(C) xxxxxxxxxxxx 2020"/>

</restConfiguration>

<!-- 
      Add this little URI to test connectivity of you rest API 
      with that request: https://localhost:8443/apiisp001/echo/ping 
-->

<rest path="/echo" consumes="text/html" produces="text/html">
 <description>apiisp001 - Echo rest service</description>
 <get uri="ping">
    <description>APIISP001 - Connectivity test </description>
    <route id="rte.APIISP001.rest.echo">
        <transform>
           <constant>/APIISP001/echo  PONG.</constant>
        </transform>
    </route>
 </get>
</rest>

Daniel Langevin
Direction de l’assistance et des technologies
Direction des ressources informationnelles
 
Société d’habitation du Québec
Édifice Marie-Guyart
1054, rue Louis-Alexandre-Taschereau
Aile Jacques-Parizeau, 1er étage
Québec (Québec) G1R 5E7
Téléphone : 418 643-4035, poste 1191
Sans frais : 1 800 463-4315






>>> 
De :    Gerald Kallas <catsh...@mailbox.org>
À :     <users@camel.apache.org>, Daniel Langevin 
<daniel.lange...@shq.gouv.qc.ca>
Date :  2020-08-18 03:33
Objet :         Re: Rép. : Camel REST DSL with servlet - API URL?

Thanks for the hint. But it doesn't work either. I modified my Blueprint as 
following

<blueprint xmlns="http://www.osgi.org/xmlns/blueprint/v1.0.0";
                   
xmlns:ext="http://aries.apache.org/blueprint/xmlns/blueprint-ext/v1.0.0";
                   xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance";
                   
xsi:schemaLocation="http://www.osgi.org/xmlns/blueprint/v1.0.0 
https://www.osgi.org/xmlns/blueprint/v1.0.0/blueprint.xsd";>

        <camelContext id="isp.api.APIISP001" 
xmlns="http://camel.apache.org/schema/blueprint"; streamCache="true" 
useBreadcrumb="true">

                
<!--********************************************************************************-->
                <!-- REST API                                                   
                    -->
                
<!--********************************************************************************-->

                <restConfiguration component="servlet" contextPath="/apiisp001" 
bindingMode="json" scheme="https" port="8443">
                        <dataFormatProperty key="prettyPrint" value="true" />
                        <apiProperty key="base.path" value="/apiisp001" />
                        <apiProperty key="api.description" value="APIISP001 - 
Test API" />
                        <apiProperty key="api.title" value="APIISP001" />
                        <apiProperty key="api.version" value="1.0.0" />
                </restConfiguration>

                <!-- REST endpoints -->
        <rest path="/base">
                        <get uri="/1" id="isp.api.APIISP001.get.1">
                                <route>
                                        <!-- send the chunk to direct -->
                                        <to uri="direct-vm:APIISP001.1"/>
                                </route>
                        </get>
                </rest>

        </camelContext>

</blueprint>

The (untertow) web server runs with HTTPS on port 8443, other servlets are 
working. I tried

https://localhost:8443/apiisp001/base/1 

where I'd expect the response but did get a HTTP 404 error.

Any hints are appreciated.

See also the log for deployment

2020-08-18T07:31:28,421 | INFO  | fileinstall-/opt/apache-karaf-4.2.9/deploy | 
BlueprintContainerImpl           | 105 - org.apache.aries.blueprint.core - 
1.10.2 | Blueprint bundle isp.api.APIISP001.xml/0.0.0 has been started
2020-08-18T07:31:28,432 | INFO  | Blueprint Event Dispatcher: 1 | 
BlueprintCamelContext            | 169 - org.apache.camel.karaf.camel-blueprint 
- 3.4.2 | Attempting to start CamelContext: isp.api.APIISP001
2020-08-18T07:31:28,437 | INFO  | Blueprint Event Dispatcher: 1 | 
JmxManagementStrategy            | 144 - org.apache.camel.camel-management - 
3.4.2 | JMX is enabled
2020-08-18T07:31:28,484 | INFO  | Blueprint Event Dispatcher: 1 | 
AbstractCamelContext             | 115 - org.apache.camel.camel-base - 3.4.2 | 
Apache Camel 3.4.2 (isp.api.APIISP001) is starting
2020-08-18T07:31:28,484 | INFO  | Blueprint Event Dispatcher: 1 | 
AbstractCamelContext             | 115 - org.apache.camel.camel-base - 3.4.2 | 
StreamCaching is enabled on CamelContext: isp.api.APIISP001
2020-08-18T07:31:28,546 | INFO  | Blueprint Event Dispatcher: 1 | 
AbstractCamelContext             | 115 - org.apache.camel.camel-base - 3.4.2 | 
Using HealthCheck: camel-health
2020-08-18T07:31:28,592 | INFO  | Blueprint Event Dispatcher: 1 | 
DefaultStreamCachingStrategy     | 115 - org.apache.camel.camel-base - 3.4.2 | 
StreamCaching in use with spool directory: 
/opt/apache-karaf/data/tmp/camel/camel-tmp-ID-43c92ad4274c-1597499175862-121-1 
and rules: [Spool > 128K body size]
2020-08-18T07:31:28,593 | INFO  | Blueprint Event Dispatcher: 1 | 
JacksonDataFormat                | 137 - org.apache.camel.camel-jackson - 3.4.2 
| The option autoDiscoverObjectMapper is set to false, Camel won't search in 
the registry
2020-08-18T07:31:28,594 | INFO  | Blueprint Event Dispatcher: 1 | 
JacksonDataFormat                | 137 - org.apache.camel.camel-jackson - 3.4.2 
| The option autoDiscoverObjectMapper is set to false, Camel won't search in 
the registry
2020-08-18T07:31:28,625 | INFO  | Blueprint Event Dispatcher: 1 | 
InternalRouteStartupManager      | 115 - org.apache.camel.camel-base - 3.4.2 | 
Route: isp.api.APIISP001.get.1 started and consuming from: servlet:/apiisp001/1
2020-08-18T07:31:28,626 | INFO  | Blueprint Event Dispatcher: 1 | 
AbstractCamelContext             | 115 - org.apache.camel.camel-base - 3.4.2 | 
Total 1 routes, of which 1 are started
2020-08-18T07:31:28,626 | INFO  | Blueprint Event Dispatcher: 1 | 
AbstractCamelContext             | 115 - org.apache.camel.camel-base - 3.4.2 | 
Apache Camel 3.4.2 (isp.api.APIISP001) started in 0.142 seconds
2020-08-18T07:31:28,643 | INFO  | fileinstall-/opt/apache-karaf-4.2.9/deploy | 
fileinstall                      | 10 - org.apache.felix.fileinstall - 3.6.6 | 
Started bundle: 
blueprint:file:/opt/apache-karaf-4.2.9/deploy/isp.api.APIISP001.xml

Best
Gerald

> Daniel Langevin <daniel.lange...@shq.gouv.qc.ca> hat am 17.08.2020 17:44 
> geschrieben:
> 
>  
> Hi,
> 
> you have to specify the default http port number : 8181 for CamelServlet
> 
> like this:
> 
> http://servername.org:8181/apiisp001/1 
> 
> 
> 
> 
> Daniel Langevin
> Direction de l’assistance et des technologies
> Direction des ressources informationnelles
>  
> Société d’habitation du Québec
> Édifice Marie-Guyart
> 1054, rue Louis-Alexandre-Taschereau
> Aile Jacques-Parizeau, 1er étage
> Québec (Québec) G1R 5E7
> Téléphone : 418 643-4035, poste 1191
> Sans frais : 1 800 463-4315
> 
> 
> 
> 
> 
> >>> 
> De :  Gerald Kallas <catsh...@mailbox.org>
> À :   "users@camel.apache.org" <users@camel.apache.org>
> Date :        2020-08-17 11:22
> Objet :       Camel REST DSL with servlet - API URL?
> 
> Dear all,
> 
> I'm going to configure a REST API similar to a (working) HTTP consumer. I 
> tried several URLs to call the API operation but get always a HTTP 404.
> 
> Do I miss someting (e.g. the reference to the servletName)? Can someone point 
> me out which is the API URL for the get operation in my case?
> 
> Thanks in advance
> Gerald
> 
> 
> My Blueprint DSL see below ..
> 
> <blueprint xmlns="http://www.osgi.org/xmlns/blueprint/v1.0.0";
>                  
> xmlns:ext="http://aries.apache.org/blueprint/xmlns/blueprint-ext/v1.0.0";
>                  xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance";
>                  
> xsi:schemaLocation="http://www.osgi.org/xmlns/blueprint/v1.0.0 
> https://www.osgi.org/xmlns/blueprint/v1.0.0/blueprint.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.osgi.OsgiServletRegisterer"
>             init-method="register"
>             destroy-method="unregister">
>               <property name="servletName" value="APIISP001" />
>               <property name="alias" value="/apiisp001" />
>               <property name="httpService" ref="httpService" />
>               <property name="servlet" ref="camelServlet" />
>       </bean>
> 
>       <bean id="servlet" 
> class="org.apache.camel.component.servlet.ServletComponent" />
> 
>       <camelContext id="isp.api.APIISP001" 
> xmlns="http://camel.apache.org/schema/blueprint"; streamCache="true" 
> useBreadcrumb="true">
> 
>               
> <!--********************************************************************************-->
>               <!-- REST API                                                   
>                     -->
>               
> <!--********************************************************************************-->
> 
>               <restConfiguration component="servlet" contextPath="/apiisp001" 
> bindingMode="json">
>                       <dataFormatProperty key="prettyPrint" value="true" />
>                       <apiProperty key="base.path" value="/apiisp001" />
>                       <apiProperty key="api.description" value="APIISP001 - 
> Test API" />
>                       <apiProperty key="api.title" value="APIISP001" />
>                       <apiProperty key="api.version" value="1.0.0" />
>               </restConfiguration>
> 
>               <!-- REST endpoints -->
>         <rest path="/apiisp001">
>                       <get uri="/1" id="isp.api.APIISP001.get.1">
>                               <route>
>                                       <!-- send the chunk to direct -->
>                                       <to uri="direct-vm:APIISP001.1"/>
>                               </route>
>                       </get>
>               </rest>
> 
>       </camelContext>
> 
> </blueprint>
> 
> One example for a working HTTP consumer find below
> 
> <blueprint xmlns="http://www.osgi.org/xmlns/blueprint/v1.0.0";
>            xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance";
>            xsi:schemaLocation="http://www.osgi.org/xmlns/blueprint/v1.0.0 
>            https://www.osgi.org/xmlns/blueprint/v1.0.0/blueprint.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.osgi.OsgiServletRegisterer"
>          init-method="register"
>          destroy-method="unregister">
>               <property name="servletName" value="WEB2SFO" />
>               <property name="alias" value="/web2sfo" />
>               <property name="httpService" ref="httpService" />
>               <property name="servlet" ref="camelServlet" />
>       </bean>
> 
>       <bean id="servlet" 
> class="org.apache.camel.component.servlet.ServletComponent" />
> 
>       <camelContext xmlns="http://camel.apache.org/schema/blueprint";>
>               <route>
>                       <from uri="servlet://get?servletName=WEB2SFO" />
>                       <setBody>
>                               <constant>execution of /web2sfo/get</constant>
>                       </setBody>
>               </route>
>       </camelContext>
> 
> </blueprint>
> 
> Here I could later on add a security definition that works well.

Reply via email to