summaryrefslogtreecommitdiffstats
path: root/sandbox/sebastien/java/embed/samples/implementation-extension
diff options
context:
space:
mode:
Diffstat (limited to 'sandbox/sebastien/java/embed/samples/implementation-extension')
-rw-r--r--sandbox/sebastien/java/embed/samples/implementation-extension/src/main/java/sample/impl/SampleImplementationProcessor.java18
-rw-r--r--sandbox/sebastien/java/embed/samples/implementation-extension/src/test/java/sample/ClientTest.java4
-rw-r--r--sandbox/sebastien/java/embed/samples/implementation-extension/src/test/java/sample/WelloTest.java10
-rw-r--r--sandbox/sebastien/java/embed/samples/implementation-extension/src/test/java/sample/impl/EmbedTestCase.java32
-rw-r--r--sandbox/sebastien/java/embed/samples/implementation-extension/src/test/java/sample/impl/InControlTestCase.java147
-rw-r--r--sandbox/sebastien/java/embed/samples/implementation-extension/src/test/java/sample/impl/RunWSTestCase.java120
-rw-r--r--sandbox/sebastien/java/embed/samples/implementation-extension/src/test/resources/Hello.wsdl4
-rw-r--r--sandbox/sebastien/java/embed/samples/implementation-extension/src/test/resources/Upper.wsdl4
-rw-r--r--sandbox/sebastien/java/embed/samples/implementation-extension/src/test/resources/test.composite19
9 files changed, 188 insertions, 170 deletions
diff --git a/sandbox/sebastien/java/embed/samples/implementation-extension/src/main/java/sample/impl/SampleImplementationProcessor.java b/sandbox/sebastien/java/embed/samples/implementation-extension/src/main/java/sample/impl/SampleImplementationProcessor.java
index cd7767672f..6017030d35 100644
--- a/sandbox/sebastien/java/embed/samples/implementation-extension/src/main/java/sample/impl/SampleImplementationProcessor.java
+++ b/sandbox/sebastien/java/embed/samples/implementation-extension/src/main/java/sample/impl/SampleImplementationProcessor.java
@@ -140,7 +140,7 @@ public class SampleImplementationProcessor extends BaseStAXArtifactProcessor imp
static WSDLInterface resolve(final QName name, final ModelResolver res, final ProcessorContext ctx, final WSDLFactory wif) throws ContributionResolveException {
final WSDLInterface wi = res.resolveModel(WSDLInterface.class, interfaze(name, wif), ctx);
if(!wi.isUnresolved())
- return wi;
+ return domBound(wi);
final WSDLDefinition wd = res.resolveModel(WSDLDefinition.class, definition(wi.getName(), wif), ctx);
if(wd.isUnresolved())
@@ -152,11 +152,23 @@ public class SampleImplementationProcessor extends BaseStAXArtifactProcessor imp
try {
final WSDLInterface nwi = wif.createWSDLInterface(pt.getElement(), wd, res, ctx.getMonitor());
nwi.setWsdlDefinition(wd);
- nwi.resetDataBinding(DOMDataBinding.NAME);
res.addModel(nwi, ctx);
- return nwi;
+ return domBound(nwi);
} catch(InvalidInterfaceException e) {
throw new ContributionResolveException(e);
}
}
+
+ /**
+ * Return a WSDL interface configured to use a DOM databinding.
+ */
+ static WSDLInterface domBound(WSDLInterface wi) throws ContributionResolveException {
+ try {
+ final WSDLInterface domwi = (WSDLInterface)wi.clone();
+ domwi.resetDataBinding(DOMDataBinding.NAME);
+ return domwi;
+ } catch(CloneNotSupportedException e) {
+ throw new ContributionResolveException(e);
+ }
+ }
}
diff --git a/sandbox/sebastien/java/embed/samples/implementation-extension/src/test/java/sample/ClientTest.java b/sandbox/sebastien/java/embed/samples/implementation-extension/src/test/java/sample/ClientTest.java
index 3b635708ec..92291c98a1 100644
--- a/sandbox/sebastien/java/embed/samples/implementation-extension/src/test/java/sample/ClientTest.java
+++ b/sandbox/sebastien/java/embed/samples/implementation-extension/src/test/java/sample/ClientTest.java
@@ -46,7 +46,7 @@ public class ClientTest {
@Java(Hello.class)
Hello jello;
- @WSDL("http://sample#Hello")
+ @WSDL("http://sample/hello#Hello")
WSDLReference wello;
public String jello(String s) {
@@ -56,7 +56,7 @@ public class ClientTest {
public String wello(String s) {
out.println("ClientTest.wello(" + s + ")");
- final Element hreq = xdom("http://sample", "hello", elem("name", text(s)));
+ final Element hreq = xdom("http://sample/hello", "hello", elem("name", text(s)));
final Element hres = wello.call("hello", hreq);
diff --git a/sandbox/sebastien/java/embed/samples/implementation-extension/src/test/java/sample/WelloTest.java b/sandbox/sebastien/java/embed/samples/implementation-extension/src/test/java/sample/WelloTest.java
index 3b3a6a4566..1bb9fc11ce 100644
--- a/sandbox/sebastien/java/embed/samples/implementation-extension/src/test/java/sample/WelloTest.java
+++ b/sandbox/sebastien/java/embed/samples/implementation-extension/src/test/java/sample/WelloTest.java
@@ -40,20 +40,20 @@ import sample.api.WSDLReference;
*
* @version $Rev$ $Date$
*/
-@WSDL("http://sample#Hello")
+@WSDL("http://sample/hello#Hello")
public class WelloTest {
- @WSDL("http://sample#Upper")
+ @WSDL("http://sample/upper#Upper")
WSDLReference upper;
public Element call(String op, Element e) {
out.println("WelloTest." + op + "(" + xml(e) + ")");
final String name = xreduce(print, "", xfilter(select("name"), elems(e)));
- final Element ureq = xdom("http://sample", "upper", elem("s", text("Hello " + name)));
+ final Element ureq = xdom("http://sample/upper", "upper", elem("s", text("Hello " + name)));
final Element ures = upper.call("upper", ureq);
- final String s = xreduce(print, "", xfilter(select("result"), elems(ures)));
- return xdom("http://sample", "helloResponse", elem("result", text(s)));
+ final String s = xreduce(print, "", xfilter(select("result"), elems(ures)));
+ return xdom("http://sample/hello", "helloResponse", elem("result", text(s)));
}
}
diff --git a/sandbox/sebastien/java/embed/samples/implementation-extension/src/test/java/sample/impl/EmbedTestCase.java b/sandbox/sebastien/java/embed/samples/implementation-extension/src/test/java/sample/impl/EmbedTestCase.java
index 41f6d95f3c..f30b5c9853 100644
--- a/sandbox/sebastien/java/embed/samples/implementation-extension/src/test/java/sample/impl/EmbedTestCase.java
+++ b/sandbox/sebastien/java/embed/samples/implementation-extension/src/test/java/sample/impl/EmbedTestCase.java
@@ -25,8 +25,10 @@ import static sample.impl.EmbedUtil.component;
import static sample.impl.EmbedUtil.composite;
import static sample.impl.EmbedUtil.contrib;
import static sample.impl.EmbedUtil.deploy;
+import static sample.impl.EmbedUtil.extensionPoints;
import static sample.impl.EmbedUtil.implementation;
import static sample.impl.EmbedUtil.node;
+import static sample.impl.EmbedUtil.providerFactories;
import static sample.impl.EmbedUtil.reference;
import static sample.impl.EmbedUtil.service;
import static sample.impl.EmbedUtil.wsdli;
@@ -36,6 +38,9 @@ import org.apache.tuscany.sca.assembly.Composite;
import org.apache.tuscany.sca.contribution.Contribution;
import org.apache.tuscany.sca.interfacedef.wsdl.WSDLInterface;
import org.apache.tuscany.sca.node.Node;
+import org.apache.tuscany.sca.provider.ImplementationProvider;
+import org.apache.tuscany.sca.provider.ProviderFactory;
+import org.apache.tuscany.sca.runtime.RuntimeComponent;
import org.junit.AfterClass;
import org.junit.BeforeClass;
import org.junit.Test;
@@ -50,7 +55,8 @@ import sample.WelloTest;
/**
* Test how to assemble a contribution, a SCDL composite and run it on an embedded
- * Tuscany runtime node.
+ * Tuscany runtime node. Also shows how pass in a ProviderFactory instead of having
+ * it loaded and constructed by the runtime node.
*
* @version $Rev$ $Date$
*/
@@ -60,12 +66,12 @@ public class EmbedTestCase {
@BeforeClass
public static void setUp() throws Exception {
- // Load the test WSDL definitions (could also construct
- // the WSDL and XSD models in code but that'd be quite
- // painful, so just load them from XML for now)
+ // Load the test WSDL definitions (could also construct the WSDL
+ // and XSD models in code but that'd be quite painful, so just
+ // load them from XML for now)
final Contribution contrib = contrib("test", here());
- WSDLInterface Hello_wsdl = wsdli("Hello.wsdl", "http://sample", "Hello", contrib);
- WSDLInterface Upper_wsdl = wsdli("Upper.wsdl", "http://sample", "Upper", contrib);
+ WSDLInterface Hello_wsdl = wsdli("Hello.wsdl", "http://sample/hello", "Hello", contrib);
+ WSDLInterface Upper_wsdl = wsdli("Upper.wsdl", "http://sample/upper", "Upper", contrib);
// Assemble a test composite model (see EmbedUtil
// for the little DSL used here, much more concise
@@ -91,12 +97,24 @@ public class EmbedTestCase {
reference("upper", "upper-test")),
component("upper-test",
implementation(UpperTest.class,
- service(Upper.class))));
+ service(Upper.class))));
+
+ // Register a test instance of our sample implementation ProviderFactory
+ providerFactories().addProviderFactory(testProviderFactory());
// Run with it
node = node(deploy(contrib, comp));
node.start();
}
+
+ static ProviderFactory<SampleImplementation> testProviderFactory() {
+ // This shows how to get called when a provider is created
+ return new SampleProviderFactory(extensionPoints()) {
+ public ImplementationProvider createImplementationProvider(RuntimeComponent comp, SampleImplementation impl) {
+ out.println("Creating a provider for component " + comp.getName());
+ return super.createImplementationProvider(comp, impl);
+ }};
+ }
@AfterClass
public static void tearDown() throws Exception {
diff --git a/sandbox/sebastien/java/embed/samples/implementation-extension/src/test/java/sample/impl/InControlTestCase.java b/sandbox/sebastien/java/embed/samples/implementation-extension/src/test/java/sample/impl/InControlTestCase.java
deleted file mode 100644
index 6523e0b233..0000000000
--- a/sandbox/sebastien/java/embed/samples/implementation-extension/src/test/java/sample/impl/InControlTestCase.java
+++ /dev/null
@@ -1,147 +0,0 @@
-/*
- * 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 sample.impl;
-
-import static java.lang.System.out;
-import static org.junit.Assert.assertEquals;
-import static sample.impl.EmbedUtil.component;
-import static sample.impl.EmbedUtil.composite;
-import static sample.impl.EmbedUtil.contrib;
-import static sample.impl.EmbedUtil.deploy;
-import static sample.impl.EmbedUtil.extensionPoints;
-import static sample.impl.EmbedUtil.implementation;
-import static sample.impl.EmbedUtil.node;
-import static sample.impl.EmbedUtil.providerFactories;
-import static sample.impl.EmbedUtil.reference;
-import static sample.impl.EmbedUtil.service;
-import static sample.impl.EmbedUtil.wsdli;
-import static sample.impl.TestUtil.here;
-
-import org.apache.tuscany.sca.assembly.Composite;
-import org.apache.tuscany.sca.contribution.Contribution;
-import org.apache.tuscany.sca.interfacedef.wsdl.WSDLInterface;
-import org.apache.tuscany.sca.node.Node;
-import org.apache.tuscany.sca.provider.ImplementationProvider;
-import org.apache.tuscany.sca.provider.ProviderFactory;
-import org.apache.tuscany.sca.runtime.RuntimeComponent;
-import org.junit.AfterClass;
-import org.junit.BeforeClass;
-import org.junit.Test;
-
-import sample.Client;
-import sample.ClientTest;
-import sample.Hello;
-import sample.JelloTest;
-import sample.Upper;
-import sample.UpperTest;
-import sample.WelloTest;
-
-/**
- * Test how to assemble a contribution, a SCDL composite and run it on an embedded
- * Tuscany runtime node. Same as EmbedTestCase but shows how stay in control and
- * pass in a ProviderFactory instead of having it loaded and constructed by the
- * runtime node.
- *
- * @version $Rev$ $Date$
- */
-public class InControlTestCase {
- static Node node;
-
- @BeforeClass
- public static void setUp() throws Exception {
-
- // Load the test WSDL definitions (could also construct
- // the WSDL and XSD models in code but that'd be quite
- // painful, so just load them from XML for now)
- final Contribution contrib = contrib("test", here());
- WSDLInterface Hello_wsdl = wsdli("Hello.wsdl", "http://sample", "Hello", contrib);
- WSDLInterface Upper_wsdl = wsdli("Upper.wsdl", "http://sample", "Upper", contrib);
-
- // Assemble a test composite model (see EmbedUtil
- // for the little DSL used here, much more concise
- // than using the assembly model interfaces)
- final Composite comp =
- composite("http://sample", "test",
- component("client-test",
- implementation(ClientTest.class,
- service(Client.class),
- reference("jello", Hello.class),
- reference("wello", Hello_wsdl)),
- reference("jello", "jello-test"),
- reference("wello", "wello-test")),
- component("wello-test",
- implementation(WelloTest.class,
- service(Hello_wsdl),
- reference("upper", Upper_wsdl)),
- reference("upper", "upper-test")),
- component("jello-test",
- implementation(JelloTest.class,
- service(Hello.class),
- reference("upper", Upper.class)),
- reference("upper", "upper-test")),
- component("upper-test",
- implementation(UpperTest.class,
- service(Upper.class))));
-
- // Register a test instance of our sample implementation ProviderFactory
- providerFactories().addProviderFactory(testProviderFactory());
-
- // Run with it
- node = node(deploy(contrib, comp));
- node.start();
- }
-
- static ProviderFactory<SampleImplementation> testProviderFactory() {
- // This shows that the embedder can take control and get called
- // when a provider is created, and return whatever provider, then
- // invoker, implementation instance etc
- return new SampleProviderFactory(extensionPoints()) {
- public ImplementationProvider createImplementationProvider(RuntimeComponent comp, SampleImplementation impl) {
- out.println("Creating a provider for component " + comp.getName());
- return super.createImplementationProvider(comp, impl);
- }
- };
- }
-
- @AfterClass
- public static void tearDown() throws Exception {
- node.stop();
- }
-
- @Test
- public void jello() {
- out.println("RunTestCase.jello");
- final String r = client().jello("Java");
- out.println(r);
- assertEquals("HELLO JAVA", r);
- }
-
- @Test
- public void wello() {
- out.println("RunTestCase.wello");
- final String r = client().wello("WSDL");
- out.println(r);
- assertEquals("HELLO WSDL", r);
- }
-
- static Client client() {
- return node.getService(Client.class, "client-test/Client");
- }
-}
diff --git a/sandbox/sebastien/java/embed/samples/implementation-extension/src/test/java/sample/impl/RunWSTestCase.java b/sandbox/sebastien/java/embed/samples/implementation-extension/src/test/java/sample/impl/RunWSTestCase.java
new file mode 100644
index 0000000000..61133d0fbf
--- /dev/null
+++ b/sandbox/sebastien/java/embed/samples/implementation-extension/src/test/java/sample/impl/RunWSTestCase.java
@@ -0,0 +1,120 @@
+/*
+ * 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 sample.impl;
+
+import static java.lang.System.out;
+import static org.junit.Assert.assertTrue;
+import static sample.impl.TestUtil.here;
+
+import java.io.BufferedReader;
+import java.io.IOException;
+import java.io.InputStream;
+import java.io.InputStreamReader;
+import java.io.OutputStream;
+import java.io.OutputStreamWriter;
+import java.net.Socket;
+
+import javax.servlet.ServletException;
+import javax.servlet.http.HttpServlet;
+import javax.servlet.http.HttpServletRequest;
+import javax.servlet.http.HttpServletResponse;
+
+import org.apache.tuscany.sca.core.ExtensionPointRegistry;
+import org.apache.tuscany.sca.http.jetty.JettyServer;
+import org.apache.tuscany.sca.node.Contribution;
+import org.apache.tuscany.sca.node.Node;
+import org.apache.tuscany.sca.node.NodeFactory;
+import org.junit.AfterClass;
+import org.junit.BeforeClass;
+import org.junit.Test;
+
+/**
+ * Test a component that provides and consumes SOAP Web services.
+ *
+ * @version $Rev$ $Date$
+ */
+public class RunWSTestCase {
+ static Node node;
+ static JettyServer jetty;
+
+ @BeforeClass
+ public static void setUp() throws Exception {
+ // Start test composite on a Tuscany node
+ final NodeFactory nf = NodeFactory.newInstance();
+ node = nf.createNode(new Contribution("test", here()));
+ node.start();
+
+ // Mock up a test Web service on http://localhost:8086/wsupper
+ jetty = new JettyServer((ExtensionPointRegistry)nf.getExtensionPointRegistry());
+ jetty.start();
+ jetty.addServletMapping("http://localhost:8086/wsupper", new HttpServlet() {
+ private static final long serialVersionUID = 1L;
+ protected void doPost(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
+ assertTrue(read(req.getInputStream()).contains("Hello SOAP"));
+ final String soapresp =
+ "<?xml version='1.0' encoding='UTF-8'?><soapenv:Envelope xmlns:soapenv=\"http://schemas.xmlsoap.org/soap/envelope/\">" +
+ "<soapenv:Body><upperResponse xmlns=\"http://sample/upper\">" +
+ "<result xmlns=\"\">HELLO SOAP</result>" +
+ "</upperResponse></soapenv:Body></soapenv:Envelope>";
+
+ write(soapresp, resp.getOutputStream());
+ }
+ });
+ }
+
+ @AfterClass
+ public static void tearDown() throws Exception {
+ jetty.stop();
+ node.stop();
+ }
+
+ @Test
+ public void wsello() throws Exception {
+ out.println("RunWSTestCase.wsello");
+ // Send a SOAP request to the Web service provided by SCA component wsello-test
+ // on http://localhost:8085/wsello
+ final Socket s = new Socket("localhost", 8085);
+ final String soapreq =
+ "POST /wsello HTTP/1.0\r\n" +
+ "Content-Type: text/xml; charset=UTF-8\r\n" +
+ "Content-length: 231\r\n\r\n" +
+ "<?xml version='1.0' encoding='UTF-8'?><soapenv:Envelope xmlns:soapenv=\"http://schemas.xmlsoap.org/soap/envelope/\">" +
+ "<soapenv:Body><hello xmlns=\"http://sample/hello\">" +
+ "<name xmlns=\"\">SOAP</name>" +
+ "</hello></soapenv:Body></soapenv:Envelope>";
+ write(soapreq, s.getOutputStream());
+ assertTrue(read(s.getInputStream()).contains("HELLO SOAP"));
+ }
+
+ static void write(final String s, final OutputStream o) throws IOException {
+ final OutputStreamWriter w = new OutputStreamWriter(o);
+ w.write(s);
+ w.flush();
+ }
+
+ static String read(final InputStream i) throws IOException {
+ return read(new BufferedReader(new InputStreamReader(i)));
+ }
+
+ static String read(final BufferedReader r) throws IOException {
+ final String s = r.readLine();
+ return s == null? "" : s + read(r);
+ }
+}
diff --git a/sandbox/sebastien/java/embed/samples/implementation-extension/src/test/resources/Hello.wsdl b/sandbox/sebastien/java/embed/samples/implementation-extension/src/test/resources/Hello.wsdl
index 561e560e7a..360cea5ff3 100644
--- a/sandbox/sebastien/java/embed/samples/implementation-extension/src/test/resources/Hello.wsdl
+++ b/sandbox/sebastien/java/embed/samples/implementation-extension/src/test/resources/Hello.wsdl
@@ -17,13 +17,13 @@
* specific language governing permissions and limitations
* under the License.
-->
-<wsdl:definitions targetNamespace="http://sample" xmlns:tns="http://sample"
+<wsdl:definitions targetNamespace="http://sample/hello" xmlns:tns="http://sample/hello"
xmlns:wsdl="http://schemas.xmlsoap.org/wsdl/"
xmlns:xsd="http://www.w3.org/2001/XMLSchema"
name="Hello">
<wsdl:types>
- <schema elementFormDefault="qualified" targetNamespace="http://sample"
+ <schema elementFormDefault="qualified" targetNamespace="http://sample/hello"
xmlns="http://www.w3.org/2001/XMLSchema">
<element name="hello">
<complexType>
diff --git a/sandbox/sebastien/java/embed/samples/implementation-extension/src/test/resources/Upper.wsdl b/sandbox/sebastien/java/embed/samples/implementation-extension/src/test/resources/Upper.wsdl
index 60eaec9f27..8a148bb5e8 100644
--- a/sandbox/sebastien/java/embed/samples/implementation-extension/src/test/resources/Upper.wsdl
+++ b/sandbox/sebastien/java/embed/samples/implementation-extension/src/test/resources/Upper.wsdl
@@ -17,13 +17,13 @@
* specific language governing permissions and limitations
* under the License.
-->
-<wsdl:definitions targetNamespace="http://sample" xmlns:tns="http://sample"
+<wsdl:definitions targetNamespace="http://sample/upper" xmlns:tns="http://sample/upper"
xmlns:wsdl="http://schemas.xmlsoap.org/wsdl/"
xmlns:xsd="http://www.w3.org/2001/XMLSchema"
name="Upper">
<wsdl:types>
- <schema elementFormDefault="qualified" targetNamespace="http://sample"
+ <schema elementFormDefault="qualified" targetNamespace="http://sample/upper"
xmlns="http://www.w3.org/2001/XMLSchema">
<element name="upper">
<complexType>
diff --git a/sandbox/sebastien/java/embed/samples/implementation-extension/src/test/resources/test.composite b/sandbox/sebastien/java/embed/samples/implementation-extension/src/test/resources/test.composite
index 535488b74e..43a75f50a7 100644
--- a/sandbox/sebastien/java/embed/samples/implementation-extension/src/test/resources/test.composite
+++ b/sandbox/sebastien/java/embed/samples/implementation-extension/src/test/resources/test.composite
@@ -20,24 +20,39 @@
<composite xmlns="http://docs.oasis-open.org/ns/opencsa/sca/200912"
xmlns:t="http://tuscany.apache.org/xmlns/sca/1.1"
targetNamespace="http://test"
- name="test">
-
+ name="wstest">
+
+ <!-- Client test component used by the JUnit tests -->
<component name="client-test">
<t:implementation.sample class="sample.ClientTest"/>
<reference name="wello" target="wello-test"/>
<reference name="jello" target="jello-test"/>
</component>
+ <!-- HelloWorld test component that uses WSDL interfaces -->
<component name="wello-test">
<t:implementation.sample class="sample.WelloTest"/>
<reference name="upper" target="upper-test"/>
</component>
+ <!-- HelloWorld test component that uses Java interfaces -->
<component name="jello-test">
<t:implementation.sample class="sample.JelloTest"/>
<reference name="upper" target="upper-test"/>
</component>
+ <!-- HelloWorld test component that uses WSDL interfaces and SOAP Web Services -->
+ <component name="Wsello-test">
+ <t:implementation.sample class="sample.WelloTest"/>
+ <service name="Hello">
+ <binding.ws uri="http://localhost:8085/wsello"/>
+ </service>
+ <reference name="upper">
+ <binding.ws uri="http://localhost:8086/wsupper"/>
+ </reference>
+ </component>
+
+ <!-- Test component converts a string to uppercase -->
<component name="upper-test">
<t:implementation.sample class="sample.UpperTest"/>
</component>