I investigated this a bit more.  There is a simple change that can
be made to the launcher code to avoid loading contribution code from
the classpath.  Instead of the node-jumpstart code using the interface
com.goodvaluetrips.Trips to call the contribution code, the
node-jumpstart code can include a compatible interface scatours.Trips
that is loaded from the classpath.  This avoids the need to load the
interface com.goodvaluetrips.Trips from the classpath.

I tested this and it works.  I changed the launcher code in the
jumpstart-launcher directory in the new structure to do this, but
I did not change the code in chapter-02/node-jumpstart.

  Simon

Simon Nash wrote:
I noticed that the launcher in chapter02/node-jumpstart puts the
goodvaluetrips-contribution code on the classpath.  In general it
isn't a good idea to put contribution code on the classpath because
this prevents the classes in the contribution from being loaded by
the contribution class loader, which means that import.java and
export.java don't work properly.

In the launcher in chapter-02/node there is an example of how
the code can be factored so that no contribution code appears on
the classpath but instead is loaded by its contribution class loader.
This requires an additional contribution for the client code, which
is separate from the launcher instead of being part of it.

Is there a reason why node-jumpstart needs to put the client code
and contribution code on the classpath?  If not, I think it would be
better to use the pattern in chapter-02/node for all the launchers
in the travel sample.

  Simon

[email protected] wrote:
Author: slaws
Date: Sun May 10 15:05:23 2009
New Revision: 773350

URL: http://svn.apache.org/viewvc?rev=773350&view=rev
Log:
Add a simplest client in order to start a single contribution/composite/component

Added:
    tuscany/sandbox/travelsample/chapter-02/node-jumpstart/
tuscany/sandbox/travelsample/chapter-02/node-jumpstart/build.xml (with props) tuscany/sandbox/travelsample/chapter-02/node-jumpstart/pom.xml (with props)
    tuscany/sandbox/travelsample/chapter-02/node-jumpstart/src/
    tuscany/sandbox/travelsample/chapter-02/node-jumpstart/src/main/
    tuscany/sandbox/travelsample/chapter-02/node-jumpstart/src/main/java/
tuscany/sandbox/travelsample/chapter-02/node-jumpstart/src/main/java/scatours/ tuscany/sandbox/travelsample/chapter-02/node-jumpstart/src/main/java/scatours/LaunchNode.java (with props) tuscany/sandbox/travelsample/chapter-02/node-jumpstart/src/main/resources/ tuscany/sandbox/travelsample/chapter-02/node-jumpstart/src/main/resources/META-INF/ tuscany/sandbox/travelsample/chapter-02/node-jumpstart/src/main/resources/META-INF/sca-contribution.xml (with props) tuscany/sandbox/travelsample/chapter-02/node-jumpstart/src/main/resources/scatours.composite (with props)
    tuscany/sandbox/travelsample/chapter-02/node-jumpstart/src/test/
    tuscany/sandbox/travelsample/chapter-02/node-jumpstart/src/test/java/
tuscany/sandbox/travelsample/chapter-02/node-jumpstart/src/test/java/scatours/ tuscany/sandbox/travelsample/chapter-02/node-jumpstart/src/test/java/scatours/NodeTestCase.java (with props)
Modified:
tuscany/sandbox/travelsample/chapter-02/client-contribution/ (props changed)

Propchange: tuscany/sandbox/travelsample/chapter-02/client-contribution/
------------------------------------------------------------------------------
--- svn:ignore (added)
+++ svn:ignore Sun May 10 15:05:23 2009
@@ -0,0 +1,4 @@
+.classpath
+.project
+.settings
+target

Added: tuscany/sandbox/travelsample/chapter-02/node-jumpstart/build.xml
URL: http://svn.apache.org/viewvc/tuscany/sandbox/travelsample/chapter-02/node-jumpstart/build.xml?rev=773350&view=auto ============================================================================== --- tuscany/sandbox/travelsample/chapter-02/node-jumpstart/build.xml (added) +++ tuscany/sandbox/travelsample/chapter-02/node-jumpstart/build.xml Sun May 10 15:05:23 2009
@@ -0,0 +1,56 @@
+<!--
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements.  See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership.  The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License.  You may obtain a copy of the License at
+ * + *   http://www.apache.org/licenses/LICENSE-2.0
+ * + * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied.  See the License for the
+ * specific language governing permissions and limitations
+ * under the License.
+-->
+
+<project name="scatours-chapter-02-node" default="compile">
+    <property environment="env"/> +
+    <target name="compile">
+        <mkdir dir="target/classes"/>
+ <javac destdir="target/classes" debug="on" source="1.5" target="1.5">
+            <src path="src/main/java"/>
+            <classpath>
+ <pathelement location="${env.TUSCANY}/lib/tuscany-sca-manifest.jar"/>
+            </classpath>
+        </javac>
+        <copy todir="target/classes">
+            <fileset dir="src/main/resources"/>
+        </copy>
+ <jar destfile="target/scatours-chapter-02-node.jar" basedir="target/classes">
+            <manifest>
+ <attribute name="Main-Class" value="scatours.LaunchNode"/>
+            </manifest>
+        </jar>
+    </target>
+
+    <target name="run">
+        <java classname="scatours.LaunchNode" fork="true">
+            <classpath>
+                <pathelement location="target/classes"/>
+ <pathelement location="${env.TUSCANY}/lib/tuscany-sca-manifest.jar"/>
+            </classpath>
+        </java>
+    </target>
+
+    <target name="clean">
+        <delete includeemptydirs="true">
+            <fileset dir="target"/>
+        </delete>
+    </target>
+
+</project>

