Tars --- Hello World

服務端開發

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,添加插件

在生成代碼的時候會根據此插件來生成java

<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 ;內容也基本相似。具體以下:web

@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>

必定要正確配置接口和實現類的路徑,我以前就是路徑問題,花了好長時間才解決的~api

7,打成 war 包,這就是一個服務,準備上傳

在這裏須要上傳到管理平臺,若是沒有搭建好 tars 服務管理平臺,請參照上一篇博文app

點擊提交後到導航菜單「發佈管理」,選中服務,上傳 war 包,點擊發布webapp

客戶端開發

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 ,和生成源代碼包前綴async

<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 文件一致,拷貝便可maven

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

和服務端一致tcp

5,測試,直接運行該文件便可

同步調用ide

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!"); } }
相關文章
相關標籤/搜索