= BlueprintWeb

The Blueprint Web module makes it easy to use OSGi Blueprint as a dependency injection framework outside of OSGi containers such as inside any Servlet Engine.

You can then use Blueprint as a small standards base alternative to the Spring Framework's XML dependency injection files.

== How to use Blueprint Web

Just add the following to your web.xml

   <listener>
       <listener-class>org.apache.aries.blueprint.web.BlueprintContextListener</listener-class>
   </listener>

This will then make your web application look in the classpath for all files called *META-INF/blueprint.xml*.
Each one will then be loaded and created in a single BlueprintContainer for your web application.

Then in each jar or in the web application itself, just create a file called *src/main/resources/META-INF/blueprint.xml* which will then get included into jars or into your WAR.

If you wish to use a different name for the location of the blueprint files you can specify the *blueprintLocation* property as a context parameter as follows:

   <context-param>
       <param-name>blueprintLocation</param-name>
       <param-value>META-INF/myName.xml</param-value>
   </context-param>

== Configuring blueprint through properties

Blueprint beans can be configured using the variable substitutions.
You need to declare the ext namespace and add the property placeholder bean in your blueprint xml

 <blueprint xmlns="http://www.osgi.org/xmlns/blueprint/v1.0.0"
            xmlns:ext="http://aries.apache.org/blueprint/xmlns/blueprint-ext/v1.2.0">
 	<ext:property-placeholder>
     	<ext:default-properties>
         	<ext:property name="myProperty" value="defaultValue" />
     	</ext:default-properties>
 	</ext:property-placeholder>
 	...
 	<bean ...>
 		<property name="myProperty" value="${myProperty}" />
 	</bean>
 </blueprint>

The default value can be overriden by specifying an the blueprintProperties property as a context parameter in the web.xml:

 <context-param>
 	<param-name>blueprintProperties</param-name>
 	<param-value>myConfigFile.properties</param-value>
 </context-param>

The value of this parameter is a comma separated list of properties file loaded from the class loader.
In this case, adding a file called *src/main/resources/myConfigFile.properties* will do the trick.