Propchange: tuscany/sandbox/travelsample/chapter-02/node-jumpstart/build.xml ------------------------------------------------------------------------------
    svn:eol-style = native

Propchange: tuscany/sandbox/travelsample/chapter-02/node-jumpstart/build.xml ------------------------------------------------------------------------------
    svn:keywords = Rev Date

Propchange: tuscany/sandbox/travelsample/chapter-02/node-jumpstart/build.xml ------------------------------------------------------------------------------
    svn:mime-type = text/xml

Added: tuscany/sandbox/travelsample/chapter-02/node-jumpstart/pom.xml
URL: http://svn.apache.org/viewvc/tuscany/sandbox/travelsample/chapter-02/node-jumpstart/pom.xml?rev=773350&view=auto ============================================================================== --- tuscany/sandbox/travelsample/chapter-02/node-jumpstart/pom.xml (added) +++ tuscany/sandbox/travelsample/chapter-02/node-jumpstart/pom.xml Sun May 10 15:05:23 2009
@@ -0,0 +1,70 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!--
+    * Licensed to the Apache Software Foundation (ASF) under one
+    * or more contributor license agreements.  See the NOTICE file
+    * distributed with this work for additional information
+    * regarding copyright ownership.  The ASF licenses this file
+    * to you under the Apache License, Version 2.0 (the
+    * "License"); you may not use this file except in compliance
+    * with the License.  You may obtain a copy of the License at
+    * +    *   http://www.apache.org/licenses/LICENSE-2.0
+    * +    * Unless required by applicable law or agreed to in writing,
+    * software distributed under the License is distributed on an
+    * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+    * KIND, either express or implied.  See the License for the
+    * specific language governing permissions and limitations
+    * under the License.    +-->
+<project>
+    <modelVersion>4.0.0</modelVersion>
+    <parent>
+        <groupId>org.apache.tuscany.sca</groupId>
+        <artifactId>tuscany-sca</artifactId>
+        <version>1.6-SNAPSHOT</version>
+        <!--relativePath>../../pom.xml</relativePath-->
+    </parent>
+    <artifactId>scatours-chapter-02-node-jumpstart</artifactId>
+    <name>Apache Tuscany SCA Tours Chapter 02 Node Jumpstart</name>
+
+    <dependencies>
+        <dependency>
+            <groupId>org.apache.tuscany.sca</groupId>
+            <artifactId>tuscany-node-api</artifactId>
+            <version>1.6-SNAPSHOT</version>
+        </dependency>
+
+        <dependency>
+            <groupId>org.apache.tuscany.sca</groupId>
+            <artifactId>tuscany-implementation-java-runtime</artifactId>
+            <version>1.6-SNAPSHOT</version>
+            <scope>runtime</scope>
+        </dependency>
+
+        <dependency>
+            <groupId>org.apache.tuscany.sca</groupId>
+            <artifactId>tuscany-implementation-node-runtime</artifactId>
+            <version>1.6-SNAPSHOT</version>
+            <scope>test</scope>
+        </dependency>
+        +        <dependency>
+            <groupId>org.apache.tuscany.sca</groupId>
+ <artifactId>scatours-chapter-02-goodvaluetrips-contribution</artifactId>
+            <version>1.6-SNAPSHOT</version>
+            <scope>test</scope>
+        </dependency>        +
+        <dependency>
+            <groupId>junit</groupId>
+            <artifactId>junit</artifactId>
+            <version>4.5</version>
+            <scope>test</scope>
+        </dependency>
+    </dependencies>
+    +    <build>
+       <finalName>${artifactId}</finalName>
+    </build>
+</project>

Propchange: tuscany/sandbox/travelsample/chapter-02/node-jumpstart/pom.xml ------------------------------------------------------------------------------
    svn:eol-style = native

Propchange: tuscany/sandbox/travelsample/chapter-02/node-jumpstart/pom.xml ------------------------------------------------------------------------------
    svn:keywords = Rev Date

