In this task, you add
existing OSGi
services to a descriptor XML file so that WebSphere® eXtreme Scale containers can recognize
and load the OSGi-enabled plug-ins correctly.
Before you begin
To configure your plug-ins, be sure to: - Create your package, and enable dynamic plug-ins for OSGi deployment.
- Have the names of the OSGi services that represent your plug-ins
available.
About this task
You have created an
OSGi service to wrap your plug-in. Now,
these services must be defined in the objectgrid.xml file
so that eXtreme Scale containers
can load and configure the plug-in or plug-ins successfully.
Procedure
- Any grid-specific plug-ins, such as TransactionCallback,
must be specified under the objectGrid element.
See the following example from the
objectgrid.xml file:
<?xml version="1.0" encoding="UTF-8"?>
<objectGridConfig xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://ibm.com/ws/objectgrid/config ../objectGrid.xsd"
xmlns="http://ibm.com/ws/objectgrid/config">
<objectGrids>
<objectGrid name="MyGrid" txTimeout="60">
<bean id="myTranCallback" osgiService="myTranCallbackFactory"/>
...
</objectGrid>
...
</objectGrids>
...
/objectGridConfig>
Important: The osgiService
attribute
value must match the ref
attribute value that is
specified in the blueprint XML file, where the
service was defined for myTranCallback PluginServiceFactory.
- Any map-specific plug-ins, such
as loaders or serializers,
for example, must be specified in the backingMapPluginCollections element
and referenced from the backingMap element.
See the following example from the
objectgrid.xml file:
<?xml version="1.0" encoding="UTF-8"?>
objectGridConfig xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://ibm.com/ws/objectgrid/config ../objectGrid.xsd"
xmlns="http://ibm.com/ws/objectgrid/config">
<objectGrids>
<objectGrid name="MyGrid" txTimeout="60">
<backingMap name="MyMap1" lockStrategy="PESSIMISTIC"
copyMode="COPY_TO_BYTES" nullValuesSupported="false"
pluginCollectionRef="myPluginCollectionRef1"/>
<backingMap name="MyMap2" lockStrategy="PESSIMISTIC"
copyMode="COPY_TO_BYTES" nullValuesSupported="false"
pluginCollectionRef="myPluginCollectionRef2"/>
...
</objectGrid>
...
</objectGrids>
...
<backingMapPluginCollections>
<backingMapPluginCollection id="myPluginCollectionRef1">
<bean id="MapSerializerPlugin" osgiService="mySerializerFactory"/>
</backingMapPluginCollection>
<backingMapPluginCollection id="myPluginCollectionRef2">
<bean id="MapSerializerPlugin" osgiService="myOtherSerializerFactory"/>
<bean id="Loader" osgiService="myLoader"/>
</backingMapPluginCollection>
...
</backingMapPluginCollections>
...
</objectGridConfig>
Results
The objectgrid.xml file in this example
tells eXtreme Scale to create
a grid called MyGrid
with two maps, MyMap1
and MyMap2
.
The MyMap1
map uses the serializer wrapped by the
OSGi service, mySerializerFactory. The MyMap2
map
uses a serializer from the OSGi service, myOtherSerializerFactory,
and a loader from the OSGi service, myLoader.