[
https://issues.apache.org/jira/browse/CAMEL-9183?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=15098358#comment-15098358
]
Grzegorz Grzybek commented on CAMEL-9183:
-----------------------------------------
And I went even further ;)
I've extended one class:
{code:java}
public class BlueprintContextListener extends
org.apache.aries.blueprint.web.BlueprintContextListener {
@Override
protected NamespaceHandlerSet getNamespaceHandlerSet(ClassLoader tccl) {
SimpleNamespaceHandlerSet handlerSet = new SimpleNamespaceHandlerSet();
handlerSet.addNamespace(URI.create("http://camel.apache.org/schema/blueprint"),
tccl.getResource("camel-blueprint.xsd"),
new CamelNamespaceHandler());
return handlerSet;
}
}
{code}
and used:
{code:xml}
<listener>
<listener-class>org.apache.camel.example.servlet.tomcat.blueprintweb.BlueprintContextListener</listener-class>
</listener>
<context-param>
<param-name>blueprintNamespaceHandlers</param-name>
<param-value>org.apache.camel.blueprint.handler.CamelNamespaceHandler</param-value>
</context-param>
{code}
it started working until:
{noformat}
java.lang.IllegalArgumentException: OSGi references are not supported
at
org.apache.aries.blueprint.container.NoOsgiRecipeBuilder.createRecipe(NoOsgiRecipeBuilder.java:72)
at
org.apache.aries.blueprint.container.NoOsgiRecipeBuilder.createRepository(NoOsgiRecipeBuilder.java:51)
at
org.apache.aries.blueprint.container.BlueprintContainerImpl.init(BlueprintContainerImpl.java:150)
at
org.apache.aries.blueprint.container.BlueprintContainerImpl.init(BlueprintContainerImpl.java:131)
at
org.apache.aries.blueprint.container.BlueprintContainerImpl.<init>(BlueprintContainerImpl.java:101)
at
org.apache.aries.blueprint.web.BlueprintContextListener.contextInitialized(BlueprintContextListener.java:88)
at
org.apache.catalina.core.StandardContext.listenerStart(StandardContext.java:4729)
at
org.apache.catalina.core.StandardContext.startInternal(StandardContext.java:5167)
at org.apache.catalina.util.LifecycleBase.start(LifecycleBase.java:150)
at
org.apache.catalina.core.ContainerBase.addChildInternal(ContainerBase.java:725)
at
org.apache.catalina.core.ContainerBase.addChild(ContainerBase.java:701)
at org.apache.catalina.core.StandardHost.addChild(StandardHost.java:717)
at
org.apache.catalina.startup.HostConfig.manageApp(HostConfig.java:1648)
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at
sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:57)
at
sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
at java.lang.reflect.Method.invoke(Method.java:606)
at
org.apache.tomcat.util.modeler.BaseModelMBean.invoke(BaseModelMBean.java:300)
at
com.sun.jmx.interceptor.DefaultMBeanServerInterceptor.invoke(DefaultMBeanServerInterceptor.java:819)
at
com.sun.jmx.mbeanserver.JmxMBeanServer.invoke(JmxMBeanServer.java:801)
at
org.apache.catalina.mbeans.MBeanFactory.createStandardContext(MBeanFactory.java:463)
at
org.apache.catalina.mbeans.MBeanFactory.createStandardContext(MBeanFactory.java:413)
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at
sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:57)
at
sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
at java.lang.reflect.Method.invoke(Method.java:606)
at
org.apache.tomcat.util.modeler.BaseModelMBean.invoke(BaseModelMBean.java:300)
at
com.sun.jmx.interceptor.DefaultMBeanServerInterceptor.invoke(DefaultMBeanServerInterceptor.java:819)
at
com.sun.jmx.mbeanserver.JmxMBeanServer.invoke(JmxMBeanServer.java:801)
at
javax.management.remote.rmi.RMIConnectionImpl.doOperation(RMIConnectionImpl.java:1487)
at
javax.management.remote.rmi.RMIConnectionImpl.access$300(RMIConnectionImpl.java:97)
at
javax.management.remote.rmi.RMIConnectionImpl$PrivilegedOperation.run(RMIConnectionImpl.java:1328)
at
javax.management.remote.rmi.RMIConnectionImpl.doPrivilegedOperation(RMIConnectionImpl.java:1420)
at
javax.management.remote.rmi.RMIConnectionImpl.invoke(RMIConnectionImpl.java:848)
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at
sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:57)
at
sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
at java.lang.reflect.Method.invoke(Method.java:606)
at sun.rmi.server.UnicastServerRef.dispatch(UnicastServerRef.java:322)
at sun.rmi.transport.Transport$2.run(Transport.java:202)
at sun.rmi.transport.Transport$2.run(Transport.java:199)
at java.security.AccessController.doPrivileged(Native Method)
at sun.rmi.transport.Transport.serviceCall(Transport.java:198)
at
sun.rmi.transport.tcp.TCPTransport.handleMessages(TCPTransport.java:567)
at
sun.rmi.transport.tcp.TCPTransport$ConnectionHandler.run0(TCPTransport.java:828)
at
sun.rmi.transport.tcp.TCPTransport$ConnectionHandler.access$400(TCPTransport.java:619)
at
sun.rmi.transport.tcp.TCPTransport$ConnectionHandler$1.run(TCPTransport.java:684)
at
sun.rmi.transport.tcp.TCPTransport$ConnectionHandler$1.run(TCPTransport.java:681)
at java.security.AccessController.doPrivileged(Native Method)
at
sun.rmi.transport.tcp.TCPTransport$ConnectionHandler.run(TCPTransport.java:681)
at
java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1145)
at
java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:615)
at java.lang.Thread.run(Thread.java:745)
{noformat}
because there was automatic bean recipe registered:
{{ReferenceMetadata[id='.camelBlueprint.componentResolver.properties',
activation=1, dependsOn=null, availability=1, interface='null',
componentName='null', filter='(component=properties)', referenceListeners=null,
timeout=0, additonalInterfaces=[]]}}
[here|https://github.com/apache/camel/blob/camel-2.15.3/components/camel-blueprint/src/main/java/org/apache/camel/blueprint/handler/CamelNamespaceHandler.java#L715].
ergo: Camel's blueprint DSL can't be used outside of OSGi.
> java.lang.IllegalArgumentException: Unsupported namespaces:
> [http://camel.apache.org/schema/blueprint]
> ------------------------------------------------------------------------------------------------------
>
> Key: CAMEL-9183
> URL: https://issues.apache.org/jira/browse/CAMEL-9183
> Project: Camel
> Issue Type: Bug
> Components: examples
> Affects Versions: 2.16.0
> Reporter: Charles Moulliard
> Assignee: Claus Ibsen
> Fix For: 2.17.0
>
>
> Version used of Blueprint Web : 1.0
> I don't know if this example has ever work -
> https://github.com/apache/camel/blob/master/examples/camel-example-servlet-tomcat-blueprintweb/src/main/resources/META-INF/blueprint.xml
> but this is apparently not the longer case.
> When we start mvn jetty:run within the project, we get this error
> 2015-09-30 10:37:29.054:WARN:/:Failed to startup blueprint container.
> java.lang.IllegalArgumentException: Unsupported namespaces:
> [http://camel.apache.org/schema/blueprint]
> java.lang.IllegalArgumentException: Unsupported namespaces:
> [http://camel.apache.org/schema/blueprint]
> at
> org.apache.aries.blueprint.container.BlueprintContainerImpl.init(BlueprintContainerImpl.java:99)
> at
> org.apache.aries.blueprint.container.BlueprintContainerImpl.<init>(BlueprintContainerImpl.java:73)
> at
> org.apache.aries.blueprint.web.BlueprintContextListener.contextInitialized(BlueprintContextListener.java:86)
> Why, when the BlueprintContext is created, then it fails to load the camel
> namespace handler
> We should upgrade to this version of Blueprint Web :
> https://github.com/apache/aries/blob/trunk/blueprint/blueprint-web/src/main/java/org/apache/aries/blueprint/web/BlueprintContextListener.java#L55-L56
> which allow to specify :
> blueprintNamespaceHandlers OR META-INF/blueprint.handlers
> and adapt the example to pass the blueprintNamespaceHandlers
--
This message was sent by Atlassian JIRA
(v6.3.4#6332)