busCfg cannot find xsd files after moving to SM4
------------------------------------------------

                 Key: SMX4-457
                 URL: https://issues.apache.org/activemq/browse/SMX4-457
             Project: ServiceMix 4
          Issue Type: Bug
          Components: Bundles
    Affects Versions: 4.1.0
            Reporter: brad


I've taken a working JBI Service Assembly from ServiceMix 3.3.1and dropped it 
into the ServiceMix 4.1.0 deploy folder. It fails to process the busCfg file 
specified in the CXF Provider object, and it seems to be because the 
ClassLoader used when the busCfg file is read uses only the servicemix-cxf-bc 
jar and any jars inside my Service Unit zip. For comparison, back in 3.3.1 I'd 
also have available anything in SM_HOME/lib (e.g. Spring jars) as well as 
anything in the much larger 
SM_HOME/hotdeploy/servicemix-cxf-bc-2009.01-installer.zip (e.g. 
cxf-rt-transports-*.jar)

Here are some relevant parts of my Service Assembly to illustrate the issue.

jbi.xml
{quote}
    <service-unit>
        <identification>
            <name>cxf_provider</name>
            <description>cxf_provider</description>
        </identification>
        <target>
            <artifacts-zip>cxf_provider.zip</artifacts-zip>
            <component-name>servicemix-cxf-bc</component-name>
        </target>
    </service-unit>
{quote}

cxf_provider.zip / xbean.xml
{quote}
    <cxfbc:provider wsdl="classpath:service.wsdl"
            locationURI="http://myhost:8080/myservice"; 
            ...
            busCfg="myBusCfg.xml">
{quote}

cxf_provider.zip / myBusCfg.xml
{quote}
    <beans xmlns="http://www.springframework.org/schema/beans";
            xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance";
            xmlns:sec="http://cxf.apache.org/configuration/security";
            xmlns:http="http://cxf.apache.org/transports/http/configuration";
            xmlns:jaxws="http://java.sun.com/xml/ns/jaxws";
            xsi:schemaLocation="
                http://cxf.apache.org/configuration/security
                http://cxf.apache.org/schemas/configuration/security.xsd
                http://cxf.apache.org/transports/http/configuration
                http://cxf.apache.org/schemas/configuration/http-conf.xsd
                http://www.springframework.org/schema/beans
                
http://www.springframework.org/schema/beans/spring-beans-2.0.xsd";>

        <http:conduit ...>
        </http:conduit>
{quote}

At the point it starts to read the busCfg file it fails to resolve the "beans" 
object, and similarly the "http:conduit" object.

My temporarily solution for now was taken from 
http://servicemix.apache.org/classloaders.html where I've defined a 
classpath.xml in my Service Unit zip as follows:

{quote}
    <beans>
        <classpath>
            <location>.</location>
            <location>lib/myJarFile.jar</location>
            
<location>../../../../../system/org/springframework/spring-beans/2.5.6.SEC01/spring-beans-2.5.6.SEC01.jar</location>
            
<location>../../../../../system/org/apache/cxf/cxf-bundle/2.2.5-psc-01-00/cxf-bundle-2.2.5-psc-01-00.jar</location>
        </classpath>
    </beans>
{quote}

Can you advise a more suitable way to achieve this ?

-- 
This message is automatically generated by JIRA.
-
You can reply to this email to add a comment to the issue online.

Reply via email to