服务端开发

1,创建一个 webapp maven 项目,pom.xml 导入依赖

<dependency>
<groupId>com.tencent.tars</groupId>
<artifactId>tars-server</artifactId>
<version>1.6.0</version>
<type>jar</type>
</dependency>

2,添加插件

在生成代码的时候会根据此插件来生成

<plugin>
<groupId>com.tencent.tars</groupId>
<artifactId>tars-maven-plugin</artifactId>
<version>1.6.0</version>
<configuration>
<tars2JavaConfig>
<!-- 项目中 tars 文件位置 -->
<tarsFiles>
<tarsFile>${basedir}/src/main/resources/hello.tars</tarsFile>
</tarsFiles>
<!-- 源文件编码 -->
<tarsFileCharset>UTF-8</tarsFileCharset>
<!-- 生成服务端代码 -->
<servant>true</servant>
<!-- 生成源代码编码 -->
<charset>UTF-8</charset>
<!-- 生成的源代码目录 -->
<srcPath>${basedir}/src/main/java</srcPath>
<!-- 生成源代码包前缀 -->
<packagePrefixName>com.qq.tars.quickstart.server.</packagePrefixName>
</tars2JavaConfig>
</configuration>
</plugin>

3,在 src/main/resources 中新建 hello.tars 文件

module TestApp {
interface Hello{
string hello(int no, string name);
};
};

4,在工程目录下运行 mvn tars:tars2java 命令来生成接口文件

tars 文件决定了生成的接口,命名上追加 Servant ;内容也基本类似。具体如下:

@Servant
public interface HelloServant { public String hello(int no, String name);
}

5,继承接口,实现方法

public class HelloServantImpl implements HelloServant {

    public String hello(int no, String name) {
// TODO Auto-generated method stub
return String.format("hello no=%s, name=%s, time=%s", no, name, System.currentTimeMillis());
}
}

6,在 src/main/resources 中新建 servants.xml 文件,目的是暴露服务

<?xml version="1.0" encoding="UTF-8"?>
<servants>
<!-- 这是 OBJ 名 -->
<servant name="HelloObj">
<!-- tars 生成的接口路径 -->
<home-api>com.qq.tars.quickstart.server.testapp.HelloServant</home-api>
<!-- 我们自己的实现类路径 -->
<home-class>com.qq.tars.quickstart.server.testapp.impl.HelloServantImpl</home-class>
</servant>
</servants>

一定要正确配置接口和实现类的路径,我之前就是路径问题,花了好长时间才解决的~

7,打成 war 包,这就是一个服务,准备上传

在这里需要上传到管理平台,如果没有搭建好 tars 服务管理平台,请参照上一篇博文

点击提交后到导航菜单“发布管理”,选中服务,上传 war 包,点击发布

客户端开发

1,新建 maven webapp 项目,导入依赖

和服务端基本一致,区别是<artifactId>标签里是tars-client

<dependency>
<groupId>com.tencent.tars</groupId>
<artifactId>tars-client</artifactId>
<version>1.6.0</version>
<type>jar</type>
</dependency>

2,添加插件

和服务端基本一致,区别是 <servant> 标签里是 false ,和生成源代码包前缀

<plugin>
<groupId>com.tencent.tars</groupId>
<artifactId>tars-maven-plugin</artifactId>
<version>1.6.0</version>
<configuration>
<tars2JavaConfig>
<!-- tars文件位置 -->
<tarsFiles>
<tarsFile>${basedir}/src/main/resources/hello.tars</tarsFile>
</tarsFiles>
<!-- 源文件编码 -->
<tarsFileCharset>UTF-8</tarsFileCharset>
<!-- 生成代码,PS:客户端调用,这里需要设置为false -->
<servant>false</servant>
<!-- 生成源代码编码 -->
<charset>UTF-8</charset>
<!-- 生成的源代码目录 -->
<srcPath>${basedir}/src/main/java</srcPath>
<!-- 生成源代码包前缀 -->
<packagePrefixName>com.qq.tars.quickstart.client.</packagePrefixName>
</tars2JavaConfig>
</configuration>
</plugin>

3,在 src/main/resources 中新建 hello.tars 文件

文件和服务端的 tars 文件一致,拷贝即可

4,工程目录下运行 mvn tars:tars2java 命令生成接口

和服务端一致

5,测试,直接运行该文件即可

同步调用

public class Test {

    public static void main(String[] args) {
// TODO Auto-generated method stub
CommunicatorConfig cfg = new CommunicatorConfig();
//构建通信器
Communicator communicator = CommunicatorFactory.getInstance().getCommunicator(cfg);
//通过通信器,生成代理对象
HelloPrx proxy = communicator.stringToProxy(HelloPrx.class, "TestAppToTwo.HelloServer.HelloObj@tcp -h 111.231.63.166 -p 8202");
String ret = proxy.hello(1000, "HelloWorld");
System.out.println(ret);
} }

异步调用

public class TestAsync {

    public static void main(String[] args) {
// TODO Auto-generated method stub
CommunicatorConfig cfg = new CommunicatorConfig();
//构建通信器
Communicator communicator = CommunicatorFactory.getInstance().getCommunicator(cfg);
//通过通信器,生成代理对象
HelloPrx proxy = communicator.stringToProxy(HelloPrx.class, "TestAppToTwo.HelloServer.HelloObj@tcp -h 111.231.63.166 -p 8202");
proxy.async_hello(new HelloPrxCallback() { @Override
public void callback_expired() {
} @Override
public void callback_exception(Throwable ex) {
} @Override
public void callback_hello(String ret) {
System.out.println(ret);
}
}, 1000, "Hello World!");
} }

