Hello all,
Investigating deeper in our XML configuration issues, we understood
(correct me if I am wrong) that the files with the root element :
- <beans xmlns="http://www.springframework.org/schema/beans"> are
managed with Spring-DM (the XML file is resolved using SpringURLHandler)
- <blueprint xmlns="http://www.osgi.org/xmlns/blueprint/v1.0.0"> are
managed with Blueprint (the XML file is resolved using BlueprintURLHandler)
In Karaf, services configured through these XML files appear whether in
the spring column (first case) or in the blueprint column (second case).
Now, come the troubles :
Using Spring-DM config file, we always end with the following exception :
17:56:15,066 | DEBUG | xtenderThread-12 |
NamespacePlugins | nternal.support.NamespacePlugins 191
| 73 - org.springframework.osgi.extender - 1.2.0 | Trying to resolving
entity for
null|http://esb.intrinsec.com/components/vmware/vsphere-bc/1.0/vsphere-bc.xsd
17:56:15,098 | WARN | xtenderThread-12 |
XmlBeanDefinitionReader | k.util.xml.SimpleSaxErrorHandler 47
| 60 - org.springframework.beans - 3.0.3.RELEASE | Ignored XML
validation warning
org.xml.sax.SAXParseException: schema_reference.4: Failed to read schema
document
'http://esb.intrinsec.com/components/vmware/vsphere-bc/1.0/vsphere-bc.xsd',
because 1) could not find the document; 2) the document could not be
read; 3) the root element of the document is not <xsd:schema>.
Which basically means Spring cannot find our custom schema
http://esb.intrinsec.com/components/vmware/vsphere-bc/1.0/vsphere-bc.xsd
though it is installed with our custom component.
Is there anything special we have to do to make Spring find the file ?
Use a particular plugin when generating our component ?
If we turn to Blueprint, we did not succeed in embedding our custom XML
namespace but we (kind of) succeeded in using a pure blueprint XML file
(see attached file). However, though we can see the endpoint in the logs :
18:13:54,963 | DEBUG | rint Extender: 2 |
ServiceRecipe | lueprint.container.ServiceRecipe 261
| 7 - org.apache.aries.blueprint - 0.2.0.incubating | Service created:
Endpoint[service: {com.intrinsec.esb.vmware.vsphere}alpha, endpoint:
provider, role: provider]
we cannot find it in Karaf with nmr:list, and when we try our complete
service, it fails with the following error :
18:16:16,768 | WARN | sb/vmware/alpha/ |
NMR | .servicemix.nmr.core.ChannelImpl 293
| 81 - org.apache.servicemix.nmr.core - 1.3.0.fuse-01-00 | Error
processing exchange
[...]
org.apache.servicemix.nmr.api.ServiceMixException: Could not dispatch
exchange. No matching endpoints.
Anyone has any clue on what could go wrong ?
Thanks,
- emmanuel
--
Ingénieur études et développements
Intrinsec
215, avenue Georges Clemenceau
92000 Nanterre
http://www.intrinsec.com
Emmanuel GUITON
Ingénieur développement
Standard : +33 1 41 91 77 77 l Fax : +33 1 41 91 77 78
215, avenue Georges Clemenceau l 92024 NANTERRE
http://infogerance.intrinsec.com/2010/04/informatique-de-lunicef-un-cloud-au-secours-dhaiti.html
http://www.intrinsec.com/
<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns="http://www.springframework.org/schema/beans"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xmlns:vsbc="http://esb.intrinsec.com/components/vmware/vsphere-bc/1.0"
xmlns:vsp="com.intrinsec.esb.vmware.vsphere"
xmlns:erp="com.intrinsec.esb.erp4it"
xsi:schemaLocation="
http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans.xsd
http://esb.intrinsec.com/components/vmware/vsphere-bc/1.0 http://esb.intrinsec.com/components/vmware/vsphere-bc/1.0/vsphere-bc.xsd"
>
<vsbc:provider service="vsp:alpha" endpoint="provider">
<property name="address" value="192.168.2.237" />
<property name="login" value="root" />
<property name="password" value="k00l1x$$" />
<property name="erp4itEndpoint" value="provider" />
<property name="erp4itService" value="erp:erp4it" />
<property name="erp4itElementIdMap">
<map>
<entry key="176"><value>1786860185</value></entry>
<!--entry key="176"><value>1068744886</value></entry-->
</map>
</property>
</vsbc:provider>
<!-- Export this service assembly to the OSGi registry -->
<bean class="org.apache.servicemix.common.osgi.EndpointExporter" />
</beans>
<?xml version="1.0" encoding="UTF-8"?>
<blueprint xmlns="http://www.osgi.org/xmlns/blueprint/v1.0.0"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xmlns:vsbc="http://esb.intrinsec.com/components/vmware/vsphere-bc/1.0"
xmlns:vsp="com.intrinsec.esb.vmware.vsphere"
xmlns:erp="com.intrinsec.esb.erp4it"
xsi:schemaLocation="
http://www.springframework.org/schema/beans http://www.osgi.org/xmlns/blueprint/v1.0.0/blueprint.xsd
http://esb.intrinsec.com/components/vmware/vsphere-bc/1.00 http://esb.intrinsec.com/components/vmware/vsphere-bc/1.0/vsphere-bc.xsd"
>
<service auto-export="interfaces">
<bean class="com.intrinsec.esb.components.vmware.vsphere.VSphereProviderEndpoint">
<property name="service" value="{com.intrinsec.esb.vmware.vsphere}alpha" />
<property name="endpoint" value="provider" />
<property name="address" value="192.168.2.237" />
<property name="login" value="root" />
<property name="password" value="k00l1x$$" />
<property name="erp4itEndpoint" value="provider" />
<property name="erp4itService" value="erp:erp4it" />
<property name="erp4itElementIdMap">
<map>
<entry key="176"><value>1786860185</value></entry>
</map>
</property>
</bean>
</service>
</blueprint>