From bdd0a41aed7edf21ec2a65cfa17a86af2ef8c48a Mon Sep 17 00:00:00 2001 From: dims Date: Tue, 17 Jun 2008 00:23:01 +0000 Subject: Move Tuscany from Incubator to top level. git-svn-id: http://svn.us.apache.org/repos/asf/tuscany@668359 13f79535-47bb-0310-9956-ffa450edef68 --- .../src/main/java/client/LaunchClient.java | 57 +++++++++++++ .../src/main/java/domain/LaunchDomain.java | 33 ++++++++ .../src/main/java/helloworld/HelloWorldImpl.java | 35 ++++++++ .../main/java/helloworld/HelloWorldService.java | 31 +++++++ .../java/helloworld/HelloWorldServiceClient.java | 42 ++++++++++ .../demos/loadbalancer/rule/RoundRobinRule.java | 96 ++++++++++++++++++++++ .../helloworldwsclient.composite | 33 ++++++++ .../src/main/webapp/META-INF/sca-contribution.xml | 24 ++++++ .../sca-deployables/helloworldws.composite | 32 ++++++++ .../src/main/webapp/WEB-INF/web.xml | 37 +++++++++ 10 files changed, 420 insertions(+) create mode 100644 sandbox/sebastien/java/sca-node/demos/load-balancing-webapp/src/main/java/client/LaunchClient.java create mode 100644 sandbox/sebastien/java/sca-node/demos/load-balancing-webapp/src/main/java/domain/LaunchDomain.java create mode 100644 sandbox/sebastien/java/sca-node/demos/load-balancing-webapp/src/main/java/helloworld/HelloWorldImpl.java create mode 100644 sandbox/sebastien/java/sca-node/demos/load-balancing-webapp/src/main/java/helloworld/HelloWorldService.java create mode 100644 sandbox/sebastien/java/sca-node/demos/load-balancing-webapp/src/main/java/helloworld/HelloWorldServiceClient.java create mode 100644 sandbox/sebastien/java/sca-node/demos/load-balancing-webapp/src/main/java/org/apache/tuscany/sca/demos/loadbalancer/rule/RoundRobinRule.java create mode 100644 sandbox/sebastien/java/sca-node/demos/load-balancing-webapp/src/main/resources/client-contribution/helloworldwsclient.composite create mode 100644 sandbox/sebastien/java/sca-node/demos/load-balancing-webapp/src/main/webapp/META-INF/sca-contribution.xml create mode 100644 sandbox/sebastien/java/sca-node/demos/load-balancing-webapp/src/main/webapp/META-INF/sca-deployables/helloworldws.composite create mode 100644 sandbox/sebastien/java/sca-node/demos/load-balancing-webapp/src/main/webapp/WEB-INF/web.xml (limited to 'sandbox/sebastien/java/sca-node/demos/load-balancing-webapp/src/main') diff --git a/sandbox/sebastien/java/sca-node/demos/load-balancing-webapp/src/main/java/client/LaunchClient.java b/sandbox/sebastien/java/sca-node/demos/load-balancing-webapp/src/main/java/client/LaunchClient.java new file mode 100644 index 0000000000..efa89b4fe9 --- /dev/null +++ b/sandbox/sebastien/java/sca-node/demos/load-balancing-webapp/src/main/java/client/LaunchClient.java @@ -0,0 +1,57 @@ +/* + * 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 client; + +import java.io.File; + +import helloworld.HelloWorldService; + +import org.apache.tuscany.sca.node.SCAClient; +import org.apache.tuscany.sca.node.SCANode2; +import org.apache.tuscany.sca.node.SCANode2Factory; +import org.apache.tuscany.sca.node.SCANode2Factory.SCAContribution; +import org.osoa.sca.ServiceRuntimeException; + +public class LaunchClient { + public static void main(String[] args) throws Exception { + + SCANode2 node = null; + try { + + SCANode2Factory nodeFactory = SCANode2Factory.newInstance(); + node = nodeFactory.createSCANode(new File("src/main/resources/client-contribution/helloworldwsclient.composite").toURL().toString(), + new SCAContribution("TestContribution", + new File("src/main/resources/client-contribution").toURL().toString())); + + node.start(); + HelloWorldService helloWorldService = ((SCAClient)node).getService(HelloWorldService.class, "HelloWorldClientComponent"); + + + for (int i=0; i < 10; i++){ + System.out.println(helloWorldService.getGreetings("World " + i)); + } + + node.stop(); + + } catch (Exception e) { + throw new ServiceRuntimeException(e); + } + } +} diff --git a/sandbox/sebastien/java/sca-node/demos/load-balancing-webapp/src/main/java/domain/LaunchDomain.java b/sandbox/sebastien/java/sca-node/demos/load-balancing-webapp/src/main/java/domain/LaunchDomain.java new file mode 100644 index 0000000000..33c37869a3 --- /dev/null +++ b/sandbox/sebastien/java/sca-node/demos/load-balancing-webapp/src/main/java/domain/LaunchDomain.java @@ -0,0 +1,33 @@ +/* + * 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 domain; + +//import org.apache.tuscany.sca.node.launcher.DomainManagerLauncher; + +/** + * This server program that loads a composite to provide simple registry function. + * This server can be replaced with any registry that is appropriate but the components + * in each node that talk to the registry should be replaced also. + */ +public class LaunchDomain { + public static void main(String[] args) throws Exception { + // DomainManagerLauncher.main(args); + } + +} diff --git a/sandbox/sebastien/java/sca-node/demos/load-balancing-webapp/src/main/java/helloworld/HelloWorldImpl.java b/sandbox/sebastien/java/sca-node/demos/load-balancing-webapp/src/main/java/helloworld/HelloWorldImpl.java new file mode 100644 index 0000000000..65dc030d89 --- /dev/null +++ b/sandbox/sebastien/java/sca-node/demos/load-balancing-webapp/src/main/java/helloworld/HelloWorldImpl.java @@ -0,0 +1,35 @@ +/* + * 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 helloworld; + +import org.osoa.sca.annotations.Service; + +/** + * This class implements the HelloWorld service. + */ +@Service(HelloWorldService.class) +public class HelloWorldImpl implements HelloWorldService { + + public String getGreetings(String name) { + String message = "Hello " + name; + System.err.println(message); + return message; + } + +} diff --git a/sandbox/sebastien/java/sca-node/demos/load-balancing-webapp/src/main/java/helloworld/HelloWorldService.java b/sandbox/sebastien/java/sca-node/demos/load-balancing-webapp/src/main/java/helloworld/HelloWorldService.java new file mode 100644 index 0000000000..7245513b2a --- /dev/null +++ b/sandbox/sebastien/java/sca-node/demos/load-balancing-webapp/src/main/java/helloworld/HelloWorldService.java @@ -0,0 +1,31 @@ +/* + * 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 helloworld; + +import org.osoa.sca.annotations.Remotable; + +/** + * This is the business interface of the HelloWorld greetings service. + */ +@Remotable +public interface HelloWorldService { + + public String getGreetings(String name); +} + diff --git a/sandbox/sebastien/java/sca-node/demos/load-balancing-webapp/src/main/java/helloworld/HelloWorldServiceClient.java b/sandbox/sebastien/java/sca-node/demos/load-balancing-webapp/src/main/java/helloworld/HelloWorldServiceClient.java new file mode 100644 index 0000000000..f3d2fdb2ed --- /dev/null +++ b/sandbox/sebastien/java/sca-node/demos/load-balancing-webapp/src/main/java/helloworld/HelloWorldServiceClient.java @@ -0,0 +1,42 @@ +/* + * 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 helloworld; + +/** + * The HelloWorld service implementation + */ +public class HelloWorldServiceClient implements HelloWorldService { + + HelloWorldService helloWorldService; + + public String getGreetings(String name) { + System.out.println("Called getGreetings"); + return helloWorldService.getGreetings(name); + } + + public HelloWorldService getHelloWorldService() { + System.out.println("Got Injected helloWorldService"); + return helloWorldService; + } + + public void setHelloWorldService(HelloWorldService helloWorldService) { + System.out.println("Injected helloWorldService"); + this.helloWorldService = helloWorldService; + } +} \ No newline at end of file diff --git a/sandbox/sebastien/java/sca-node/demos/load-balancing-webapp/src/main/java/org/apache/tuscany/sca/demos/loadbalancer/rule/RoundRobinRule.java b/sandbox/sebastien/java/sca-node/demos/load-balancing-webapp/src/main/java/org/apache/tuscany/sca/demos/loadbalancer/rule/RoundRobinRule.java new file mode 100644 index 0000000000..5dc1b6671b --- /dev/null +++ b/sandbox/sebastien/java/sca-node/demos/load-balancing-webapp/src/main/java/org/apache/tuscany/sca/demos/loadbalancer/rule/RoundRobinRule.java @@ -0,0 +1,96 @@ +/* + * 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 org.apache.tuscany.sca.demos.loadbalancer.rule; + +import javax.servlet.http.HttpServletRequest; + +import org.apache.webapp.balancer.rules.BaseRule; + + +public class RoundRobinRule extends BaseRule { + /** + * The number of worker nodes that load will + * be balanced across + */ + private int workerCount; + + private int currentCount = 1; + + + /** + * Sets the worker count. + * + * @param workerCount The worker count + */ + public void setWorkerCount(int workerCount) { + if (workerCount == 0) { + throw new IllegalArgumentException( + "worker count cannot be 0."); + } else { + this.workerCount = workerCount; + } + } + + /** + * Returns the worker count. + * + * @return int The worker count + */ + protected int getWorkerCount() { + return workerCount; + } + + + + /** + * @see org.apache.webapp.balancer.Rule#matches(HttpServletRequest) + */ + public boolean matches(HttpServletRequest request) { + + if (currentCount == workerCount){ + currentCount = 1; + return true; + } else { + currentCount++; + return false; + } + } + + /** + * Returns a String representation of this object. + * + * @return String + */ + public String toString() { + StringBuffer buffer = new StringBuffer(); + + buffer.append("["); + buffer.append(getClass().getName()); + buffer.append(": "); + + buffer.append("Worker count: "); + buffer.append(getWorkerCount()); + buffer.append(" / "); + + buffer.append("Redirect URL: "); + buffer.append(getRedirectUrl()); + + buffer.append("]"); + + return buffer.toString(); + } +} diff --git a/sandbox/sebastien/java/sca-node/demos/load-balancing-webapp/src/main/resources/client-contribution/helloworldwsclient.composite b/sandbox/sebastien/java/sca-node/demos/load-balancing-webapp/src/main/resources/client-contribution/helloworldwsclient.composite new file mode 100644 index 0000000000..9b6052741e --- /dev/null +++ b/sandbox/sebastien/java/sca-node/demos/load-balancing-webapp/src/main/resources/client-contribution/helloworldwsclient.composite @@ -0,0 +1,33 @@ + + + + + + + + + + + + + diff --git a/sandbox/sebastien/java/sca-node/demos/load-balancing-webapp/src/main/webapp/META-INF/sca-contribution.xml b/sandbox/sebastien/java/sca-node/demos/load-balancing-webapp/src/main/webapp/META-INF/sca-contribution.xml new file mode 100644 index 0000000000..11347004f9 --- /dev/null +++ b/sandbox/sebastien/java/sca-node/demos/load-balancing-webapp/src/main/webapp/META-INF/sca-contribution.xml @@ -0,0 +1,24 @@ + + + + + \ No newline at end of file diff --git a/sandbox/sebastien/java/sca-node/demos/load-balancing-webapp/src/main/webapp/META-INF/sca-deployables/helloworldws.composite b/sandbox/sebastien/java/sca-node/demos/load-balancing-webapp/src/main/webapp/META-INF/sca-deployables/helloworldws.composite new file mode 100644 index 0000000000..1ab78d802d --- /dev/null +++ b/sandbox/sebastien/java/sca-node/demos/load-balancing-webapp/src/main/webapp/META-INF/sca-deployables/helloworldws.composite @@ -0,0 +1,32 @@ + + + + + + + + + + + + diff --git a/sandbox/sebastien/java/sca-node/demos/load-balancing-webapp/src/main/webapp/WEB-INF/web.xml b/sandbox/sebastien/java/sca-node/demos/load-balancing-webapp/src/main/webapp/WEB-INF/web.xml new file mode 100644 index 0000000000..8d47ae2207 --- /dev/null +++ b/sandbox/sebastien/java/sca-node/demos/load-balancing-webapp/src/main/webapp/WEB-INF/web.xml @@ -0,0 +1,37 @@ + + + + + + + Apache Tuscany Load Balancing Demo + + + tuscany + org.apache.tuscany.sca.host.webapp.TuscanyServletFilter + + + + tuscany + /* + + + -- cgit v1.2.3