zoukankan      html  css  js  c++  java
  • Talend Restful

    目的:用Talend实现用Restful形式发布webservice

    实现:该示例实现了三个功能:通过查询获取数据;通过调用存储过程获取数据;新增数据。

    总体图:

    各个组件的主要配置如下:

    tRESTRequest_1是Job的主入口,我们这里实现了三个方法,使用不同形式传输。

    另外注意的是,因为我们是打算部署到karaf container中,所以REST的Endpoint相同的不能部署在一起,会有冲突,所以我们一般建议在port后面追加模块或系统的标示一起做endpoint,这样就不用耗费很多port来部署了!

    下面分三个方法来列出Sample,

    getUser:使用GET的传输方法,只传输一个id,URI Pattern:"/{id}/",调用示例就是http://localhost:8088/user/1/

    获取参数并映射

    使用tMSSqlRow组件来实现传参查询 

    通过tParseRecordSet组件将结果集转换为Set集合 

    如果有记录,将记录打包成要输出的XML

    然后通过组件返回结果!

    另外,如果查询没有结果的话,加入判断,并包装返回的xml返回!

    注意:在这个Job中,因为我有两个判断,虽然是从不同节点if的,但可能是由于组流程在一个main job中,所以如果只用(Integer)globalMap.get("tParseRecordSet_2_NB_LINE") == 0一个条件判断的话,在运行是,另外一个if也会执行,所以在此加上了URI的一些判断!

    这样getUser基本完成!

    其他两个操作基本类似,在此就不累述!不过在此对调用存储过程的稍加截图说明一下!

    使用tMSSqlSp组件,Parameters,一个是输入参数,一个是输出记录集RECORD SET 

    在tParseRecordSet时选择输出记录集RECORD SET的users,并添加需要输出的栏位!

    注意事项:

    以前没留意,近期发现一个问题,就是tRESTRequest的REST Endpoint好像不能使用变量,例如不能使用context.endpointurl,而只能直接输入字符串"http://localhost:8088/user"之类的,具体为什么会这样,没具体查找原因!

    但是如果用了类似变量context.endpointurl的话,在designer里面测试是没问题的,但是部署到container中后就有问题,虽然状态显示是Active,但是访问不了,可能会出现如下提示:

  • 相关阅读:
    LeetCode120 Triangle
    LeetCode119 Pascal's Triangle II
    LeetCode118 Pascal's Triangle
    LeetCode115 Distinct Subsequences
    LeetCode114 Flatten Binary Tree to Linked List
    LeetCode113 Path Sum II
    LeetCode112 Path Sum
    LeetCode111 Minimum Depth of Binary Tree
    Windows下搭建PHP开发环境-WEB服务器
    如何发布可用于azure的镜像文件
  • 原文地址:https://www.cnblogs.com/angusyang/p/6667600.html
Copyright © 2011-2022 走看看