I've added "http-conf" namespace to my existing blueprint container recently. But if I am running my unit test cases, this shuts down my blueprint container by throwing below exception. But the same code works fine if I am installing it in my karaf.
My Blueprint Code is,
<blueprint xmlns="http://www.osgi.org/xmlns/blueprint/v1.0.0" xmlns:camel="http://camel.apache.org/schema/blueprint"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:camel-cxf="http://camel.apache.org/schema/blueprint/cxf"
xmlns:cxfcore="http://cxf.apache.org/blueprint/core" xmlns:http-conf="http://cxf.apache.org/transports/http/configuration"
xsi:schemaLocation="http://camel.apache.org/schema/blueprint http://camel.apache.org/schema/blueprint/camel-blueprint.xsd
http://camel.apache.org/schema/blueprint/cxf http://camel.apache.org/schema/blueprint/cxf/camel-cxf.xsd">
<http-conf:conduit name="*.http-conduit">
<http-conf:client ReceiveTimeout="60000" ConnectionTimeout="60000"/>
</http-conf:conduit>
And the exception I got is,
2017-09-18T13:15:24.983+0530 INFO [] com.jda.flex.sf.container.blueprint.ImportNamespaceHandler Waiting for namespace handler
http://cxf.apache.org/transports/http/configuration [{main} waitForNamespaceHandlers:179 {}]
2017-09-18T13:15:24.984+0530 ERROR [] org.apache.aries.blueprint.container.BlueprintContainerImpl Unable to start blueprint container for bundle Mock_LoadDepartTest/1.0.0 [{main} doRun:438 {}]
com.jda.flex.sf.container.blueprint.ImportException: com.jda.flex.sf.container.blueprint.ImportException: com.jda.flex.sf.container.blueprint.ImportException:
org.osgi.framework.InvalidSyntaxException: Filter ended abruptly: (&objectClass=org.apache.aries.blueprint.NamespaceHandler) (osgi.service.blueprint.namespace=http://cxf.apache.org/transports/http/configuration)
.
.
.
2017-09-18T13:15:24.987+0530 INFO [] com.jda.tma.integration.mock.tests.Mock_LoadDepartTest Waiting 10000ms for Blueprint Container to initialize [{main} waitForTestBundleBlueprintContainer:385 {}]
To fix the problem, I've added few dependencies. Now I got rid of the InvalidSyntaxException" exception. But getting different exception.
I've added below dependencies in my pom.xml
<dependency>
<groupId>org.apache.cxf</groupId>
<artifactId>cxf-rt-transports-http-jetty</artifactId>
<version>3.2.0</version>
</dependency>
<dependency>
<groupId>org.apache.cxf</groupId>
<artifactId>cxf-rt-bindings-soap</artifactId>
<version>3.2.0</version>
</dependency>
<!-- https://mvnrepository.com/artifact/org.apache.cxf/cxf-rt-frontend-jaxws -->
<dependency>
<groupId>org.apache.cxf</groupId>
<artifactId>cxf-rt-frontend-jaxws</artifactId>
<version>3.2.0</version>
</dependency>
<!-- https://mvnrepository.com/artifact/org.apache.felix/org.osgi.compendium -->
<dependency>
<groupId>org.apache.felix</groupId>
<artifactId>org.osgi.compendium</artifactId>
<version>1.4.0</version>
<scope>test</scope>
</dependency>
Below is my exception stack trace.
2017-09-20T18:10:00.524+0530 ERROR [] org.apache.aries.blueprint.container.BlueprintContainerImpl Unable to start blueprint container for bundle Mock_LoadDepartTest/1.0.0 [{main} doRun:438 {}]
com.jda.flex.sf.container.blueprint.ImportException: com.jda.flex.sf.container.blueprint.ImportException: org.osgi.service.blueprint.container.ComponentDefinitionException: Unknown element import in namespace http://www.osgi.org/xmlns/blueprint/v1.0.0
at com.jda.flex.sf.container.blueprint.ImportNamespaceHandler.parseImport(ImportNamespaceHandler.java:358)[services-core-2017.2.0-drop-13.jar:]
at com.jda.flex.sf.container.blueprint.ImportNamespaceHandler.parse(ImportNamespaceHandler.java:269)[services-core-2017.2.0-drop-13.jar:]
The issue is resolved after adding below dependency in POM and removing all other dependencies I mentioned above. Because these dependencies are downloaded from my framework project
<dependency>
<groupId>org.osgi</groupId>
<artifactId>org.osgi.compendium</artifactId>
<version>5.0.0</version>
<scope>test</scope>
</dependency>