您的位置:首页 > 移动开发 > WebAPP

SCA 之Tuscany 3 ——helloworld WebApp

2011-10-10 13:39 351 查看
  同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>

六、运行结果

内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: