Re: Rest DSL with jetty and SSL

2015-05-30 Thread Roman Vottner
I've had similar problems
(http://camel.465427.n5.nabble.com/Rest-DSL-how-to-configure-SSL-Basic-Auth-for-Jetty-component-td5758003.html)
and therefore created a github project
(https://github.com/RovoMe/CamelMultipleJettyComponents/tree/rest-dsl) to
test Camel's REST-DSL with SSL/Basic Auth configured for a Jetty Server. 

There are currently a couple of issues to keep in mind:

1) On specifying a security handler (for basic auth), this handler must be
added only once to a route! This has a short mentioning in the component
docs - but may be skiped easily! This was somehow no issue before Camel
2.14.0.
(http://camel.465427.n5.nabble.com/Issue-using-multiple-services-broadcast-via-JettyComponent-td5757958.html)
2) Setting a security handler via .componentProperty(handler,
springBeanNameOfSecurityHandler) ignores the handler and therefore wont
even ask for the user credentials.
3) Having multiple HTTP operations defined within the same route and a
security handler defined via .endpointProperty(handlers,
springBeanNameOfSecurityHandler) will try to initialize the handler for
each HTTP operation and therefore yield the problem described in 1)
4) I still have no clue on how to directly add a handler to the
JettyHttpComponent to avoid these multiple additions problem (which
furthermore does raise some unclear exception)

The example project linked above contains 3 route-classes: the first two
route classes simply define a Jetty endpoint via the services.properties
where the first route declares a basic authentication handler for Jetty
which is simply added via ...handlers=#jettyAuthHandler... to the
endpoint. As this handler is only allowed to be added once for the same port
the other routes must not add this handler. 

Route3 defines a REST route using Camels REST-DSL. Post and Delete
operations are currently disabled as they only work if the handlers endpoint
property configuration in Route3 is removed. You can though achieve global
basic auth handling by activating route1 (but still disable the endpoint
property specifications for handlers in Route3)

Currently the first two routes are disabled. To enable them simply remove
the comment declaration from ServicesSpringConfig. On enabling route1 make
sure to comment out the .endpointProperty(handlers, jettyAuthHandler)
specification in Route3.

This project still lacks proper unit-tests, but you can test the behavior if
you simply run ServicesApp as a console application and point your browser
to https://localhost:8383/api/v1/serviceN where N should be replace by 1, 2
or 3 depending on which services you have enabled. If you have enabled the
basic auth handler you should be asked for user credentials (user=admin;
pw=secret)

Hope this helps and Claus or Willem can have a look at those issues



--
View this message in context: 
http://camel.465427.n5.nabble.com/Rest-DSL-with-jetty-and-SSL-tp5767572p5767688.html
Sent from the Camel - Users mailing list archive at Nabble.com.


Re: Rest DSL with jetty and SSL

2015-05-30 Thread Willem Jiang
In Camel 2.15.x we has two JettyComponents to support Jetty9 and Jetty8 at the 
same time.
If you want to instantiate one of the Jetty component, you cannot use the 
JettyHttpComponent any more, as it is abstract class now.

If you want to use Jetty9, you need to use the class”JettyHttpComponent9, 
otherwise you need to chose “JettyHttpComponent8”.


--  
Willem Jiang

Red Hat, Inc.
Web: http://www.redhat.com
Blog: http://willemjiang.blogspot.com (English)
http://jnn.iteye.com (Chinese)
Twitter: willemjiang  
Weibo: 姜宁willem



