基于SCA(tuscany)的SOA实践之一(发布服务是如此的简单)

原创 2008年09月28日 15:32:00
本文讲述基于SCA(tuscany)的SOA实践,第一篇将服务发布,tuscany支持N多协议,这里主要是针对webservice
先说一下开发环境jdk6+eclipse3.4+wst+stp+tuscany1.3.1
1   建立一个动态web工程tuscanytest,源文件目录是src/main/java,资源文件目录是src/main/resources,web目录是src/main/webapp,把tuscany的jar复制到src/main/webapp/WEB-INF/lib/目录下
2   接口,sca中接口可以有java和wsdl2种方法,本例使用java
    定义接口 IUserservice,代码如下
package com.tuscanytest.service;

import java.util.List;

import org.osoa.sca.annotations.Remotable;

@Remotable
public interface IUserservice {
//如果服务是分布式的,就需要使用@Remotable声明
    List<User> getAll();
}
3 定义User和Address类,都是简单的pojo对象,代码如下
User类
package com.tuscanytest.service;

public class User {

    private String id;
    private String name;
    private String password;
    private Address address;

    public String getId() {
        return id;
    }

    public void setId(String id) {
        this.id = id;
    }

    public String getName() {
        return name;
    }

    public void setName(String name) {
        this.name = name;
    }

    public String getPassword() {
        return password;
    }

    public void setPassword(String password) {
        this.password = password;
    }

    public Address getAddress() {
        return address;
    }

    public void setAddress(Address address) {
        this.address = address;
    }

}
Address类
package com.tuscanytest.service;

public class Address {

    private String street;

    public String getStreet() {
        return street;
    }

    public void setStreet(String street) {
        this.street = street;
    }

}   
4 定义IUserservice的UserServiceImpl实现类,这里只是简单的从内存中获得模拟数据,代码如下
package com.tuscanytest.service;

import java.util.ArrayList;
import java.util.List;

public class UserServiceImpl implements IUserservice {

    private static List<User> users = null;
    static {
        users = new ArrayList<User>();
        for (int i = 0; i < 10; i++) {
            User user = new User();
            user.setId("id" + i);
            user.setName("name" + i);
            user.setPassword("password" + i);
            Address address = new Address();
            address.setStreet("street" + i);
            user.setAddress(address);
            users.add(user);
        }
    }

    public List<User> getAll() {
        return users;
    }

}

5 在src/main/resources/下定义default.composite文件,代码如下
<?xml version="1.0" encoding="UTF-8"?>
<composite xmlns="http://www.osoa.org/xmlns/sca/1.0"
    xmlns:tuscany="http://tuscany.apache.org/xmlns/sca/1.0" name="tuscanytest"
    targetNamespace="http://serivce.tuscanytest.com">
    <component name="UserServiceImpl">
        <implementation.java class="com.tuscanytest.service.UserServiceImpl"></implementation.java>
    </component>
    <service name="UserService" promote="UserServiceImpl">
        <interface.java interface="com.tuscanytest.service.IUserservice" />
        <binding.ws></binding.ws>
        <!--定义了发布服务绑定的协议,使用webservice,还有其他多种协议绑定,可参考tuscany文档-->
    </service>
</composite>
文件最终部署到webapp/WEB-INF/classes/目录下即可

6 定义sca-contribution.xml,代码如下
<?xml version="1.0" encoding="UTF-8"?>
<contribution xmlns="http://www.osoa.org/xmlns/sca/1.0"
              targetNamespace="http://serivce.tuscanytest.com"
              xmlns:tuscanytest="http://serivce.tuscanytest.com">
   <deployable composite="tuscanytest:tuscanytest"/>
</contribution>
文件最终部署到webapp/META-INF/目录下即可

7 修改webapp/WEB-INF/web.xml文件,添加如下的filter
    <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>

8 然后启动部署到web服务器上,访问地址http://localhost:9080/tuscanytest/UserService?wsdl,就可以看到wsdl服务描述文件

看你只需要增加一行配置,一个普通的java类就变成了web服务了
比起axis2的复杂来说,发布服务是如此的简单

Tuscany SCA 发布Web Service

Tuscany可以简单地通过配置文件来发布web service。(工具eclipse 3.5) 1. 新建动态web项目,指定classpath编译后的存储路径为WebContent/WEB—...
  • cuichao703
  • cuichao703
  • 2014年03月05日 10:34
  • 805

Tuscany SCA以独立应用方式运行的简单例子

 这个例子是基于tuscany-sca-1.0--incubator-M2环境的。可以从http://incubator.apache.org/tuscany/sca_downloads.html 下...
  • teamlet
  • teamlet
  • 2007年04月18日 15:57
  • 4668

使用 Eclipse SOA Tools Platform 插件和 Apache Tuscany

通过使用常用的 Eclipse 开发环境,Eclipse SOA Tools Platform (STP) 插件和 Apache Tuscany 简化了服务开发。Apache Tuscany 也已经与...
  • ibmjournal
  • ibmjournal
  • 2007年12月14日 10:50
  • 1512

SOA标准之SCA

SCA(Service Component Arichitecture)
  • joy_91
  • joy_91
  • 2014年06月27日 11:40
  • 1260

Apache Tuscany SCA 用户指南

介绍这篇用户指南帮助你熟悉SCA概念,并且带你浏览示范怎样创建SCA 应用的一个例子。它也说明了Tuscany支持的多种不同环境(例如命令行客户端或Web应用)以及如何打包程序以运行在这行环境中。本说...
  • abigfrog
  • abigfrog
  • 2007年10月05日 17:20
  • 12110

Tuscany SCA与Spring、Hibernate整合之简洁方法

Tuscany SCA发布Web Service,这篇文章讲了Tuscany 如何发布Web Service。本文介绍如何与常用的框架spring/hibernate整合。 Tuscany SC...
  • whuqin
  • whuqin
  • 2011年07月19日 21:40
  • 4352

Tuscany SCA 引导和装配的过程

Tuscany SCA在运行的时候进行各种服务的装配,根据XML格式的SCA元素的定义,从SCDL和其他格式的文件中读取装配的信息。一、装配过程主要分成三个步骤:1、载入(load)阶段从SCDL读取...
  • teamlet
  • teamlet
  • 2007年03月26日 22:15
  • 3485

概念篇-SOA,ESB, JBI, SCA区别

SOA – ESBESB是一种支持SOA实施的技术选择。SOA – JBIJBI是Java领域一种支持SOA实施的技术选择。SOA – SCA SCA是一种支持SOA实施的技术选择。SOA – OSG...
  • tyj1982
  • tyj1982
  • 2010年08月01日 20:54
  • 3788

Tuscany SCA案例分析(一)(连载中...)

给了好久的承诺,前些日子一直在学习一些SOA方面相关的资料,包括Web Service基础--WSDL SOAP UDDI等,这些是经典的Web service规范,同时学习了些相关的XML-RPC...
  • oracle1000g
  • oracle1000g
  • 2008年01月03日 12:02
  • 2076

Tuscany_SCA进行SOA开发学习笔记(第一节)

SOA面向服务的架构,是一个组建模型,它将应用程序的不同的功能单元(常常称之为服务)通过定义良好的接口联系起来。     SOA的解决方案主要有两个:JBI(Java Business Integr...
  • zhang625272514
  • zhang625272514
  • 2013年03月12日 15:28
  • 219
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:基于SCA(tuscany)的SOA实践之一(发布服务是如此的简单)
举报原因:
原因补充:

(最多只允许输入30个字)