summaryrefslogtreecommitdiffstats
path: root/sca-java-2.x
diff options
context:
space:
mode:
authorantelder <antelder@13f79535-47bb-0310-9956-ffa450edef68>2010-06-18 12:00:06 +0000
committerantelder <antelder@13f79535-47bb-0310-9956-ffa450edef68>2010-06-18 12:00:06 +0000
commit8927aec11c6b77eedbf117443de70595bc842c9b (patch)
treeb57557b6d5050b62cea6d3984479ea1583aa4b56 /sca-java-2.x
parent7532f542e9820e4032ca3621e1600cb2dc1e5a7d (diff)
TUSCANY-3517: Commit initial async servlet sample to contrib area
git-svn-id: http://svn.us.apache.org/repos/asf/tuscany@955957 13f79535-47bb-0310-9956-ffa450edef68
Diffstat (limited to 'sca-java-2.x')
-rw-r--r--sca-java-2.x/contrib/samples/async-servlet-sca/.springBeans13
-rw-r--r--sca-java-2.x/contrib/samples/async-servlet-sca/README7
-rw-r--r--sca-java-2.x/contrib/samples/async-servlet-sca/pom.xml94
-rw-r--r--sca-java-2.x/contrib/samples/async-servlet-sca/src/main/java/sample/StockService.java29
-rw-r--r--sca-java-2.x/contrib/samples/async-servlet-sca/src/main/java/sample/StockServiceImpl.java63
-rw-r--r--sca-java-2.x/contrib/samples/async-servlet-sca/src/main/java/sample/StockServlet.java61
-rw-r--r--sca-java-2.x/contrib/samples/async-servlet-sca/src/main/webapp/WEB-INF/proposal_web.composite41
-rw-r--r--sca-java-2.x/contrib/samples/async-servlet-sca/src/main/webapp/WEB-INF/web.composite34
-rw-r--r--sca-java-2.x/contrib/samples/async-servlet-sca/src/main/webapp/WEB-INF/web.xml44
-rw-r--r--sca-java-2.x/contrib/samples/async-servlet-sca/src/main/webapp/proposal_stock.html40
-rw-r--r--sca-java-2.x/contrib/samples/async-servlet-sca/src/main/webapp/stock.html34
11 files changed, 460 insertions, 0 deletions
diff --git a/sca-java-2.x/contrib/samples/async-servlet-sca/.springBeans b/sca-java-2.x/contrib/samples/async-servlet-sca/.springBeans
new file mode 100644
index 0000000000..4dff647636
--- /dev/null
+++ b/sca-java-2.x/contrib/samples/async-servlet-sca/.springBeans
@@ -0,0 +1,13 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<beansProjectDescription>
+ <version>1</version>
+ <pluginVersion><![CDATA[2.3.2.201003220227-RELEASE]]></pluginVersion>
+ <configSuffixes>
+ <configSuffix><![CDATA[xml]]></configSuffix>
+ </configSuffixes>
+ <enableImports><![CDATA[false]]></enableImports>
+ <configs>
+ </configs>
+ <configSets>
+ </configSets>
+</beansProjectDescription>
diff --git a/sca-java-2.x/contrib/samples/async-servlet-sca/README b/sca-java-2.x/contrib/samples/async-servlet-sca/README
new file mode 100644
index 0000000000..2e9a1203e0
--- /dev/null
+++ b/sca-java-2.x/contrib/samples/async-servlet-sca/README
@@ -0,0 +1,7 @@
+The README in the <distribution-unpack-dir>/samples directory provides
+general instructions about building and running samples. (where
+distribution-unpack-dir is the directory in which you unpacked the tuscany
+binary distribution archive). Take a look there first (noting at you read it that this sample
+is not a new style sample).
+
+TODO - finish \ No newline at end of file
diff --git a/sca-java-2.x/contrib/samples/async-servlet-sca/pom.xml b/sca-java-2.x/contrib/samples/async-servlet-sca/pom.xml
new file mode 100644
index 0000000000..f70044f97b
--- /dev/null
+++ b/sca-java-2.x/contrib/samples/async-servlet-sca/pom.xml
@@ -0,0 +1,94 @@
+<?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>2.0-SNAPSHOT</version>
+ <relativePath>../../pom.xml</relativePath>
+ </parent>
+
+ <artifactId>sample-async-servlet-webapp</artifactId>
+ <packaging>war</packaging>
+ <name>Apache Tuscany SCA Sample Asynchronous Servlet</name>
+
+ <dependencies>
+
+ <dependency>
+ <groupId>org.apache.tuscany.sca.shades</groupId>
+ <artifactId>tuscany-base-nodep</artifactId>
+ <version>2.0-SNAPSHOT</version>
+ </dependency>
+
+ <dependency>
+ <groupId>javax</groupId>
+ <artifactId>javaee-web-api</artifactId>
+ <version>6.0</version>
+ <scope>provided</scope>
+ </dependency>
+
+ <dependency>
+ <groupId>junit</groupId>
+ <artifactId>junit</artifactId>
+ <version>4.8.1</version>
+ <scope>test</scope>
+ </dependency>
+
+ </dependencies>
+
+ <build>
+ <finalName>async-servlet</finalName>
+ <plugins>
+ <plugin>
+ <groupId>org.mortbay.jetty</groupId>
+ <artifactId>maven-jetty-plugin</artifactId>
+ <version>6.1.18</version>
+ <configuration>
+ <contextPath>helloworld-servlet</contextPath>
+ <stopKey>foo</stopKey>
+ <stopPort>9999</stopPort>
+ </configuration>
+ <executions>
+ <execution>
+ <id>start-jetty</id>
+ <phase>process-test-classes</phase>
+ <goals>
+ <goal>run</goal>
+ </goals>
+ <configuration>
+ <scanIntervalSeconds>0</scanIntervalSeconds>
+ <daemon>true</daemon>
+ <connectors>
+ <connector implementation="org.mortbay.jetty.nio.SelectChannelConnector">
+ <port>8085</port>
+ </connector>
+ </connectors>
+ </configuration>
+ </execution>
+ <execution>
+ <id>stop-jetty</id>
+ <phase>prepare-package</phase>
+ <goals>
+ <goal>stop</goal>
+ </goals>
+ </execution>
+ </executions>
+ </plugin>
+ </plugins>
+ </build>
+</project>
+
diff --git a/sca-java-2.x/contrib/samples/async-servlet-sca/src/main/java/sample/StockService.java b/sca-java-2.x/contrib/samples/async-servlet-sca/src/main/java/sample/StockService.java
new file mode 100644
index 0000000000..84d6d90480
--- /dev/null
+++ b/sca-java-2.x/contrib/samples/async-servlet-sca/src/main/java/sample/StockService.java
@@ -0,0 +1,29 @@
+/*
+ * 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;
+
+import java.util.Observer;
+
+public interface StockService {
+
+ String getSymbol();
+ Double getValue();
+ void register(Observer observer);
+
+}
diff --git a/sca-java-2.x/contrib/samples/async-servlet-sca/src/main/java/sample/StockServiceImpl.java b/sca-java-2.x/contrib/samples/async-servlet-sca/src/main/java/sample/StockServiceImpl.java
new file mode 100644
index 0000000000..ebbc7519ff
--- /dev/null
+++ b/sca-java-2.x/contrib/samples/async-servlet-sca/src/main/java/sample/StockServiceImpl.java
@@ -0,0 +1,63 @@
+/*
+ * 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;
+
+import java.util.Date;
+import java.util.Observable;
+import java.util.Observer;
+import java.util.Random;
+
+public class StockServiceImpl extends Observable implements StockService,
+ Runnable {
+
+ public static final int MAX_VALUE = 1000;
+ public static final int MAX_SECONDS = 10;
+ public static final int MILLIS_PER_SECOND = 1000;
+
+ private Random random = new Random(new Date().getTime());
+
+ @Override
+ public String getSymbol() {
+ return "ASF";
+ }
+
+ @Override
+ public Double getValue() {
+ return Math.abs(random.nextDouble() * random.nextInt(MAX_VALUE));
+ }
+
+ @Override
+ public void run() {
+ try {
+ while (true) {
+ setChanged();
+ notifyObservers();
+ Thread.sleep((random.nextInt(MAX_SECONDS - 1) + 1) * MILLIS_PER_SECOND);
+ }
+ } catch (InterruptedException e) {
+ // ignore
+ }
+ }
+
+ @Override
+ public void register(Observer observer) {
+ this.addObserver(observer);
+ }
+
+}
diff --git a/sca-java-2.x/contrib/samples/async-servlet-sca/src/main/java/sample/StockServlet.java b/sca-java-2.x/contrib/samples/async-servlet-sca/src/main/java/sample/StockServlet.java
new file mode 100644
index 0000000000..a705b45f4e
--- /dev/null
+++ b/sca-java-2.x/contrib/samples/async-servlet-sca/src/main/java/sample/StockServlet.java
@@ -0,0 +1,61 @@
+/*
+ * 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;
+
+import java.io.IOException;
+import java.io.Writer;
+import java.util.Observable;
+import java.util.Observer;
+
+import javax.servlet.AsyncContext;
+import javax.servlet.ServletException;
+import javax.servlet.annotation.WebServlet;
+import javax.servlet.http.HttpServletRequest;
+import javax.servlet.http.HttpServletResponse;
+
+import org.oasisopen.sca.annotation.Reference;
+
+@WebServlet(asyncSupported = true, urlPatterns = "stock/")
+public class StockServlet implements Observer {
+
+ @Reference
+ private StockService service;
+
+ private AsyncContext asyncContext;
+
+ protected void doGet(HttpServletRequest req, HttpServletResponse resp)
+ throws ServletException, IOException {
+ asyncContext = req.startAsync(req, resp);
+ service.register(this);
+ }
+
+ @Override
+ public void update(Observable observable, Object arg) {
+ try {
+ asyncContext.getResponse().setContentType("text/html");
+ Writer writer = asyncContext.getResponse().getWriter();
+ writer.write("<span>Symbol: " + service.getSymbol() + ", Price "
+ + service.getValue() + "</span>");
+ writer.flush();
+ } catch (IOException e) {
+ // ignore
+ }
+ }
+
+}
diff --git a/sca-java-2.x/contrib/samples/async-servlet-sca/src/main/webapp/WEB-INF/proposal_web.composite b/sca-java-2.x/contrib/samples/async-servlet-sca/src/main/webapp/WEB-INF/proposal_web.composite
new file mode 100644
index 0000000000..7dc8aabea6
--- /dev/null
+++ b/sca-java-2.x/contrib/samples/async-servlet-sca/src/main/webapp/WEB-INF/proposal_web.composite
@@ -0,0 +1,41 @@
+<?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://docs.oasis-open.org/ns/opencsa/sca/200912"
+ xmlns:tuscany="http://tuscany.apache.org/xmlns/sca/1.1"
+ targetNamespace="http://samples"
+ name="Stock">
+
+ <component name="WebPage">
+ <implementation.?/>
+ <callback>
+ <binding.? url="/stock/**" method="callbackJsMethod"/>
+ </callback>
+ </component>
+
+ <component name="Servlet">
+ <implementation.web web-uri=""/>
+ <reference name="service" target="StockComponent"/>
+ </component>
+
+ <component name="StockComponent">
+ <implementation.java class="sample.StockServiceImpl"/>
+ </component>
+
+</composite>
diff --git a/sca-java-2.x/contrib/samples/async-servlet-sca/src/main/webapp/WEB-INF/web.composite b/sca-java-2.x/contrib/samples/async-servlet-sca/src/main/webapp/WEB-INF/web.composite
new file mode 100644
index 0000000000..6a2abb920b
--- /dev/null
+++ b/sca-java-2.x/contrib/samples/async-servlet-sca/src/main/webapp/WEB-INF/web.composite
@@ -0,0 +1,34 @@
+<?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://docs.oasis-open.org/ns/opencsa/sca/200912"
+ xmlns:tuscany="http://tuscany.apache.org/xmlns/sca/1.1"
+ targetNamespace="http://samples"
+ name="Stock">
+
+ <component name="Servlet">
+ <implementation.web web-uri=""/>
+ <reference name="service" target="StockComponent"/>
+ </component>
+
+ <component name="StockComponent">
+ <implementation.java class="sample.StockServiceImpl"/>
+ </component>
+
+</composite>
diff --git a/sca-java-2.x/contrib/samples/async-servlet-sca/src/main/webapp/WEB-INF/web.xml b/sca-java-2.x/contrib/samples/async-servlet-sca/src/main/webapp/WEB-INF/web.xml
new file mode 100644
index 0000000000..031f0d110f
--- /dev/null
+++ b/sca-java-2.x/contrib/samples/async-servlet-sca/src/main/webapp/WEB-INF/web.xml
@@ -0,0 +1,44 @@
+<?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.
+-->
+<web-app version="2.4"
+ xmlns="http://java.sun.com/xml/ns/j2ee"
+ xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
+ xsi:schemaLocation="http://java.sun.com/xml/ns/j2ee http://java.sun.com/xml/ns/j2ee/web-app_2_4.xsd" >
+
+ <display-name>Apache Tuscany Asynchronous Servlet Sample</display-name>
+
+ <listener><listener-class>org.apache.tuscany.sca.host.webapp.TuscanyContextListener</listener-class></listener>
+
+ <servlet>
+ <servlet-name>AsyncServlet</servlet-name>
+ <servlet-class>sample.StockServlet</servlet-class>
+ </servlet>
+
+ <servlet-mapping>
+ <servlet-name>AsyncServlet</servlet-name>
+ <url-pattern>/AsyncServlet</url-pattern>
+ </servlet-mapping>
+
+ <welcome-file-list id="WelcomeFileList">
+ <welcome-file>stock.html</welcome-file>
+ </welcome-file-list>
+
+</web-app>
+
diff --git a/sca-java-2.x/contrib/samples/async-servlet-sca/src/main/webapp/proposal_stock.html b/sca-java-2.x/contrib/samples/async-servlet-sca/src/main/webapp/proposal_stock.html
new file mode 100644
index 0000000000..975ed0ed57
--- /dev/null
+++ b/sca-java-2.x/contrib/samples/async-servlet-sca/src/main/webapp/proposal_stock.html
@@ -0,0 +1,40 @@
+<!--
+ * 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.
+-->
+<html>
+
+<head>
+ <title>Apache Tuscany Asynchronous Servlet Sample</title>
+ <script type="text/javascript" src="org.apache.tuscany.callbackListener.js"></script>
+
+ <script language="JavaScript">
+ function callbackJsMethod(response) {
+ // process received response
+ }
+ </script>
+</head>
+
+<body>
+ <h2>Apache Tuscany Asynchronous Servlet Sample</h2>
+
+ <h3>Stock Monitor</h3>
+
+ <input type="button" value="Start monitoring" onclick="">
+</body>
+
+</html> \ No newline at end of file
diff --git a/sca-java-2.x/contrib/samples/async-servlet-sca/src/main/webapp/stock.html b/sca-java-2.x/contrib/samples/async-servlet-sca/src/main/webapp/stock.html
new file mode 100644
index 0000000000..394bee04b5
--- /dev/null
+++ b/sca-java-2.x/contrib/samples/async-servlet-sca/src/main/webapp/stock.html
@@ -0,0 +1,34 @@
+<!--
+ * 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.
+-->
+<html>
+
+<head>
+<title>Apache Tuscany Asynchronous Servlet Sample</title>
+</head>
+
+<body>
+
+<h2>Apache Tuscany Asynchronous Servlet Sample</h2>
+
+<h3>Stock Monitor</h3>
+
+<input type="button" value="Start monitoring" onclick="">
+
+</body>
+</html> \ No newline at end of file