Propchange: tuscany/sandbox/travelsample/chapter-02/node-jumpstart/pom.xml ------------------------------------------------------------------------------
    svn:mime-type = text/xml

Added: tuscany/sandbox/travelsample/chapter-02/node-jumpstart/src/main/java/scatours/LaunchNode.java URL: http://svn.apache.org/viewvc/tuscany/sandbox/travelsample/chapter-02/node-jumpstart/src/main/java/scatours/LaunchNode.java?rev=773350&view=auto ============================================================================== --- tuscany/sandbox/travelsample/chapter-02/node-jumpstart/src/main/java/scatours/LaunchNode.java (added) +++ tuscany/sandbox/travelsample/chapter-02/node-jumpstart/src/main/java/scatours/LaunchNode.java Sun May 10 15:05:23 2009
@@ -0,0 +1,53 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements.  See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership.  The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License.  You may obtain a copy of the License at
+ * + *   http://www.apache.org/licenses/LICENSE-2.0
+ * + * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied.  See the License for the
+ * specific language governing permissions and limitations
+ * under the License.    + */
+
+package scatours;
+
+import org.apache.tuscany.sca.node.SCAClient;
+import org.apache.tuscany.sca.node.SCAContribution;
+import org.apache.tuscany.sca.node.SCANode;
+import org.apache.tuscany.sca.node.SCANodeFactory;
+
+import com.goodvaluetrips.Trips;
+
+public class LaunchNode {
+
+    public static void main(String[] args) throws Exception {
+        try {
+ SCAContribution gvtContribution = + new SCAContribution("goodvaluetrips", + "../goodvaluetrips-contribution/target/classes");
+            SCANode node = SCANodeFactory.newInstance().
+ createSCANode("trips.composite", + gvtContribution);
+            node.start();
+
+ Trips tripProvider = ((SCAClient)node).getService(Trips.class, + "TripProvider/Trips"); + + System.out.println("Trip boooking code = " + + tripProvider.checkAvailability("FS1APR4", 2));
+
+            node.stop();
+            +        } catch (Throwable th) {
+            th.printStackTrace();
+        }
+    }
+}

Propchange: tuscany/sandbox/travelsample/chapter-02/node-jumpstart/src/main/java/scatours/LaunchNode.java ------------------------------------------------------------------------------
    svn:eol-style = native

Propchange: tuscany/sandbox/travelsample/chapter-02/node-jumpstart/src/main/java/scatours/LaunchNode.java ------------------------------------------------------------------------------
    svn:keywords = Rev Date

Added: tuscany/sandbox/travelsample/chapter-02/node-jumpstart/src/main/resources/META-INF/sca-contribution.xml URL: http://svn.apache.org/viewvc/tuscany/sandbox/travelsample/chapter-02/node-jumpstart/src/main/resources/META-INF/sca-contribution.xml?rev=773350&view=auto ============================================================================== --- tuscany/sandbox/travelsample/chapter-02/node-jumpstart/src/main/resources/META-INF/sca-contribution.xml (added) +++ tuscany/sandbox/travelsample/chapter-02/node-jumpstart/src/main/resources/META-INF/sca-contribution.xml Sun May 10 15:05:23 2009
@@ -0,0 +1,26 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!--
+    * Licensed to the Apache Software Foundation (ASF) under one
+    * or more contributor license agreements.  See the NOTICE file
+    * distributed with this work for additional information
+    * regarding copyright ownership.  The ASF licenses this file
+    * to you under the Apache License, Version 2.0 (the
+    * "License"); you may not use this file except in compliance
+    * with the License.  You may obtain a copy of the License at
+    * +    *   http://www.apache.org/licenses/LICENSE-2.0
+    * +    * Unless required by applicable law or agreed to in writing,
+    * software distributed under the License is distributed on an
+    * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+    * KIND, either express or implied.  See the License for the
+    * specific language governing permissions and limitations
+    * under the License.    +-->
+<contribution xmlns="http://www.osoa.org/xmlns/sca/1.0";
+              xmlns:scatours="http://scatours";>
+    <import namespace="http://tuscanyscatours.com/"; />
+    <import namespace="http://goodvaluetrips.com/"; />
+    <import namespace="http://client.scatours/"; />
+    <deployable composite="scatours:scatours" />
+</contribution>

Propchange: tuscany/sandbox/travelsample/chapter-02/node-jumpstart/src/main/resources/META-INF/sca-contribution.xml ------------------------------------------------------------------------------
    svn:eol-style = native

Propchange: tuscany/sandbox/travelsample/chapter-02/node-jumpstart/src/main/resources/META-INF/sca-contribution.xml ------------------------------------------------------------------------------
    svn:keywords = Rev Date