Tars --- Hello World的更多相关文章

  1. 【转】tars源码漫谈第1篇------tc_loki.h (牛逼哄哄的loki库)

    loki库是C++模板大牛Andrei写的, 里面大量运用模板的特性, 而tc_loki.h借用了loki库的部分代码, 形成了一个基本的文件tc_loki.h, 来看看: #ifndef __TC_ ...

  2. Tars 负载均衡

    // 传入主控地址,在 db_tars t_registry_info 表中 Communicator communicator = CommunicatorFactory.getInstance() ...

  3. Tars http服务

    http服务 发布到平台后可以直接使用 http 请求来调用,注意发布服务时选择 非 tars 协议! 1,创建一个 springboot 项目,并在启动类添加 @EnableTarsServer 注 ...

  4. Tars 服务调服务

    1,创建一个 tars 服务工程 2,把需要调用的服务的 客户端接口文件 拷贝到当前服务 3,构建通信器 CommunicatorConfig 调用,如果是 springboot 开发客户端可以使用注 ...

  5. springboot 开发 Tars

    1,创建 springboot 项目,并在启动类添加 @EnableTarsServer 注解 @SpringBootApplication @EnableTarsServer public clas ...

  6. 三、安装cmake,安装resin ,tars服务,mysql 安装介绍,安装jdk,安装maven,c++ 开发环境安装

    三.安装cmake,安装resin 2018年07月01日 21:32:05 youz1976 阅读数:308   开发环境说明: centos7.2 ,最低配置:1核cpu,2G内存,1M带宽 1. ...

  7. 一、tars简单介绍 二、tars 安装部署资料准备

    1.github地址https://github.com/Tencent/Tars/ 2.tars是RPC开发框架,目前支持c++,java,nodejs,php 3.tars 在腾讯内部已经使用了快 ...

  8. 【Tars】腾讯微服务框架Tars介绍

    目录 1.介绍2.设计思路3.整体架构4.平台特性1. 介绍 Tars是[基于名字服务][使用Tars协议]的高性能[RPC]开发框架,同时配套一体化的[服务治理平台],帮助个人或者企业快速的以微服务 ...

  9. SSM 开发 Tars

    目录结构 tars生成的文件当成 controller 来调用 service ,service 调用 mapper POM 注意如果 mybatis是3.4.1 spring 是4.1.14的话, ...

  10. spring 开发 Tars

    和不使用 Spring 的 tars HelloWord 项目相比,客户端完全一样,服务端两个地方不一样 创建不使用 Spring 的 tars HelloWord 步骤: https://www.c ...

随机推荐

  1. 杂七杂八的JavaScript

    一.input 焦点定位 1.定位input:(this.$refs.searchInput as HTMLInputElement).focus();   2.定位search,根据css选择器: ...

  2. 移动端IM开发者必读(二):史上最全移动弱网络优化方法总结

    1.前言 本文接上篇<移动端IM开发者必读(一):通俗易懂,理解移动网络的“弱”和“慢”>,关于移动网络的主要特性,在上篇中已进行过详细地阐述,本文将针对上篇中提到的特性,结合我们的实践经 ...

  3. 安装过redis集群,重新做集群办法:

    二:找到问题:这个地方IP的问题,以上是正确的版本,以前有问题的版本的Ip是127.0.0.1, 原因是这个地方以前我没注释redis.conf文件中的bind 127.0.0.1 然后做集群时使用的 ...

  4. js中的行为委托和无类编程

    概述 <你不知道的JavaScript>中有这么一段话:不幸的是,将类和继承的设计模式思维带入Javascript的想法是你所做的最坏的事情,因为语法可能会让你迷惑不已,让你以为真的有类这 ...

  5. 锚接口(上)——hashchange api 和 $.uriAnchor

    概述 这是我在单页Web应用这本书上看到的方法,并深入的研究了一下,把结果记录在下面,供以后开发时参考,相信对其它人也有用. 说明一下,这个方法已经过时了,H5有更新的方法:history api,我 ...

  6. Java学习笔记51(综合项目:家庭记账系统)

    javaEE的开发模式 1.什么是模式 模式在开发过程中总结出的“套路”,总结出的一套约定俗成的设计模式 2.javaEE经历的模式 model1模式: 技术组成:jsp+javaBean model ...

  7. Java Web——过滤器

    <Java Web开发技术应用——过滤器> 过滤器是一个程序,它先于与之相关的servlet或JSP页面运行在服务器上.过滤器可附加到一个或多个servlet或JSP页面上,并且可以检查进 ...

  8. php实现聊天室功能

    原理:长连接 一.长连接与短连接 短连接:客户端与服务端每进行一次报文收发交易时才进行通讯连接.交易完毕后立即断开连接. 长连接:客户端与服务端先建立连接, 连接建立后不断开,然后在进行报文发送和接收 ...

  9. Mac上安装pipenv时报错

    version:mac os Mojave 10.14.2 执行时报错: pip install pipenv 改为: sudo pip install pipenv --upgrade --igno ...

  10. Spring Boot + Spring Cloud 实现权限管理系统 后端篇(十五):系统服务监控

    系统服务监控 新建监控工程 新建Spring Boot项目,取名 kitty-monitor,结构如下. 添加项目依赖 添加 spring boot admin 的相关依赖. pom.xml < ...