SCA 之Tuscany 3 ——helloworld WebApp
来源:互联网 发布:图片推荐算法 编辑:程序博客网 时间:2024/04/30 11:53
同REST的风格相对比,在使用webapp上,jsp内的java代码直接引用component进行返回值。这个和MVN的办法很不一样。
一、布局
二、web.xml内容,配置Tuscany监听和部署。
<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 Helloworld Sample</display-name> <filter> <filter-name>tuscany</filter-name> <filter-class>org.apache.tuscany.sca.host.webapp.TuscanyServletFilter</filter-class> </filter> <filter-mapping> <filter-name>tuscany</filter-name> <url-pattern>/*</url-pattern> </filter-mapping> <welcome-file-list id="WelcomeFileList"> <welcome-file>hello.jsp</welcome-file> </welcome-file-list></web-app>
待我们运行mvn jetty:run时,可发现在“webapp/WEB-INF/sca-contributions”内的组件被部署了:
三、Pom
<?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 xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/maven-v4_0_0.xsd"> <modelVersion>4.0.0</modelVersion> <parent> <groupId>org.apache.tuscany.sca.samples</groupId> <artifactId>tuscany-samples</artifactId> <version>2.0-SNAPSHOT</version> <relativePath>../../pom.xml</relativePath> </parent> <artifactId>helloworld-webapp</artifactId> <version>2.0-SNAPSHOT</version> <name>Apache Tuscany SCA Samples Helloworld WebApp</name> <packaging>war</packaging> <properties> <tuscany.version>${project.version}</tuscany.version> </properties> <!-- ASF repositories so sample can be built from SVN without building trunk--> <repositories><repository> <id>apache.snapshots</id> <name>Apache Snapshot Repository</name> <url>http://repository.apache.org/snapshots</url> <releases><enabled>false</enabled></releases> </repository></repositories> <pluginRepositories><pluginRepository> <id>apache.snapshots</id> <name>Apache Snapshot Repository</name> <url>http://repository.apache.org/snapshots</url> <releases><enabled>false</enabled></releases> </pluginRepository></pluginRepositories> <dependencies> <dependency> <groupId>org.apache.tuscany.sca</groupId> <artifactId>tuscany-base-runtime</artifactId> <version>${tuscany.version}</version> </dependency> <dependency> <groupId>junit</groupId> <artifactId>junit</artifactId> <version>4.8.1</version> <scope>test</scope> </dependency> <dependency> <groupId>net.sourceforge.htmlunit</groupId> <artifactId>htmlunit</artifactId> <version>2.6</version> <scope>test</scope> <exclusions> <exclusion> <groupId>xalan</groupId> <artifactId>xalan</artifactId> </exclusion> </exclusions> </dependency> <!-- replace HTMLUnit dependency with verstion that Tuscany is using --> <dependency> <groupId>xalan</groupId> <artifactId>xalan</artifactId> <version>2.7.0</version> <scope>test</scope> <exclusions> <exclusion> <groupId>xml-apis</groupId> <artifactId>xml-apis</artifactId> </exclusion> </exclusions> </dependency> </dependencies> <build> <plugins> <!-- this copies the SCA contribution from the helloworld sample into this webapp --> <plugin> <groupId>org.apache.maven.plugins</groupId> <artifactId>maven-dependency-plugin</artifactId> <executions> <execution> <id>copy</id> <phase>compile</phase> <goals> <goal>copy</goal> </goals> <configuration> <artifactItems> <artifactItem> <groupId>org.apache.tuscany.sca.samples</groupId> <artifactId>helloworld</artifactId> <version>${project.version}</version> <!-- should really go in the target folder but i can't get jetty:run or tomcat:run to work using that --> <outputDirectory>src/main/webapp/WEB-INF/sca-contributions</outputDirectory> </artifactItem> </artifactItems> </configuration> </execution> </executions> </plugin> <!-- to support running thw webapp with mvn tuscany:run --> <plugin> <groupId>org.apache.tuscany.sca</groupId> <artifactId>tuscany-maven-plugin</artifactId> <version>${tuscany.version}</version> </plugin> <!-- to support using mvn jetty:run and also to run the webapp for the integration test --> <plugin> <groupId>org.mortbay.jetty</groupId> <artifactId>maven-jetty-plugin</artifactId> <version>6.1.26</version> <configuration> <contextPath>helloworld-webapp</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> <!-- to support using mvn tomcat:run --> <plugin> <groupId>org.codehaus.mojo</groupId> <artifactId>tomcat-maven-plugin</artifactId> <version>1.1</version> </plugin> </plugins> </build></project>
可见其添加了Tuscany 支持、jetty支持、tomcat支持。
四、web构件定义:
<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="Helloworld"> <component name="foo"> <implementation.web web-uri=""/> <reference name="service" target="HelloworldComponent"/> </component></composite>
我们定义了reference service来调用其他的component。
五、JSP内的调用
<%@ page contentType="text/html;charset=UTF-8" language="java" %><%@ taglib uri="http://www.osoa.org/sca/sca_jsp.tld" prefix="sca" %><sca:reference name="service" type="sample.Helloworld" /><html> <body > <h2>Apache Tuscany Helloworld JSP Sample</h2> Calling HelloworldService sayHello("world") returns: <p> <%= service.sayHello(",Liang.") %> </body></html>
六、运行结果
- SCA 之Tuscany 3 ——helloworld WebApp
- SCA 之Tuscany 1 ——helloworld
- SCA 之Tuscany 6 ——helloworld SCA Client
- SCA 之Tuscany 2 ——helloworld JAX-RS
- SCA 之Tuscany 4 ——helloworld Webservice
- SCA 之Tuscany 5 ——helloworld Spring Bean
- SCA 之Tuscany 8 ——helloworld JSONP和JSONRPC
- SCA 之Tuscany 9 ——helloworld JMS binding
- SCA 之Tuscany 11 ——Tuscany小记注意事项
- SCA 之Tuscany 12——Tuscany JSON-RPC 实现
- SCA 之Tuscany 7 ——helloworld use ZIP format contributions
- SCA 之Tuscany 10 ——SCA模型的理解
- Tuscany SCA
- Apache Tuscany SCA 用户指南
- Apache Tuscany SCA 用户指南
- Apache Tuscany SCA 用户指南
- Apache Tuscany SCA 用户指南
- Apache Tuscany SCA入门
- 清空ArrayList所引发的思考(List相关操作)
- 在C编程中使用到的几个重要关键字之一static
- 探索CLR原理系列(1):类型
- android TextView和EditText中显示图片
- 探索CLR原理系列(2):字段在内存中的布局
- SCA 之Tuscany 3 ——helloworld WebApp
- 云计算思想和概括
- C#获取Excel中所有的Sheet名称
- 终于弄用了,一个可拖拽(移动)、编辑、锁定和关闭的div层,自动排列
- USACO:Your Ride Is Here
- ubuntu 源
- Delphi 监控文件改变
- inline函数的一些总结
- Java中字节与无符号数之间的转换