Hi,

I am using spring as an implementation for one of my composites. The only way I 
could get to work was to make the spring application context beans SCA aware. 
From reading the tuscany documentation I am a little confused with the 
following statement.

"
A component that uses Spring for an implementation can wire SCA services and 
references without introducing SCA metadata into the Spring configuration.
The Spring context knows very little about the SCA environment.
"

Found here: http://tuscany.apache.org/sca-java-implementationspring.html

I though this implied that I would need to SCA metadata/tags in my spring 
application context. Which promotes the SCA goal of re-use? However the 
composite will not load without it? Below are my composite and spring 
application context files. 

<beans xmlns="http://www.springframework.org/schema/beans"; 
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance";
       xmlns:sca="http://www.springframework.org/schema/sca";
       xmlns:task="http://www.springframework.org/schema/task";
       xsi:schemaLocation="http://www.springframework.org/schema/beans 
http://www.springframework.org/schema/beans/spring-beans.xsd
       http://www.springframework.org/schema/sca 
http://www.osoa.org/xmlns/sca/1.0/spring-sca.xsd
       http://www.springframework.org/schema/task 
http://www.springframework.org/schema/task/spring-task-3.0.xsd";
       default-autowire="byName">


    <sca:service name="EaElementService" 
type="qhealth.thebox.earcl.jaxrs.JaxrsEaElementService" target="EaElementBean"/>
    <sca:service name="EaPackageService" 
type="qhealth.thebox.earcl.jaxrs.JaxrsEaPackageService" target="EaPackageBean"/>

    <bean id="EaElementBean" 
class="qhealth.thebox.earcl.jaxrs.impl.EaElementServiceImpl">
        <property name="eaElementRepository" ref="eaElementRepository"/>
    </bean>

    <bean id="EaPackageBean" 
class="qhealth.thebox.earcl.jaxrs.impl.EaPackageServiceImpl">
        <property name="eaPackageRepository" ref="eaPackageRepository"/>
    </bean>

    <bean id="eaElementRepository" 
class="qhealth.thebox.earcl.jdbc.impl.JdbcEaElementRepository">
        <property name="dataSource" ref="dataSource"/>
        <property name="eaConnectorRepository" ref="eaConnectorRepository"/>
    </bean>
    <bean id="eaConnectorRepository" 
class="qhealth.thebox.earcl.jdbc.impl.JdbcEaConnectorRepository">
        <property name="dataSource" ref="dataSource"/>
    </bean>

    <bean id="eaPackageRepository" 
class="qhealth.thebox.earcl.jdbc.impl.JdbcEaPackageRepository">
        <property name="dataSource" ref="dataSource"/>
        <property name="eaElementRepository" ref="eaElementRepository"/>
    </bean>

    <!--
    <bean id="dataSource" 
class="org.springframework.jdbc.datasource.DriverManagerDataSource">
        <property name="driverClassName" 
value="com.microsoft.sqlserver.jdbc.SQLServerDriver"/>
        <property name="url" 
value="jdbc:sqlserver://10.80.48.23;databaseName=QCH Architecture Sandpit"/>
        <property name="username" value="the_box"/>
        <property name="password" value="veryhard2guess"/>
    </bean>
    -->

    <bean id="dataSource" 
class="org.springframework.jdbc.datasource.DriverManagerDataSource">
        <property name="driverClassName" value="com.mysql.jdbc.Driver"/>
        <property name="url" value="jdbc:mysql://localhost:3306/ea_qhealth"/>
        <property name="username" value="eaqhealth"/>
        <property name="password" value="eaqhealth"/>
    </bean>

    <bean id="transactionManager" 
class="org.springframework.jdbc.datasource.DataSourceTransactionManager">
        <property name="dataSource" ref="dataSource"/>
    </bean>

</beans>



------ Composite

<composite xmlns="http://docs.oasis-open.org/ns/opencsa/sca/200912";
           xmlns:sca="http://docs.oasis-open.org/ns/opencsa/sca/200912";
           xmlns:tuscany="http://tuscany.apache.org/xmlns/sca/1.1";
           
targetNamespace="http://www.health.qld.gov.au/xmlns/thebox/composites/1.0";
           name="thebox">


    <!-- Component Declarations -->
    <component name="EaElementComponent">
        <implementation.spring location="earcl-integration-test-context.xml"/>
        <service name="EaElementService">
            <interface.java 
interface="qhealth.thebox.earcl.jaxrs.JaxrsEaElementService"/>
            <tuscany:binding.rest uri="/elements">
                <tuscany:wireFormat.json />
                <tuscany:operationSelector.jaxrs />
            </tuscany:binding.rest>
        </service>
    </component>

    <component name="EaPackageComponent">
        <implementation.spring location="earcl-integration-test-context.xml"/>
        <service name="EaPackageService">
            <interface.java 
interface="qhealth.thebox.earcl.jaxrs.JaxrsEaPackageService"/>
            <tuscany:binding.rest uri="/packages">
                <tuscany:wireFormat.json />
                <tuscany:operationSelector.jaxrs />
            </tuscany:binding.rest>
        </service>

    </component>

</composite> 

Reply via email to