[
https://issues.apache.org/jira/browse/CAMEL-15000?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=17099615#comment-17099615
]
Claus Ibsen commented on CAMEL-15000:
-------------------------------------
So what happens if you have a clean karaf, and then first install those
blueprint files with the configuration, and then only last install the
blueprint with camel jetty.
> Using a registered ConstraintSecurityHandler in another Blueprint file causes
> an java.lang.IllegalStateException: STARTED
> -------------------------------------------------------------------------------------------------------------------------
>
> Key: CAMEL-15000
> URL: https://issues.apache.org/jira/browse/CAMEL-15000
> Project: Camel
> Issue Type: Bug
> Components: camel-jetty
> Affects Versions: 3.0.1
> Reporter: Gerald Kallas
> Priority: Minor
>
> I've defined a Blueprint DSL file with a securityHandler configuration for
> multiple paths as following
> {code:java}
> <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">
> <bean id="constraint_TSTISP001"
> class="org.eclipse.jetty.util.security.Constraint">
> <property name="name" value="BASIC" />
> <property name="authenticate" value="true" />
> <property name="roles">
> <list>
> <value>TSTISP001</value>
> </list>
> </property>
> </bean>
> <bean id="constraintMapping_TSTISP001"
> class="org.eclipse.jetty.security.ConstraintMapping">
> <property name="constraint" ref="constraint_TSTISP001" />
> <property name="pathSpec" value="/hello1" />
> </bean>
> <bean id="constraint_TSTISP002"
> class="org.eclipse.jetty.util.security.Constraint">
> <property name="name" value="BASIC" />
> <property name="authenticate" value="true" />
> <property name="roles">
> <list>
> <value>TSTISP002</value>
> </list>
> </property>
> </bean>
> <bean id="constraintMapping_TSTISP002"
> class="org.eclipse.jetty.security.ConstraintMapping">
> <property name="constraint" ref="constraint_TSTISP002" />
> <property name="pathSpec" value="/hello2" />
> </bean>
> <bean id="securityHandlerImpl"
> class="org.eclipse.jetty.security.ConstraintSecurityHandler">
> <property name="loginService">
> <bean class="org.eclipse.jetty.security.HashLoginService">
> <property name="config"
> value="/opt/apache-karaf/etc/users.properties" />
> </bean>
> </property>
> <property name="authenticator">
> <bean
> class="org.eclipse.jetty.security.authentication.BasicAuthenticator" />
> </property>
> <property name="constraintMappings">
> <list>
> <ref component-id="constraintMapping_TSTISP001" />
> <ref component-id="constraintMapping_TSTISP002" />
> </list>
> </property>
> </bean>
> <service id="securityHandlerIsp" ref="securityHandlerImpl"
> interface="org.eclipse.jetty.server.Handler" />
> <sslContextParameters id="sslContextParameters"
> xmlns="http://camel.apache.org/schema/blueprint">
> ...
> </sslContextParameters>
> <service ref="sslContextParameters" auto-export="all-classes" />
> </blueprint>
> {code}
> The use in another Blueprint DSL file as attached
> {code:java}
> <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"
>
> xmlns:cm="http://aries.apache.org/blueprint/xmlns/blueprint-cm/v1.1.0"
> xsi:schemaLocation="http://www.osgi.org/xmlns/blueprint/v1.0.0
> https://www.osgi.org/xmlns/blueprint/v1.0.0/blueprint.xsd">
> <!-- set reference to the SSLContextParameters -->
> <reference id="sslContextParameters"
> interface="org.apache.camel.support.jsse.SSLContextParameters"
> ext:proxy-method="classes" />
> <!-- set reference to the securityHandler -->
> <reference id="securityHandlerIsp"
> interface="org.eclipse.jetty.server.Handler" />
> <camelContext id="isp.context.user.TSTISP001"
> xmlns="http://camel.apache.org/schema/blueprint" streamCache="true"
> useBreadcrumb="true">
> <route id="isp.route.user.TSTISP001">
> <from
> uri="jetty:https://0.0.0.0:8444/hello1?sslContextParameters=#sslContextParameters&handlers=securityHandlerIsp"
> />
> <setBody><constant>Hello 1</constant></setBody>
> </route>
> </camelContext>
> </blueprint>
> {code}
> causes an error
> {code:java}
> 2020-05-02T19:15:46,202 | ERROR | Blueprint Event Dispatcher: 1 |
> BlueprintCamelContext | 92 - org.apache.camel.camel-api - 3.0.0 |
> Error starting CamelContext (isp.context.user.TSTISP001) due to exception
> thrown: STARTED
> java.lang.IllegalStateException: STARTED
> at
> org.eclipse.jetty.server.handler.AbstractHandlerContainer.setServer(AbstractHandlerContainer.java:131)
> ~[!/:9.4.20.v20190813]
> at Proxyb4d61c20_c161_4396_a800_1fa982bbaaea.setServer(Unknown
> Source) ~[?:?]
> at
> org.eclipse.jetty.server.handler.HandlerCollection.updateHandlers(HandlerCollection.java:117)
> ~[!/:9.4.20.v20190813]
> at
> org.eclipse.jetty.server.handler.HandlerCollection.addHandler(HandlerCollection.java:180)
> ~[!/:9.4.20.v20190813]
> at
> org.apache.camel.component.jetty.JettyHttpComponent.addJettyHandlers(JettyHttpComponent.java:1182)
> ~[!/:3.0.0]
> at
> org.apache.camel.component.jetty.JettyHttpComponent.createServletForConnector(JettyHttpComponent.java:1145)
> ~[!/:3.0.0]
> at
> org.apache.camel.component.jetty.JettyHttpComponent.connect(JettyHttpComponent.java:329)
> ~[!/:3.0.0]
> at
> org.apache.camel.http.common.HttpCommonEndpoint.connect(HttpCommonEndpoint.java:177)
> ~[!/:3.0.0]
> at
> org.apache.camel.http.common.HttpConsumer.doStart(HttpConsumer.java:58)
> ~[!/:3.0.0]
> at
> org.apache.camel.component.jetty.JettyHttpConsumer.doStart(JettyHttpConsumer.java:31)
> ~[!/:3.0.0]
> at
> org.apache.camel.support.service.ServiceSupport.start(ServiceSupport.java:117)
> ~[!/:3.0.0]
> at
> org.apache.camel.impl.engine.AbstractCamelContext.startService(AbstractCamelContext.java:2900)
> ~[!/:3.0.0]
> at
> org.apache.camel.impl.engine.AbstractCamelContext.doStartOrResumeRouteConsumers(AbstractCamelContext.java:3227)
> ~[!/:3.0.0]
> at
> org.apache.camel.impl.engine.AbstractCamelContext.doStartRouteConsumers(AbstractCamelContext.java:3161)
> ~[!/:3.0.0]
> at
> org.apache.camel.impl.engine.AbstractCamelContext.safelyStartRouteServices(AbstractCamelContext.java:3071)
> ~[!/:3.0.0]
> at
> org.apache.camel.impl.engine.AbstractCamelContext.doStartOrResumeRoutes(AbstractCamelContext.java:2836)
> ~[!/:3.0.0]
> at
> org.apache.camel.impl.engine.AbstractCamelContext.doStartCamel(AbstractCamelContext.java:2640)
> ~[!/:3.0.0]
> at
> org.apache.camel.impl.engine.AbstractCamelContext.lambda$doStart$2(AbstractCamelContext.java:2445)
> ~[!/:3.0.0]
> at
> org.apache.camel.impl.engine.AbstractCamelContext.doWithDefinedClassLoader(AbstractCamelContext.java:2462)
> ~[!/:3.0.0]
> at
> org.apache.camel.impl.engine.AbstractCamelContext.doStart(AbstractCamelContext.java:2443)
> ~[!/:3.0.0]
> at
> org.apache.camel.support.service.ServiceSupport.start(ServiceSupport.java:117)
> ~[!/:3.0.0]
> at
> org.apache.camel.impl.engine.AbstractCamelContext.start(AbstractCamelContext.java:2352)
> [!/:3.0.0]
> at
> org.apache.camel.blueprint.BlueprintCamelContext.start(BlueprintCamelContext.java:244)
> [!/:3.0.0]
> at
> org.apache.camel.blueprint.BlueprintCamelContext.maybeStart(BlueprintCamelContext.java:286)
> [!/:3.0.0]
> at
> org.apache.camel.blueprint.BlueprintCamelContext.blueprintEvent(BlueprintCamelContext.java:183)
> [!/:3.0.0]
> at
> org.apache.aries.blueprint.container.BlueprintEventDispatcher$3.call(BlueprintEventDispatcher.java:190)
> [!/:1.10.2]
> at
> org.apache.aries.blueprint.container.BlueprintEventDispatcher$3.call(BlueprintEventDispatcher.java:188)
> [!/:1.10.2]
> at java.util.concurrent.FutureTask.run(Unknown Source) [?:?]
> at java.util.concurrent.Executors$RunnableAdapter.call(Unknown
> Source) [?:?]
> at java.util.concurrent.FutureTask.run(Unknown Source) [?:?]
> at java.util.concurrent.Executors$RunnableAdapter.call(Unknown
> Source) [?:?]
> at java.util.concurrent.FutureTask.run(Unknown Source) [?:?]
> at
> java.util.concurrent.ScheduledThreadPoolExecutor$ScheduledFutureTask.run(Unknown
> Source) [?:?]
> at java.util.concurrent.ThreadPoolExecutor.runWorker(Unknown Source)
> [?:?]
> at java.util.concurrent.ThreadPoolExecutor$Worker.run(Unknown Source)
> [?:?]
> at java.lang.Thread.run(Unknown Source) [?:?]
> {code}
> An approach with the definition of the securityHandler and the route in one
> single Blueprint DSL file is working.
--
This message was sent by Atlassian Jira
(v8.3.4#803005)