Hi Andrei,
OK, let me try to summarize.
spring-dm is a spring extension allowing you to use OSGi services in spring.
For instance, you use spring-dm to have <osgi:service/> or
<osgi:reference/> elements.
If you don't need this, you can use spring directly in Karaf (not need
to use blueprint).
If you want to use blueprint <service/> and <reference/> (blueprint is
the specification coming from spring-dm), then, you need blueprint only
(no need to use spring).
A bean can be used in blueprint the same way you do in spring:
<bean id="foo" class="..."/>
So, migrating from spring-dm to blueprint is pretty straight forward
(change namespace and <osgi:*/>).
Now, about the blueprint-spring-extender, it allows you to use some
spring elements in blueprint XML (like <transaction/>, etc).
Regards
JB
On 13/09/2021 11:40, Andrei Petru Mura wrote:
I'm trying to upgrade my Karaf 4.0.4 to 4.3.2. In 4.0.4, my bundles are
deployed as spring apps loaded by spring-dm. In karaf 4.3.2 I have no
longer spring-dm. I think the only way to do this, is via blueprint:
Aries or Gemini. But as Aries is the default in Karaf, I would go for Aries.
1. Do you have a specific scenario on how I can start my spring bundles
other then blueprint? Or using blueprint?
2. If I have no other option than to switch to blueprint, do I have to
replace my spring beans with Java beans?
Thanks,
Mura Andrei
On Mon, Sep 13, 2021 at 12:33 PM Jean-Baptiste Onofré <[email protected]
<mailto:[email protected]>> wrote:
I'm not sure I follow what you are trying ;)
It seems you are mixing CamelContext Spring and Blueprint.
If you use Spring CamelContext you don't need blueprint.
If you want to use blueprint (eventually with the extender), you can
use
blueprint namespace.
So, my point is: what namespace do you want to use ? spring or
blueprint ?
Regards
JB
On 13/09/2021 11:30, Jean-Baptiste Onofré wrote:
> The aries-blueprint-spring extender is to support spring context.
So as
> you use spring camel context in your camel bundle, it's the one
involved.
>
> Why not using camel-blueprint namespace ?
>
> <camelContext xmlns="http://camel.apache.org/schema/blueprint
<http://camel.apache.org/schema/blueprint>"/>
>
> and using OSGI-INF/blueprint for your loading ?
>
> Regards
> JB
>
> On 13/09/2021 11:04, Andrei Petru Mura wrote:
>> Hi Jean,
>>
>> Do you think this can be related to spring loading? If I modify the
>> context file to this:
>>
>> <blueprint xmlns="http://www.osgi.org/xmlns/blueprint/v1.0.0
<http://www.osgi.org/xmlns/blueprint/v1.0.0>
>> <http://www.osgi.org/xmlns/blueprint/v1.0.0
<http://www.osgi.org/xmlns/blueprint/v1.0.0>>">
>> </blueprint>
>>
>> I get this:
>> Unable to start container for blueprint bundle
>> *my-bundle/version.of.the.bundle*
>> java.lang.RuntimeException:
>>
org.springframework.beans.factory.parsing.BeanDefinitionParsingException:
>> Configuration problem: Failed to import bean definitions from URL
>> location
>>
[bundle://6f3b550d-56d9-4050-9a00-265a618c1c72_120.0:0/META-INF/spring/camel-context.xml]
>>
>> Offending resource: URL
>>
[file:/apache-karaf/data/tmp/blueprint-spring-extender300655750637593520.xml];
>> nested exception is
>>
org.springframework.beans.factory.xml.XmlBeanDefinitionStoreException:
>> Line 11 in XML document from URL
>>
[bundle://6f3b550d-56d9-4050-9a00-265a618c1c72_120.0:0/META-INF/spring/camel-context.xml]
>> is invalid; nested exception is org.xml.sax.SAXParseException;
>> lineNumber: 11; columnNumber: 63; cvc-elt.1: Cannot find the
>> declaration of element 'blueprint'.
>>
>> So, it seems to me the loading is made by spring, not by aries.
Below
>> are my spring related installed features (I put only the installed
>> ones for the sake of readability):
>>
>> karaf@root()> feature:list | grep -i spring
>> spring x 5.3.5.1 x
>> x Started x spring-4.3.2 x Spring
5.3.x support
>> spring-jdbc x 5.3.5.1 x
>> x Started x spring-4.3.2 x Spring
5.3.x JDBC
>> support
>> spring-orm x 5.3.5.1 x x
>> x Started x spring-4.3.2 x Spring
5.3.x ORM
>> supportrt
>> spring-tx x 5.3.5.1 x
>> x Started x spring-4.3.2 x Spring 5.3.x
>> Transaction (TX) support
>> aries-blueprint-spring x 0.0.0 x x
>> x Started x spring-4.3.2 x
>> camel-spring x 2.25.4 x x
>> x Started x camel-2.25.4 x
>>
>> Anyway, taking in account that aries-blueprint-spring is the one
which
>> starts the loading, I'm a bit confused.
>> Any guidance would be appreciated. Thanks.
>>
>> Andrei
>>
>> On Mon, Sep 13, 2021 at 11:50 AM Andrei Petru Mura
>> <[email protected] <mailto:[email protected]>
<mailto:[email protected] <mailto:[email protected]>>> wrote:
>>
>> Hi Jean,
>>
>> Yes, I do.
>>
>> karaf@root()> feature:list | grep -i blueprint
>> aries-blueprint-spring x 0.0.0 x x
>> x Started x spring-4.3.2 x
>> camel-blueprint x 2.25.4 x x
>> x Started x camel-2.25.4 x
>> aries-blueprint x 4.3.2 x
>> x Started x standard-4.3.2 x Aries
Blueprint
>> jaas-deployer x 4.3.2 x
>> x Uninstalled x standard-4.3.2 x Allow
>> support of blueprint JAAS configuration in
>> blueprint-web x 4.3.2 x
>> x Uninstalled x standard-4.3.2 x Provides an
>> OSGI-aware Servlet ContextListener fo
>>
>> Andrei
>>
>> On Mon, Sep 13, 2021 at 11:47 AM Jean-Baptiste Onofré
>> <[email protected] <mailto:[email protected]>
<mailto:[email protected] <mailto:[email protected]>>> wrote:
>>
>> Hi Andrei,
>>
>> do you have aries-blueprint feature installed ?
>>
>> Aries Blueprint provides the namespace handler.
>>
>> You can find the feature/example in Karaf repo:
>>
>>
https://github.com/apache/karaf/tree/main/examples/karaf-camel-example/karaf-camel-example-blueprint
<https://github.com/apache/karaf/tree/main/examples/karaf-camel-example/karaf-camel-example-blueprint>
>>
>>
>>
<https://github.com/apache/karaf/tree/main/examples/karaf-camel-example/karaf-camel-example-blueprint
<https://github.com/apache/karaf/tree/main/examples/karaf-camel-example/karaf-camel-example-blueprint>>
>>
>>
>> Regards
>> JB
>>
>> On 13/09/2021 10:44, Andrei Petru Mura wrote:
>> > Hi all,
>> >
>> > I'm trying to get ready a bundle in Karaf 4.3.2. In
karaf I
>> have
>> > installed camel, spring and aries by default (along it's
>> > aries-blueprint-spring feature).
>> > My blueprint XML file looks like below (I reduced it to
>> minimum).
>> >
>> > <blueprint
xmlns="http://www.osgi.org/xmlns/blueprint/v1.0.0
<http://www.osgi.org/xmlns/blueprint/v1.0.0>
>> <http://www.osgi.org/xmlns/blueprint/v1.0.0
<http://www.osgi.org/xmlns/blueprint/v1.0.0>>
>> > <http://www.osgi.org/xmlns/blueprint/v1.0.0
<http://www.osgi.org/xmlns/blueprint/v1.0.0>
>> <http://www.osgi.org/xmlns/blueprint/v1.0.0
<http://www.osgi.org/xmlns/blueprint/v1.0.0>>>"
>> >
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance
<http://www.w3.org/2001/XMLSchema-instance>
>> <http://www.w3.org/2001/XMLSchema-instance
<http://www.w3.org/2001/XMLSchema-instance>>
>> > <http://www.w3.org/2001/XMLSchema-instance
<http://www.w3.org/2001/XMLSchema-instance>
>> <http://www.w3.org/2001/XMLSchema-instance
<http://www.w3.org/2001/XMLSchema-instance>>>"
>> >
>> >
>>
>>
xmlns:cm="http://aries.apache.org/blueprint/xmlns/blueprint-cm/v1.1.0
<http://aries.apache.org/blueprint/xmlns/blueprint-cm/v1.1.0>
>>
<http://aries.apache.org/blueprint/xmlns/blueprint-cm/v1.1.0
<http://aries.apache.org/blueprint/xmlns/blueprint-cm/v1.1.0>>
>> >
<http://aries.apache.org/blueprint/xmlns/blueprint-cm/v1.1.0
<http://aries.apache.org/blueprint/xmlns/blueprint-cm/v1.1.0>
>>
<http://aries.apache.org/blueprint/xmlns/blueprint-cm/v1.1.0
<http://aries.apache.org/blueprint/xmlns/blueprint-cm/v1.1.0>>>"
>> > xsi:schemaLocation="
>> > http://www.osgi.org/xmlns/blueprint/v1.0.0
<http://www.osgi.org/xmlns/blueprint/v1.0.0>
>> <http://www.osgi.org/xmlns/blueprint/v1.0.0
<http://www.osgi.org/xmlns/blueprint/v1.0.0>>
>> > <http://www.osgi.org/xmlns/blueprint/v1.0.0
<http://www.osgi.org/xmlns/blueprint/v1.0.0>
>> <http://www.osgi.org/xmlns/blueprint/v1.0.0
<http://www.osgi.org/xmlns/blueprint/v1.0.0>>>
>> >
http://www.osgi.org/xmlns/blueprint/v1.0.0/blueprint.xsd
<http://www.osgi.org/xmlns/blueprint/v1.0.0/blueprint.xsd>
>>
<http://www.osgi.org/xmlns/blueprint/v1.0.0/blueprint.xsd
<http://www.osgi.org/xmlns/blueprint/v1.0.0/blueprint.xsd>>
>> >
<http://www.osgi.org/xmlns/blueprint/v1.0.0/blueprint.xsd
<http://www.osgi.org/xmlns/blueprint/v1.0.0/blueprint.xsd>
>>
<http://www.osgi.org/xmlns/blueprint/v1.0.0/blueprint.xsd
<http://www.osgi.org/xmlns/blueprint/v1.0.0/blueprint.xsd>>>
>> > ">
>> > </blueprint>
>> >
>> > When I try to start the bundle, I get this in logs:
>> > INFO [pool-8-thread-3] Blueprint bundle
>> > *my-bundle/version.of.the.bundle* is waiting for
namespace
>> handlers
>> > [http://www.osgi.org/xmlns/blueprint/v1.0.0
<http://www.osgi.org/xmlns/blueprint/v1.0.0>
>> <http://www.osgi.org/xmlns/blueprint/v1.0.0
<http://www.osgi.org/xmlns/blueprint/v1.0.0>>
>> > <http://www.osgi.org/xmlns/blueprint/v1.0.0
<http://www.osgi.org/xmlns/blueprint/v1.0.0>
>> <http://www.osgi.org/xmlns/blueprint/v1.0.0
<http://www.osgi.org/xmlns/blueprint/v1.0.0>>>]
>> >
>> > Does anyone have any idea how I can fix this?
>> >
>> > Thanks,
>> > Andrei
>>