本文讲述基于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的复杂来说,发布服务是如此的简单

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

  1. 基于OSGi的企业级开发框架实践——发布和使用分布式OSGi服务

    随着公司业务的不断扩展,业务人员向IT部门提出了更多的需求,为了快速响应业务人员的需求,尽快的交付成果,码农们日以继夜的将代码往现有系统中不断的堆叠,直到某一天,码农们发现无法再继续往系统上堆叠新的代 ...

  2. 魅族容器云平台基于Kubernetes自动化运维实践

    作者简介: 曾彬 阿里巴巴 高级技术专家 互联网老兵,十多年的基础架构经验,曾在支付宝.爱立信.魅族等担任系统架构师,从事过 Linux 内核开发,Java 中间件.SOA 应用框架的设计实现.云平台 ...

  3. 基于 OSGi的企业级开发框架实践——认识OSGi和SpringDM

    一. OSGi基础 1. 什么是OSGi OSGi--Open Service Gateway Initiative,最初的目的是为各种嵌入式设备提供通用的软件运行平台.后来经过10年的发展和壮大,O ...

  4. 基于 MaxCompute 的实时数据处理实践

    简介: MaxCompute 通过流式数据高性能写入和秒级别查询能力(查询加速),提供EB级云原生数仓近实时分析能力:高效的实现对变化中的数据进行快速分析及决策辅助.当前Demo基于近实时交互式BI分 ...

  5. Maven实战(四)——基于Maven的持续集成实践

    相信很多读者和我一样,最早接触到持续集成的概念是来自Martin的著名文章<持续集成>,该文最早发布于2000年9月,之后在2006年进行了一次修订,它清晰地解释了持续集成的概念,并总结了 ...

  6. UEFI开发探索100 – 《UEFI编程实践》发布啦

    (请保留-> 作者: 罗冰 https://blog.csdn.net/luobing4365) <UEFI编程实践>发布 1 内容简介 第一部分 UEFI环境搭建及UEFI应用构建 ...

  7. C#毕业设计——基于C#+asp.net+sqlserver的课件发布网站设计与实现(毕业论文+程序源码)——课件发布网站

    基于C#+asp.net+sqlserver的课件发布网站设计与实现(毕业论文+程序源码) 大家好,今天给大家介绍基于C#+asp.net+sqlserver的课件发布网站设计与实现,文章末尾附有本毕 ...

  8. 爱奇艺基于 Docker 的 App Engine 实践

    杨成伟:大家好,我是来自爱奇艺的杨成伟,现在在爱奇艺公司内部负责弹性计算云方面的建设,之前我是做移动操作系统的,之前在因特尔做MeeGo和Python,有几年的经验,主要是在操作系统的核心层,但是是在 ...

  9. 阿里云 EMR 基于 Apache DolphinScheduler 产品技术实践和社区贡献

    摘要:本文整理自阿里云 EMR 数据开发团队负责人孙一凡(Evans 忆梵),在 Spark&DS Meetup 的分享.本篇内容主要分为四个部分: 1.我们是谁 2. 为什么选择 Dolph ...

最新文章

  1. Node中require方法的简单实现
  2. 北斗导航 | GPS卫星导航技术重要人物简介
  3. hdoj 1015 Safecracker
  4. spark executor task执行
  5. html转义字符及css清除
  6. Python面向对象程序设计中属性的作用与用法
  7. 有些人总是在进步,因为他随时懂得回溯、调试、纠错,进而提升自己
  8. 互联网行业定制网站需要多少钱
  9. el-pagination分页自定义前往第几页样式(下拉框形式)
  10. 凡人修c传(四)翻牌子(POJ - 3279 - Fliptile)(思维+dfs)
  11. Java使用@Value获取不到值
  12. Java实现 蓝桥杯 基础练习 特殊的数字
  13. python 提取出字符串括号中的内容,正则表达式
  14. XSY contest1586 proB
  15. m基于matlab的polar码误码率仿真,译码算法采用SC算法
  16. Vue 路由懒加载根据根路由合并chunk块
  17. 基于OpenCvSharp的数字图像处理 - 图像彩色类型转换
  18. ios 检测是否联网_iOS 设备打开触动精灵提示“您的网络不给力哦,请检查您的设备是否联网”怎么解决?...
  19. 3分钟高效造型神器,戴森新一代Airwrap多功能造型器助力轻松开启日抛造型
  20. 服务器Linux系统安全升级

热门文章

  1. 追风逐日,Wi-SUN助推新能源数字化
  2. 多读书,不如读好书:程序员必读的30本书
  3. 到墨西哥的液体货物国际快递怎么邮寄
  4. (Java)SortedMap 接口
  5. 洛谷P5266 【深基17.例6】学籍管理
  6. Amazon AppStream服务介绍
  7. 光学计算机PPT,光学课件
  8. 富文本编辑器 Kindeditor 的使用和 常见错误
  9. iGrimace iOS7-Ios8-ios一键新机 系统 NZT NEO 非V8锤子IG基本操作全教程:v3 v8
  10. 公羊优链蜘蛛池【高权重】(白狐 公羊seo)