From f3a04540471fc448e3a5cf38509152fdd2140608 Mon Sep 17 00:00:00 2001 From: antelder Date: Tue, 21 Apr 2009 06:30:38 +0000 Subject: Move to 1.x-contrib git-svn-id: http://svn.us.apache.org/repos/asf/tuscany@766996 13f79535-47bb-0310-9956-ffa450edef68 --- .../demos/load-balancing-webapp/LICENSE | 205 +++++++++++ .../demos/load-balancing-webapp/NOTICE | 6 + .../demos/load-balancing-webapp/README | 76 ++++ .../demos/load-balancing-webapp/build-tomcat.xml | 96 +++++ .../demos/load-balancing-webapp/build.xml | 125 +++++++ .../demos/load-balancing-webapp/pom.xml | 349 ++++++++++++++++++ .../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 ++ .../src/test/resources/apache-80/conf/httpd.conf | 28 ++ .../resources/apache-80/conf/workers.properties | 18 + .../src/test/resources/tomcat-8085/conf/server.xml | 391 +++++++++++++++++++++ .../webapps/balancer/WEB-INF/config/rules.xml | 26 ++ .../src/test/resources/tomcat-8086/conf/server.xml | 391 +++++++++++++++++++++ .../src/test/resources/tomcat-8087/conf/server.xml | 391 +++++++++++++++++++++ 22 files changed, 2522 insertions(+) create mode 100644 java/sca-1.x-contrib/demos/load-balancing-webapp/LICENSE create mode 100644 java/sca-1.x-contrib/demos/load-balancing-webapp/NOTICE create mode 100644 java/sca-1.x-contrib/demos/load-balancing-webapp/README create mode 100644 java/sca-1.x-contrib/demos/load-balancing-webapp/build-tomcat.xml create mode 100644 java/sca-1.x-contrib/demos/load-balancing-webapp/build.xml create mode 100644 java/sca-1.x-contrib/demos/load-balancing-webapp/pom.xml create mode 100644 java/sca-1.x-contrib/demos/load-balancing-webapp/src/main/java/client/LaunchClient.java create mode 100644 java/sca-1.x-contrib/demos/load-balancing-webapp/src/main/java/domain/LaunchDomain.java create mode 100644 java/sca-1.x-contrib/demos/load-balancing-webapp/src/main/java/helloworld/HelloWorldImpl.java create mode 100644 java/sca-1.x-contrib/demos/load-balancing-webapp/src/main/java/helloworld/HelloWorldService.java create mode 100644 java/sca-1.x-contrib/demos/load-balancing-webapp/src/main/java/helloworld/HelloWorldServiceClient.java create mode 100644 java/sca-1.x-contrib/demos/load-balancing-webapp/src/main/java/org/apache/tuscany/sca/demos/loadbalancer/rule/RoundRobinRule.java create mode 100644 java/sca-1.x-contrib/demos/load-balancing-webapp/src/main/resources/client-contribution/helloworldwsclient.composite create mode 100644 java/sca-1.x-contrib/demos/load-balancing-webapp/src/main/webapp/META-INF/sca-contribution.xml create mode 100644 java/sca-1.x-contrib/demos/load-balancing-webapp/src/main/webapp/META-INF/sca-deployables/helloworldws.composite create mode 100644 java/sca-1.x-contrib/demos/load-balancing-webapp/src/main/webapp/WEB-INF/web.xml create mode 100644 java/sca-1.x-contrib/demos/load-balancing-webapp/src/test/resources/apache-80/conf/httpd.conf create mode 100644 java/sca-1.x-contrib/demos/load-balancing-webapp/src/test/resources/apache-80/conf/workers.properties create mode 100644 java/sca-1.x-contrib/demos/load-balancing-webapp/src/test/resources/tomcat-8085/conf/server.xml create mode 100644 java/sca-1.x-contrib/demos/load-balancing-webapp/src/test/resources/tomcat-8085/webapps/balancer/WEB-INF/config/rules.xml create mode 100644 java/sca-1.x-contrib/demos/load-balancing-webapp/src/test/resources/tomcat-8086/conf/server.xml create mode 100644 java/sca-1.x-contrib/demos/load-balancing-webapp/src/test/resources/tomcat-8087/conf/server.xml (limited to 'java') diff --git a/java/sca-1.x-contrib/demos/load-balancing-webapp/LICENSE b/java/sca-1.x-contrib/demos/load-balancing-webapp/LICENSE new file mode 100644 index 0000000000..8aa906c321 --- /dev/null +++ b/java/sca-1.x-contrib/demos/load-balancing-webapp/LICENSE @@ -0,0 +1,205 @@ + + Apache License + Version 2.0, January 2004 + http://www.apache.org/licenses/ + + TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION + + 1. Definitions. + + "License" shall mean the terms and conditions for use, reproduction, + and distribution as defined by Sections 1 through 9 of this document. + + "Licensor" shall mean the copyright owner or entity authorized by + the copyright owner that is granting the License. + + "Legal Entity" shall mean the union of the acting entity and all + other entities that control, are controlled by, or are under common + control with that entity. For the purposes of this definition, + "control" means (i) the power, direct or indirect, to cause the + direction or management of such entity, whether by contract or + otherwise, or (ii) ownership of fifty percent (50%) or more of the + outstanding shares, or (iii) beneficial ownership of such entity. + + "You" (or "Your") shall mean an individual or Legal Entity + exercising permissions granted by this License. + + "Source" form shall mean the preferred form for making modifications, + including but not limited to software source code, documentation + source, and configuration files. + + "Object" form shall mean any form resulting from mechanical + transformation or translation of a Source form, including but + not limited to compiled object code, generated documentation, + and conversions to other media types. + + "Work" shall mean the work of authorship, whether in Source or + Object form, made available under the License, as indicated by a + copyright notice that is included in or attached to the work + (an example is provided in the Appendix below). + + "Derivative Works" shall mean any work, whether in Source or Object + form, that is based on (or derived from) the Work and for which the + editorial revisions, annotations, elaborations, or other modifications + represent, as a whole, an original work of authorship. For the purposes + of this License, Derivative Works shall not include works that remain + separable from, or merely link (or bind by name) to the interfaces of, + the Work and Derivative Works thereof. + + "Contribution" shall mean any work of authorship, including + the original version of the Work and any modifications or additions + to that Work or Derivative Works thereof, that is intentionally + submitted to Licensor for inclusion in the Work by the copyright owner + or by an individual or Legal Entity authorized to submit on behalf of + the copyright owner. For the purposes of this definition, "submitted" + means any form of electronic, verbal, or written communication sent + to the Licensor or its representatives, including but not limited to + communication on electronic mailing lists, source code control systems, + and issue tracking systems that are managed by, or on behalf of, the + Licensor for the purpose of discussing and improving the Work, but + excluding communication that is conspicuously marked or otherwise + designated in writing by the copyright owner as "Not a Contribution." + + "Contributor" shall mean Licensor and any individual or Legal Entity + on behalf of whom a Contribution has been received by Licensor and + subsequently incorporated within the Work. + + 2. Grant of Copyright License. Subject to the terms and conditions of + this License, each Contributor hereby grants to You a perpetual, + worldwide, non-exclusive, no-charge, royalty-free, irrevocable + copyright license to reproduce, prepare Derivative Works of, + publicly display, publicly perform, sublicense, and distribute the + Work and such Derivative Works in Source or Object form. + + 3. Grant of Patent License. Subject to the terms and conditions of + this License, each Contributor hereby grants to You a perpetual, + worldwide, non-exclusive, no-charge, royalty-free, irrevocable + (except as stated in this section) patent license to make, have made, + use, offer to sell, sell, import, and otherwise transfer the Work, + where such license applies only to those patent claims licensable + by such Contributor that are necessarily infringed by their + Contribution(s) alone or by combination of their Contribution(s) + with the Work to which such Contribution(s) was submitted. If You + institute patent litigation against any entity (including a + cross-claim or counterclaim in a lawsuit) alleging that the Work + or a Contribution incorporated within the Work constitutes direct + or contributory patent infringement, then any patent licenses + granted to You under this License for that Work shall terminate + as of the date such litigation is filed. + + 4. Redistribution. You may reproduce and distribute copies of the + Work or Derivative Works thereof in any medium, with or without + modifications, and in Source or Object form, provided that You + meet the following conditions: + + (a) You must give any other recipients of the Work or + Derivative Works a copy of this License; and + + (b) You must cause any modified files to carry prominent notices + stating that You changed the files; and + + (c) You must retain, in the Source form of any Derivative Works + that You distribute, all copyright, patent, trademark, and + attribution notices from the Source form of the Work, + excluding those notices that do not pertain to any part of + the Derivative Works; and + + (d) If the Work includes a "NOTICE" text file as part of its + distribution, then any Derivative Works that You distribute must + include a readable copy of the attribution notices contained + within such NOTICE file, excluding those notices that do not + pertain to any part of the Derivative Works, in at least one + of the following places: within a NOTICE text file distributed + as part of the Derivative Works; within the Source form or + documentation, if provided along with the Derivative Works; or, + within a display generated by the Derivative Works, if and + wherever such third-party notices normally appear. The contents + of the NOTICE file are for informational purposes only and + do not modify the License. You may add Your own attribution + notices within Derivative Works that You distribute, alongside + or as an addendum to the NOTICE text from the Work, provided + that such additional attribution notices cannot be construed + as modifying the License. + + You may add Your own copyright statement to Your modifications and + may provide additional or different license terms and conditions + for use, reproduction, or distribution of Your modifications, or + for any such Derivative Works as a whole, provided Your use, + reproduction, and distribution of the Work otherwise complies with + the conditions stated in this License. + + 5. Submission of Contributions. Unless You explicitly state otherwise, + any Contribution intentionally submitted for inclusion in the Work + by You to the Licensor shall be under the terms and conditions of + this License, without any additional terms or conditions. + Notwithstanding the above, nothing herein shall supersede or modify + the terms of any separate license agreement you may have executed + with Licensor regarding such Contributions. + + 6. Trademarks. This License does not grant permission to use the trade + names, trademarks, service marks, or product names of the Licensor, + except as required for reasonable and customary use in describing the + origin of the Work and reproducing the content of the NOTICE file. + + 7. Disclaimer of Warranty. Unless required by applicable law or + agreed to in writing, Licensor provides the Work (and each + Contributor provides its Contributions) on an "AS IS" BASIS, + WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or + implied, including, without limitation, any warranties or conditions + of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A + PARTICULAR PURPOSE. You are solely responsible for determining the + appropriateness of using or redistributing the Work and assume any + risks associated with Your exercise of permissions under this License. + + 8. Limitation of Liability. In no event and under no legal theory, + whether in tort (including negligence), contract, or otherwise, + unless required by applicable law (such as deliberate and grossly + negligent acts) or agreed to in writing, shall any Contributor be + liable to You for damages, including any direct, indirect, special, + incidental, or consequential damages of any character arising as a + result of this License or out of the use or inability to use the + Work (including but not limited to damages for loss of goodwill, + work stoppage, computer failure or malfunction, or any and all + other commercial damages or losses), even if such Contributor + has been advised of the possibility of such damages. + + 9. Accepting Warranty or Additional Liability. While redistributing + the Work or Derivative Works thereof, You may choose to offer, + and charge a fee for, acceptance of support, warranty, indemnity, + or other liability obligations and/or rights consistent with this + License. However, in accepting such obligations, You may act only + on Your own behalf and on Your sole responsibility, not on behalf + of any other Contributor, and only if You agree to indemnify, + defend, and hold each Contributor harmless for any liability + incurred by, or claims asserted against, such Contributor by reason + of your accepting any such warranty or additional liability. + + END OF TERMS AND CONDITIONS + + APPENDIX: How to apply the Apache License to your work. + + To apply the Apache License to your work, attach the following + boilerplate notice, with the fields enclosed by brackets "[]" + replaced with your own identifying information. (Don't include + the brackets!) The text should be enclosed in the appropriate + comment syntax for the file format. We also recommend that a + file or class name and description of purpose be included on the + same "printed page" as the copyright notice for easier + identification within third-party archives. + + Copyright [yyyy] [name of copyright owner] + + Licensed 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. + + + diff --git a/java/sca-1.x-contrib/demos/load-balancing-webapp/NOTICE b/java/sca-1.x-contrib/demos/load-balancing-webapp/NOTICE new file mode 100644 index 0000000000..fdfa0e9faa --- /dev/null +++ b/java/sca-1.x-contrib/demos/load-balancing-webapp/NOTICE @@ -0,0 +1,6 @@ +${pom.name} +Copyright (c) 2005 - 2008 The Apache Software Foundation + +This product includes software developed by +The Apache Software Foundation (http://www.apache.org/). + diff --git a/java/sca-1.x-contrib/demos/load-balancing-webapp/README b/java/sca-1.x-contrib/demos/load-balancing-webapp/README new file mode 100644 index 0000000000..b7bbb64b1a --- /dev/null +++ b/java/sca-1.x-contrib/demos/load-balancing-webapp/README @@ -0,0 +1,76 @@ +WebApp Load Balancing Demo +=========================== + +Demonstrates balancing load acoss SCA services by deploying an SCA composite +to two tomcat servers in a cluster. The tomcat servers sit behind an Apache +server which directs load to one or other tomcat server based on a set of rules. + +The mvn pom distributed with this sample will download, install and configure +two Tomcat servers automatically to act as workers. You need to install the +Apache web server and configure it manually. + +1 - Install and configure the Tomcat workers + +mvn + +This results in two tomcat servers at + +target/tomcat-8085 +target/tomcat-8086 + +2 - Install and configure the Apache server to balance load + +In this case we've chosen to use the native JK connector. There are several +resources that tell you how to configure Apache for load balancing Tomcat with +the JK connector. For example, + +http://tomcat.apache.org/connectors-doc/webserver_howto/apache.html +http://www.crazysquirrel.com/computing/debian/servers/tomcat55.jspx + +Here is a high level summary + +Download the latest version of Apache 2.2 (this demo was built with Apache 2.2.6) + http://httpd.apache.org/ + Install in a local director called, say, apache + +Download the mod_jk module (in binary form if you can) + http://tomcat.apache.org/download-connectors.cgi + Install it in apache/modules + +Configure the mod_jk module + Copy src/test/resources/apache-80/conf/workers.properties to apache/conf + Append the contents of src/test/resources/apache-80/conf/httpd.conf to apache/conf/httpf.conf + +3 - Start the apache and tomcat servers + +In three command prompts + +cd target/tomcat-8085 +bin/catalina run + +cd target/tomcat-8086 +bin/catalina run + +cd apache +bin/httpd + +4 - Run the client + +run the LanchClient program - TBD - need a script + +5 - Result + +The client will make 10 calls to the SCA service described in the helloworldws.composite that +is part of the webapp deployed to the tomcat servers. You will see the result of this +service call reported at the client in the form + +Called getGreetings +Hello World 6 + +If you look at the Tomcat consoles you will see that each server deals with half the requests +as the load is balanced equally between the two of them. + + + + + diff --git a/java/sca-1.x-contrib/demos/load-balancing-webapp/build-tomcat.xml b/java/sca-1.x-contrib/demos/load-balancing-webapp/build-tomcat.xml new file mode 100644 index 0000000000..7e1dc4b0e9 --- /dev/null +++ b/java/sca-1.x-contrib/demos/load-balancing-webapp/build-tomcat.xml @@ -0,0 +1,96 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/java/sca-1.x-contrib/demos/load-balancing-webapp/build.xml b/java/sca-1.x-contrib/demos/load-balancing-webapp/build.xml new file mode 100644 index 0000000000..506fa61015 --- /dev/null +++ b/java/sca-1.x-contrib/demos/load-balancing-webapp/build.xml @@ -0,0 +1,125 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/java/sca-1.x-contrib/demos/load-balancing-webapp/pom.xml b/java/sca-1.x-contrib/demos/load-balancing-webapp/pom.xml new file mode 100644 index 0000000000..22662f2526 --- /dev/null +++ b/java/sca-1.x-contrib/demos/load-balancing-webapp/pom.xml @@ -0,0 +1,349 @@ + + + + 4.0.0 + + org.apache.tuscany.sca + tuscany-demos + 1.6-SNAPSHOT + ../pom.xml + + demo-load-balancing-webapp + war + Apache Tuscany SCA WebApp Load Balancing Demo + A sample SCA application that is deployed as a webapp to a cluster of tomcat servers + + + + org.apache.tuscany.sca + tuscany-host-webapp + 1.6-SNAPSHOT + + + + org.apache.tuscany.sca + tuscany-implementation-java-runtime + 1.6-SNAPSHOT + runtime + + + + org.apache.tuscany.sca + tuscany-binding-ws-axis2 + 1.6-SNAPSHOT + runtime + + + + org.apache.tuscany.sca + tuscany-monitor + 1.6-SNAPSHOT + + + + org.apache.tuscany.sca + tuscany-node2-impl + 1.6-SNAPSHOT + + + + tomcat + catalina-balancer + 5.5.12 + + + + javax.servlet + servlet-api + 2.4 + provided + + + + junit + junit + 4.2 + test + + + + + + 8085 + http://127.0.0.1:${http.port} + ${env.CATALINA_HOME} + + + + ${artifactId} + + + + + org.apache.maven.plugins + maven-antrun-plugin + 1.1 + + + + ant + ant-trax + 1.6.5 + + + + + + download-tomcat + validate + + run + + + + + + + + + + + + unpack-tomcat-8086 + generate-resources + + run + + + + + + + + + + + unpack-tomcat-8087 + generate-resources + + run + + + + + + + + + + + + configure-tomcat-8086 + pre-integration-test + + run + + + + + + + + + + + configure-tomcat-8087 + pre-integration-test + + run + + + + + + + + + + + + copy-webapp-8086 + pre-integration-test + + run + + + + + + + + + + + copy-webapp-8087 + pre-integration-test + + run + + + + + + + + + + + + + + + + + + + + + diff --git a/java/sca-1.x-contrib/demos/load-balancing-webapp/src/main/java/client/LaunchClient.java b/java/sca-1.x-contrib/demos/load-balancing-webapp/src/main/java/client/LaunchClient.java new file mode 100644 index 0000000000..efa89b4fe9 --- /dev/null +++ b/java/sca-1.x-contrib/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/java/sca-1.x-contrib/demos/load-balancing-webapp/src/main/java/domain/LaunchDomain.java b/java/sca-1.x-contrib/demos/load-balancing-webapp/src/main/java/domain/LaunchDomain.java new file mode 100644 index 0000000000..33c37869a3 --- /dev/null +++ b/java/sca-1.x-contrib/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/java/sca-1.x-contrib/demos/load-balancing-webapp/src/main/java/helloworld/HelloWorldImpl.java b/java/sca-1.x-contrib/demos/load-balancing-webapp/src/main/java/helloworld/HelloWorldImpl.java new file mode 100644 index 0000000000..65dc030d89 --- /dev/null +++ b/java/sca-1.x-contrib/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/java/sca-1.x-contrib/demos/load-balancing-webapp/src/main/java/helloworld/HelloWorldService.java b/java/sca-1.x-contrib/demos/load-balancing-webapp/src/main/java/helloworld/HelloWorldService.java new file mode 100644 index 0000000000..7245513b2a --- /dev/null +++ b/java/sca-1.x-contrib/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/java/sca-1.x-contrib/demos/load-balancing-webapp/src/main/java/helloworld/HelloWorldServiceClient.java b/java/sca-1.x-contrib/demos/load-balancing-webapp/src/main/java/helloworld/HelloWorldServiceClient.java new file mode 100644 index 0000000000..f3d2fdb2ed --- /dev/null +++ b/java/sca-1.x-contrib/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/java/sca-1.x-contrib/demos/load-balancing-webapp/src/main/java/org/apache/tuscany/sca/demos/loadbalancer/rule/RoundRobinRule.java b/java/sca-1.x-contrib/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/java/sca-1.x-contrib/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/java/sca-1.x-contrib/demos/load-balancing-webapp/src/main/resources/client-contribution/helloworldwsclient.composite b/java/sca-1.x-contrib/demos/load-balancing-webapp/src/main/resources/client-contribution/helloworldwsclient.composite new file mode 100644 index 0000000000..9b6052741e --- /dev/null +++ b/java/sca-1.x-contrib/demos/load-balancing-webapp/src/main/resources/client-contribution/helloworldwsclient.composite @@ -0,0 +1,33 @@ + + + + + + + + + + + + + diff --git a/java/sca-1.x-contrib/demos/load-balancing-webapp/src/main/webapp/META-INF/sca-contribution.xml b/java/sca-1.x-contrib/demos/load-balancing-webapp/src/main/webapp/META-INF/sca-contribution.xml new file mode 100644 index 0000000000..11347004f9 --- /dev/null +++ b/java/sca-1.x-contrib/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/java/sca-1.x-contrib/demos/load-balancing-webapp/src/main/webapp/META-INF/sca-deployables/helloworldws.composite b/java/sca-1.x-contrib/demos/load-balancing-webapp/src/main/webapp/META-INF/sca-deployables/helloworldws.composite new file mode 100644 index 0000000000..1ab78d802d --- /dev/null +++ b/java/sca-1.x-contrib/demos/load-balancing-webapp/src/main/webapp/META-INF/sca-deployables/helloworldws.composite @@ -0,0 +1,32 @@ + + + + + + + + + + + + diff --git a/java/sca-1.x-contrib/demos/load-balancing-webapp/src/main/webapp/WEB-INF/web.xml b/java/sca-1.x-contrib/demos/load-balancing-webapp/src/main/webapp/WEB-INF/web.xml new file mode 100644 index 0000000000..8d47ae2207 --- /dev/null +++ b/java/sca-1.x-contrib/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 + /* + + + diff --git a/java/sca-1.x-contrib/demos/load-balancing-webapp/src/test/resources/apache-80/conf/httpd.conf b/java/sca-1.x-contrib/demos/load-balancing-webapp/src/test/resources/apache-80/conf/httpd.conf new file mode 100644 index 0000000000..37cf284d35 --- /dev/null +++ b/java/sca-1.x-contrib/demos/load-balancing-webapp/src/test/resources/apache-80/conf/httpd.conf @@ -0,0 +1,28 @@ +# Load mod_jk module +# Update this path to match your modules location +LoadModule jk_module modules/mod_jk.so + +# Declare the module for (remove this line on Apache 2.x) +# AddModule mod_jk.c +# Where to find workers.properties +# Update this path to match your conf directory location (put workers.properties next to httpd.conf) +JkWorkersFile conf/workers.properties + +# Where to put jk shared memory +# Update this path to match your local state directory or logs directory +JkShmFile logs/mod_jk.shm + +# Where to put jk logs +# Update this path to match your logs directory location (put mod_jk.log next to access_log) +JkLogFile logs/mod_jk.log + +# Set the jk log level [debug/error/info] +JkLogLevel info + +# Select the timestamp log format +JkLogStampFormat "[%a %b %d %H:%M:%S %Y] " + +# Send everything for context /examples to worker named worker1 (ajp13) +# JkMount /examples/* worker1 +# Send everything for context /* to the router +JkMount /* router diff --git a/java/sca-1.x-contrib/demos/load-balancing-webapp/src/test/resources/apache-80/conf/workers.properties b/java/sca-1.x-contrib/demos/load-balancing-webapp/src/test/resources/apache-80/conf/workers.properties new file mode 100644 index 0000000000..9228c4fd8e --- /dev/null +++ b/java/sca-1.x-contrib/demos/load-balancing-webapp/src/test/resources/apache-80/conf/workers.properties @@ -0,0 +1,18 @@ + # Load balancer looks after the workers + worker.list=router + + # The load balacer + worker.router.type=lb + worker.router.balance_workers=worker1,worker2 + + # Set properties for worker1 (ajp13) + worker.worker1.type=ajp13 + worker.worker1.host=localhost + worker.worker1.port=8010 + worker.worker1.lbfactor=1 + + # Set properties for worker1 (ajp13) + worker.worker2.type=ajp13 + worker.worker2.host=localhost + worker.worker2.port=8011 + worker.worker2.lbfactor=1 diff --git a/java/sca-1.x-contrib/demos/load-balancing-webapp/src/test/resources/tomcat-8085/conf/server.xml b/java/sca-1.x-contrib/demos/load-balancing-webapp/src/test/resources/tomcat-8085/conf/server.xml new file mode 100644 index 0000000000..920fa7b037 --- /dev/null +++ b/java/sca-1.x-contrib/demos/load-balancing-webapp/src/test/resources/tomcat-8085/conf/server.xml @@ -0,0 +1,391 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/java/sca-1.x-contrib/demos/load-balancing-webapp/src/test/resources/tomcat-8085/webapps/balancer/WEB-INF/config/rules.xml b/java/sca-1.x-contrib/demos/load-balancing-webapp/src/test/resources/tomcat-8085/webapps/balancer/WEB-INF/config/rules.xml new file mode 100644 index 0000000000..7486dc8148 --- /dev/null +++ b/java/sca-1.x-contrib/demos/load-balancing-webapp/src/test/resources/tomcat-8085/webapps/balancer/WEB-INF/config/rules.xml @@ -0,0 +1,26 @@ + + + + + + + diff --git a/java/sca-1.x-contrib/demos/load-balancing-webapp/src/test/resources/tomcat-8086/conf/server.xml b/java/sca-1.x-contrib/demos/load-balancing-webapp/src/test/resources/tomcat-8086/conf/server.xml new file mode 100644 index 0000000000..5ecb8fe5c4 --- /dev/null +++ b/java/sca-1.x-contrib/demos/load-balancing-webapp/src/test/resources/tomcat-8086/conf/server.xml @@ -0,0 +1,391 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/java/sca-1.x-contrib/demos/load-balancing-webapp/src/test/resources/tomcat-8087/conf/server.xml b/java/sca-1.x-contrib/demos/load-balancing-webapp/src/test/resources/tomcat-8087/conf/server.xml new file mode 100644 index 0000000000..f83c68191c --- /dev/null +++ b/java/sca-1.x-contrib/demos/load-balancing-webapp/src/test/resources/tomcat-8087/conf/server.xml @@ -0,0 +1,391 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + -- cgit v1.2.3