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()
.component("jetty")
.host("localhost")
.port("8082")
//.scheme("https")
.contextPath("rest")
.bindingMode(RestBindingMode.auto)
.dataFormatProperty("prettyPrint", "true");
rest("/say")
.get("/hello").to("direct:hello")
.get("/bye").consumes("application/json").to("direct:bye")
.post("/bye").to("mock:update");
from("direct:hello")
.transform().constant("Hello World");
from("direct:bye")
.transform().constant("Bye World");
}
}
--
View this message in context:
http://camel.465427.n5.nabble.com/Rest-DSL-with-jetty-and-SSL-tp5767572.html
Sent from the Camel - Users mailing list archive at Nabble.com.