On May 28, 2015 at 4:48:31 AM, btt423 (bta...@diversecomputing.com) wrote:
 I was originally testing out the Rest DSL and using Jetty as the server.
 This works great and I'm a big fan. My next step was to try and get SSL
 working with my test application. Based on the reading that I did, it looks
 like I needed to add a jetty bean definition in blueprint.xml, and specify
 the keystore, keystore password and key password. When I add the bean
 definition for jetty, I'm getting the exception listed below. I have tried
 a number of different troubleshooting attempts, but always get this
 exception whenever I attempt to define the bean in blueprint xml (even
 taking SSL completely out the equation). The exception, details of my
 environment and the applicable snippets of code/config are below - I would
 appreciate any help that could be provided!!
  
 *** Environment Info: ***
  
 Camel 2.15.2
 camel-blueprint 2.15.2
 camel-jetty 2.15.2
  
 *** Exception: ***
  
 org.osgi.service.blueprint.container.ComponentDefinitionException: Error  
 when instantiating bean jetty of class class
 org.apache.camel.component.jetty.JettyHttpComponent
 at
 org.apache.aries.blueprint.container.BeanRecipe.getInstance(BeanRecipe.java:333)
   
 at
 org.apache.aries.blueprint.container.BeanRecipe.internalCreate2(BeanRecipe.java:806)
   
 at
 org.apache.aries.blueprint.container.BeanRecipe.internalCreate(BeanRecipe.java:787)
   
 at
 org.apache.aries.blueprint.di.AbstractRecipe$1.call(AbstractRecipe.java:79)  
 at java.util.concurrent.FutureTask.run(FutureTask.java:266)
 at
 org.apache.aries.blueprint.di.AbstractRecipe.create(AbstractRecipe.java:88)  
 at
 org.apache.aries.blueprint.container.BlueprintRepository.createInstances(BlueprintRepository.java:245)
   
 at
 org.apache.aries.blueprint.container.BlueprintRepository.createAll(BlueprintRepository.java:183)
   
 at
 org.apache.aries.blueprint.container.BlueprintContainerImpl.instantiateEagerComponents(BlueprintContainerImpl.java:668)
   
 at
 org.apache.aries.blueprint.container.BlueprintContainerImpl.doRun(BlueprintContainerImpl.java:370)
   
 at
 org.apache.aries.blueprint.container.BlueprintContainerImpl.run(BlueprintContainerImpl.java:261)
   
 at java.util.concurrent.Executors$RunnableAdapter.call(Executors.java:511)  
 at java.util.concurrent.FutureTask.run(FutureTask.java:266)
 at
 org.apache.aries.blueprint.container.ExecutorServiceWrapper.run(ExecutorServiceWrapper.java:106)
   
 at
 org.apache.aries.blueprint.utils.threading.impl.DiscardableRunnable.run(DiscardableRunnable.java:48)
   
 at java.util.concurrent.Executors$RunnableAdapter.call(Executors.java:511)  
 at java.util.concurrent.FutureTask.run(FutureTask.java:266)
 at
 java.util.concurrent.ScheduledThreadPoolExecutor$ScheduledFutureTask.access$201(ScheduledThreadPoolExecutor.java:180)
   
 at
 java.util.concurrent.ScheduledThreadPoolExecutor$ScheduledFutureTask.run(ScheduledThreadPoolExecutor.java:293)
   
 at
 java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1142)
   
 at
 java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:617)
   
 at java.lang.Thread.run(Thread.java:745)
 Caused by: java.lang.InstantiationException
 at
 sun.reflect.InstantiationExceptionConstructorAccessorImpl.newInstance(InstantiationExceptionConstructorAccessorImpl.java:48)
   
 at java.lang.reflect.Constructor.newInstance(Constructor.java:408)
 at
 org.apache.aries.blueprint.utils.ReflectionUtils.newInstance(ReflectionUtils.java:329)
   
 at
 org.apache.aries.blueprint.container.BeanRecipe.newInstance(BeanRecipe.java:962)
   
 at
 org.apache.aries.blueprint.container.BeanRecipe.getInstance(BeanRecipe.java:331)
   
 ... 21 more
  
 *** blueprint.xml: ***
  
  
  xmlns:xsi=http://www.w3.org/2001/XMLSchema-instance;
 xsi:schemaLocation=
 http://www.osgi.org/xmlns/blueprint/v1.0.0
 http://www.osgi.org/xmlns/blueprint/v1.0.0/blueprint.xsd
 http://camel.apache.org/schema/blueprint
 http://camel.apache.org/schema/blueprint/camel-blueprint.xsd;
  
  class=org.apache.camel.component.jetty.JettyHttpComponent
  
  
  
  
  
  
  
  
  
  
  
  
  
 *** RouteBuilder: ***
  
 public class RestRouter extends RouteBuilder {
  
 @Override
 public void configure() throws Exception {
  
 restConfiguration()
 .component(jetty)
 .host(localhost)
 .port(8082)
 //.scheme(https)
 .contextPath(rest)
 .bindingMode(RestBindingMode.auto)
 

Re: Rest DSL with jetty and SSL

2015-05-29 Thread Camel Guy
I'd also love to see the solution to this.

On Wed, May 27, 2015 at 1:48 PM, btt423 bta...@diversecomputing.com wrote:

 I was originally testing out the Rest DSL and using Jetty as the server.
 This works great and I'm a big fan.  My next step was to try and get SSL
 working with my test application.  Based on the reading that I did, it
 looks
 like I needed to add a jetty bean definition in blueprint.xml, and specify
 the keystore, keystore password and key password.  When I add the bean
 definition for jetty, I'm getting the exception listed below.  I have tried
 a number of different troubleshooting attempts, but always get this
 exception whenever I attempt to define the bean in blueprint xml (even
 taking SSL completely out the equation).  The exception, details of my
 environment and the applicable snippets of code/config are below - I would
 appreciate any help that could be provided!!

 *** Environment Info: ***

 Camel 2.15.2
 camel-blueprint 2.15.2
 camel-jetty 2.15.2

 *** Exception: ***

 org.osgi.service.blueprint.container.ComponentDefinitionException: Error
 when instantiating bean jetty of class class
 org.apache.camel.component.jetty.JettyHttpComponent
 at

 org.apache.aries.blueprint.container.BeanRecipe.getInstance(BeanRecipe.java:333)
 at

 org.apache.aries.blueprint.container.BeanRecipe.internalCreate2(BeanRecipe.java:806)
 at

 org.apache.aries.blueprint.container.BeanRecipe.internalCreate(BeanRecipe.java:787)
 at
 org.apache.aries.blueprint.di.AbstractRecipe$1.call(AbstractRecipe.java:79)
 at java.util.concurrent.FutureTask.run(FutureTask.java:266)
 at
 org.apache.aries.blueprint.di.AbstractRecipe.create(AbstractRecipe.java:88)
 at

 org.apache.aries.blueprint.container.BlueprintRepository.createInstances(BlueprintRepository.java:245)
 at

 org.apache.aries.blueprint.container.BlueprintRepository.createAll(BlueprintRepository.java:183)
 at

 org.apache.aries.blueprint.container.BlueprintContainerImpl.instantiateEagerComponents(BlueprintContainerImpl.java:668)
 at

 org.apache.aries.blueprint.container.BlueprintContainerImpl.doRun(BlueprintContainerImpl.java:370)
 at

 org.apache.aries.blueprint.container.BlueprintContainerImpl.run(BlueprintContainerImpl.java:261)
 at
 java.util.concurrent.Executors$RunnableAdapter.call(Executors.java:511)
 at java.util.concurrent.FutureTask.run(FutureTask.java:266)
 at

 org.apache.aries.blueprint.container.ExecutorServiceWrapper.run(ExecutorServiceWrapper.java:106)
 at

 org.apache.aries.blueprint.utils.threading.impl.DiscardableRunnable.run(DiscardableRunnable.java:48)
 at
 java.util.concurrent.Executors$RunnableAdapter.call(Executors.java:511)
 at java.util.concurrent.FutureTask.run(FutureTask.java:266)
 at

 java.util.concurrent.ScheduledThreadPoolExecutor$ScheduledFutureTask.access$201(ScheduledThreadPoolExecutor.java:180)
 at

 java.util.concurrent.ScheduledThreadPoolExecutor$ScheduledFutureTask.run(ScheduledThreadPoolExecutor.java:293)
 at

 java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1142)
 at

 java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:617)
 at java.lang.Thread.run(Thread.java:745)
 Caused by: java.lang.InstantiationException
 at

 sun.reflect.InstantiationExceptionConstructorAccessorImpl.newInstance(InstantiationExceptionConstructorAccessorImpl.java:48)
 at java.lang.reflect.Constructor.newInstance(Constructor.java:408)
 at

 org.apache.aries.blueprint.utils.ReflectionUtils.newInstance(ReflectionUtils.java:329)
 at

 org.apache.aries.blueprint.container.BeanRecipe.newInstance(BeanRecipe.java:962)
 at

 org.apache.aries.blueprint.container.BeanRecipe.getInstance(BeanRecipe.java:331)
 ... 21 more

 *** blueprint.xml: ***

 ?xml version=1.0 encoding=UTF-8?
 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
 http://www.osgi.org/xmlns/blueprint/v1.0.0/blueprint.xsd
