`
紧急下潜
  • 浏览: 19446 次
  • 性别: Icon_minigender_1
  • 来自: 大陆
文章分类
社区版块
存档分类
最新评论

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

阅读更多
本文讲述基于SCA(tuscany)的SOA实践,本篇讲如何把一个java类通过tuscany发布成jsonrpc服务
开发环境jdk6+eclipse3.4+wst+stp+tuscany1.3.1
以下步骤和发布web服务大体相同,不同的地方我会标准一下
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文档-->
        <tuscany:binding.jsonrpc></tuscany:binding.jsonrpc>
        <!--和web服务相比增加上面一行配置,就实现了jsonrpc支持-->
    </service>
</composite>

<tuscany:binding.jsonrpc></tuscany:binding.jsonrpc>
和发布webservice相比多了这一行,是的,只需要这一行你就可以增加jsonrpc支持

文件最终部署到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/SCADomain/scaDomain.js,就可以看到js脚本文件

看你只需要增加一行配置,一个普通的java类就支持了webservice和jsonrpc两种协议的服务绑定,简单吧,下一篇我们来讲如何访问jsonrpc服务
分享到:
评论
1 楼 raymond2006k 2008-11-14  
写的不错。 清晰明了,受用了。

相关推荐

    SOA之SCA导航-Apache Tuscany篇

    使用Tuscany插件,将Java类打包为SCA服务组件,并配置发布为Web Service。 2.4. 测试Web Service 通过测试客户端或使用Eclipse内建的工具,验证Web Service是否正常工作。 通过以上内容,你可以了解到如何利用...

    基于Tuscany SCA的分布式SCA应用的设计与实现.pdf

    Tuscany SCA框架可以帮助开发者快速构建和部署分布式应用,是实现SOA(Service Oriented Architecture)的一个实践工具。在文中提到的分布式SCA模型的设计和实现中,Tuscany SCA起着核心的作用。 2. 分布式SCA应用...

    Tuscany SCA in Action

    《Tuscany SCA在行动》一书深入探讨了Service Component Architecture(SCA)与Apache Tuscany项目,这是IT领域内对服务组件架构及其实现的重要研究资料。以下是基于标题、描述、部分目录和标签生成的相关IT知识点:...

    tuscany发布webservice实例

    总结来说,“Tuscany发布Web服务实例”是一个实践性的教程,旨在教会开发者如何使用Apache Tuscany来快速搭建和发布Web服务。通过这个实例,你可以掌握SOA的基本概念,以及如何利用Tuscany的特性来实现服务的创建、...

    SCA_Spring.rar_SCA_SOA_SOA JAVA _java soa

    在SCA中,构件(Component)是服务的基本单位,它包含了业务逻辑。Spring可以通过注解或XML配置来定义构件,例如,使用`@Component`注解标记一个类为Spring Bean,这与SCA中的构件概念相吻合。Spring还提供了`@...

    Apache Tuscany SCA 用户指南StepByStep

    Apache Tuscany SCA(Service Component Architecture)是Apache软件基金会开发的一个开源项目,它提供了一个用于构建、部署和管理服务的框架。SCA是一种服务导向架构(SOA)标准,旨在简化不同技术间的互操作性,使...

    SCA、SOA与OSGi概念浅析

    **SCA(Service Component Architecture)** 是一种服务组件框架,旨在简化基于 **SOA(Service-Oriented Architecture)** 的应用程序构建。SCA的核心目标是让开发者能够专注于业务逻辑,而不是技术实现细节,通过...

    apache-tuscany-sca-1.6.2

    Apache Tuscany SCA(Service Component Architecture)是一个开源框架,由Apache软件基金会开发,用于构建分布式应用程序和服务。SCA是一种标准,它定义了一种模型来组合、管理和部署服务及组件,使得开发人员能够...

    sca.rar_SCA_tuscany

    Apache Tuscany是一个开源的服务组件架构(Service Component Architecture,简称SCA),它提供了一种用于构建和部署分布式应用程序和服务的标准化模型。SCA的核心目标是简化服务的开发、组装和管理,允许开发人员...

    Apache tuscany SCA实例

    Apache Tuscany是Apache软件基金会的一个开源项目,它实现了Service Component Architecture(SCA,服务组件架构),这是一种用于构建和集成分布式应用程序的规范。这个实例可能是关于如何使用Apache Tuscany来开发...

    apache-tuscany-sca-1.6.zip

    SCA是一种标准,旨在简化服务导向架构(SOA)的实现,使得开发人员能够更轻松地组合和重用不同技术的服务。 在"apache-tuscany-sca-1.6.zip"这个压缩包中,包含的是Apache Tuscany SCA 1.6版本的相关文件。这个版本...

    soa sca服务构件架构spring构件实现方案

    ### SOA SCA服务构件架构Spring构件实现方案 #### 一、引言 随着企业级应用的日益复杂,传统的单体应用已经难以满足快速变化的业务需求。面向服务的架构(SOA)作为一种灵活的服务组织方式,通过将复杂的业务功能...

    How does ServiceMix compare to Tuscany or SCA

    通过Tuscany,开发者可以使用简单的企业级编程模型,基于Plain Old Java Objects (POJOs)来构建服务,这使得在SOA环境中编写和组装服务变得更加简单。 对比ServiceMix和Tuscany/SCA,我们可以看到它们各有侧重点。...

    soa-tuscany资料与5个小例子

    5个代码例子使用的是 Tuscany1.5版本。请在官网下载jar包。 下载地址:http://archive.apache.org/dist/tuscany/java/sca/1.5/apache-tuscany-sca-1.5.zip 5个例子从不同的角度讲解了tuscany的整体架构思想。文档...

    SOA标准--SCA架构

    在提供的文件列表中,虽然没有具体的内容,但我们可以猜测这可能是一篇关于2009年SOA和SCA实践的文章,或许包含了当时的最佳实践、案例研究或工具介绍。`200912222.asp.htm`和`200912222.asp_files`可能是文章的网页...

Global site tag (gtag.js) - Google Analytics