Welcome to OStack Knowledge Sharing Community for programmer and developer-Open, Learning and Share
Welcome To Ask or Share your Answers For Others

Categories

0 votes
282 views
in Technique[技术] by (71.8m points)

osgi - Wiring a prototype in blueprint

Like Spring, blueprint supports the prototype scope. But unlike Spring I can't see any documentation about how to use it.

In Spring you can ask the context to give you a new bean, what's the equivalent in the Blueprint world?

See Question&Answers more detail:os

与恶龙缠斗过久,自身亦成为恶龙;凝视深渊过久,深渊将回以凝视…
Welcome To Ask or Share your Answers For Others

1 Answer

0 votes
by (71.8m points)

BlueprintContainer.getComponentInstance() does exactly what you are looking for.

osgi documentation:

A Blueprint Container represents the managed state of a Blueprint bundle. A Blueprint Container provides access to all managed components. These are the beans, services, and service references. A Blueprint Container can be obtained by injecting the predefined "blueprintContainer" component id.

Example

blueprint.xml:

<!-- blueprintContainer is predefined component here -->
<bean id="myService" class="myPackage.MyService">
   <property name="container" ref="blueprintContainer"/>
</bean>
<!-- prototype which can be created from myService -->
<bean id="myPrototype" class="myPackage.MyPrototype" scope="prototype"/>

MyService.java:

// ...
// create new instance
MyPrototype myPrototype = 
     (MyPrototype) container.getComponentInstance("myPrototype");

pom.xml:

<!-- BlueprintContainer from Apache Aries-->
<dependency>
  <groupId>org.apache.aries.blueprint</groupId>
  <artifactId>org.apache.aries.blueprint.core</artifactId>
  <version>1.3.0</version>
</dependency>

与恶龙缠斗过久,自身亦成为恶龙;凝视深渊过久,深渊将回以凝视…
Welcome to OStack Knowledge Sharing Community for programmer and developer-Open, Learning and Share
Click Here to Ask a Question

...