http://camel.apache.org/schema/blueprint
 http://camel.apache.org/schema/blueprint/camel-blueprint.xsd;

 bean id=jetty
 class=org.apache.camel.component.jetty.JettyHttpComponent
 property name=sslPassword value=mypassword/
 property name=sslKeyPassword value=mypassword/
 property name=keystore value=/path/to/keystore/
 /bean

   bean id=restRouter class=com.diversecomputing.RestRouter /

   camelContext xmlns=http://camel.apache.org/schema/blueprint;
 routeBuilder ref=restRouter /
   /camelContext

 /blueprint

 *** RouteBuilder: ***

 public class RestRouter extends RouteBuilder {

 @Override
 public void configure() throws Exception {

 restConfiguration()
 

Re: Rest DSL with Jetty

2014-10-10 Thread Willem Jiang
FYI I already committed a patch into master and camel-2.14.x branch.
Please feel free to try the last version of 2.14.1-SNAPSHOT.

--  
Willem Jiang

Red Hat, Inc.
Web: http://www.redhat.com
Blog: http://willemjiang.blogspot.com (English)
http://jnn.iteye.com (Chinese)
Twitter: willemjiang  
Weibo: 姜宁willem



On October 9, 2014 at 9:52:12 AM, Willem Jiang (willem.ji...@gmail.com) wrote:
 It’s bug of camel-jetty, I just created a JIRA[1] for it.
 The hot fix is on the way.
  
 [1]https://issues.apache.org/jira/browse/CAMEL-7899
  
 --
 Willem Jiang
  
 Red Hat, Inc.
 Web: http://www.redhat.com
 Blog: http://willemjiang.blogspot.com (English)
 http://jnn.iteye.com (Chinese)
 Twitter: willemjiang
 Weibo: 姜宁willem
  
  
  
 On October 9, 2014 at 4:57:29 AM, gquintana (gerald.quint...@gmail.com) wrote:
  Hello,
 
  I am playing with the new REST DSL:
 
 
  1) The context path is not taken into account:
 
 
  2) I can't bind both post and get verbs on the same path:
 
 
  What did I miss?
 
  Gérald
 
 
 
  --
  View this message in context: 
  http://camel.465427.n5.nabble.com/Rest-DSL-with-Jetty-tp5757418.html  
  Sent from the Camel - Users mailing list archive at Nabble.com.
 
  
  



Re: Rest DSL with Jetty

2014-10-08 Thread Willem Jiang
It’s bug of camel-jetty, I just created a JIRA[1] for it.
The hot fix is on the way.

[1]https://issues.apache.org/jira/browse/CAMEL-7899

--  
Willem Jiang

Red Hat, Inc.
Web: http://www.redhat.com
Blog: http://willemjiang.blogspot.com (English)
http://jnn.iteye.com (Chinese)
Twitter: willemjiang  
Weibo: 姜宁willem



On October 9, 2014 at 4:57:29 AM, gquintana (gerald.quint...@gmail.com) wrote:
 Hello,
  
 I am playing with the new REST DSL:
  
  
 1) The context path is not taken into account:
  
  
 2) I can't bind both post and get verbs on the same path:
  
  
 What did I miss?
  
 Gérald
  
  
  
 --
 View this message in context: 
 http://camel.465427.n5.nabble.com/Rest-DSL-with-Jetty-tp5757418.html  
 Sent from the Camel - Users mailing list archive at Nabble.com.