Propchange: tuscany/sandbox/travelsample/chapter-02/node-jumpstart/src/main/resources/META-INF/sca-contribution.xml ------------------------------------------------------------------------------
    svn:mime-type = text/xml

Added: tuscany/sandbox/travelsample/chapter-02/node-jumpstart/src/main/resources/scatours.composite URL: http://svn.apache.org/viewvc/tuscany/sandbox/travelsample/chapter-02/node-jumpstart/src/main/resources/scatours.composite?rev=773350&view=auto ============================================================================== --- tuscany/sandbox/travelsample/chapter-02/node-jumpstart/src/main/resources/scatours.composite (added) +++ tuscany/sandbox/travelsample/chapter-02/node-jumpstart/src/main/resources/scatours.composite Sun May 10 15:05:23 2009
@@ -0,0 +1,31 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!--
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements.  See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership.  The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License.  You may obtain a copy of the License at
+ * + *   http://www.apache.org/licenses/LICENSE-2.0
+ * + * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied.  See the License for the
+ * specific language governing permissions and limitations
+ * under the License.    +-->
+<composite xmlns="http://www.osoa.org/xmlns/sca/1.0";
+    targetNamespace="http://scatours";
+    xmlns:client="http://client.scatours/";
+    xmlns:tours="http://tuscanyscatours.com/";
+    xmlns:trips="http://goodvaluetrips.com/";
+    name="scatours">
+
+    <include name="client:Client" />
+    <include name="tours:Tours" />
+    <include name="trips:Trips" />
+
+</composite>

Propchange: tuscany/sandbox/travelsample/chapter-02/node-jumpstart/src/main/resources/scatours.composite ------------------------------------------------------------------------------
    svn:eol-style = native

Propchange: tuscany/sandbox/travelsample/chapter-02/node-jumpstart/src/main/resources/scatours.composite ------------------------------------------------------------------------------
    svn:keywords = Rev Date

Propchange: tuscany/sandbox/travelsample/chapter-02/node-jumpstart/src/main/resources/scatours.composite ------------------------------------------------------------------------------
    svn:mime-type = text/xml

Added: tuscany/sandbox/travelsample/chapter-02/node-jumpstart/src/test/java/scatours/NodeTestCase.java URL: http://svn.apache.org/viewvc/tuscany/sandbox/travelsample/chapter-02/node-jumpstart/src/test/java/scatours/NodeTestCase.java?rev=773350&view=auto ============================================================================== --- tuscany/sandbox/travelsample/chapter-02/node-jumpstart/src/test/java/scatours/NodeTestCase.java (added) +++ tuscany/sandbox/travelsample/chapter-02/node-jumpstart/src/test/java/scatours/NodeTestCase.java Sun May 10 15:05:23 2009
@@ -0,0 +1,60 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements.  See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership.  The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License.  You may obtain a copy of the License at
+ * + *   http://www.apache.org/licenses/LICENSE-2.0
+ * + * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied.  See the License for the
+ * specific language governing permissions and limitations
+ * under the License.    + */
+package scatours;
+
+import org.apache.tuscany.sca.node.SCAClient;
+import org.apache.tuscany.sca.node.SCAContribution;
+import org.apache.tuscany.sca.node.SCANode;
+import org.apache.tuscany.sca.node.SCANodeFactory;
+import org.junit.After;
+import org.junit.Before;
+import org.junit.Test;
+
+/**
+ * Tests all the components and services in chapter 2
+ */
+public class NodeTestCase {
+
+    private SCANode node;
+
+    @Before
+    public void startServer() throws Exception {
+        try {
+ node = SCANodeFactory.newInstance().createSCANode("scatours.composite", + new SCAContribution("goodvaluetrips", "../goodvaluetrips-contribution/target/classes"), + new SCAContribution("tuscanyscatours", "../tuscanyscatours-contribution/target/classes"), + new SCAContribution("client", "../client-contribution/target/classes"),
+                new SCAContribution("node", "./target/classes"));
+            node.start();
+        } catch (Exception ex) {
+            System.out.println(ex.toString());
+        }
+    }
+
+    @Test
+    public void testClient() throws Exception {
+ Runnable runner = ((SCAClient)node).getService(Runnable.class, "TestClient/Runnable");
+        runner.run();
+    }
+
+    @After
+    public void stopServer() throws Exception {
+        node.stop();
+    }
+}

Propchange: tuscany/sandbox/travelsample/chapter-02/node-jumpstart/src/test/java/scatours/NodeTestCase.java ------------------------------------------------------------------------------
    svn:eol-style = native

Propchange: tuscany/sandbox/travelsample/chapter-02/node-jumpstart/src/test/java/scatours/NodeTestCase.java ------------------------------------------------------------------------------
    svn:keywords = Rev Date










Reply via email to