motan入門環境構築手記

16413 ワード

注意事項:
1.           main    ,   tomcat   (       )
2.             web  ,    tomcat ,    servlet   ,  MotanSwitcherUtil.setSwitcherValue(MotanConstants.REGISTRY_HEARTBEAT_SWITCHER, true);         ,         ,        ,  motan-manager    ,         Unavailable Server,      false,        
3.                   tomcat   ,        tomcat ,              ,           ,      
4.       controller       motan  ,      Service,   Service      motan  ,     Controller   spring bean        

主なプロセスは次のとおりです.
一.新規3項目、それぞれ
 motan-api      api  
 motan-server  motan-api   ,  motan-api
 motan-client   motan-api   ,  motan-api

二.motan-apiは普通の工事でjarパッケージを生成して、1つのインタフェースしかありません
package motan.demo.api;
public interface IHelloWorld {
     public String hello(String name);
}

三.motan-serverはwebエンジニアリングで、
3.1 pom.xml構成は次のとおりです.

     4.0.0
     jzweb
     motan-server
     0.1
     war
     
          UTF-8
          1.7
          0.2.1
          4.3.3.RELEASE
     
     
          
          
              com.weibo
              motan-core
              ${motan.version}
          
          
              com.weibo
               motan-springsupport
              ${motan.version}
          
          
              com.weibo
               motan-transport-netty
              ${motan.version}
          
          
              com.weibo
               motan-registry-consul
              ${motan.version}
          
          
              com.weibo
               motan-registry-zookeeper
              ${motan.version}
          
          
              com.weibo
              motan-protocol-yar
              ${motan.version}
          
          
               org.apache.httpcomponents
              httpcore
              4.3.3
          
          
          
              slf4j-api
              org.slf4j
              1.7.11
          
          
              slf4j-log4j12
              org.slf4j
              1.7.11
          
          
              jzweb
              motan-api
              0.1
          
          
          
          
              org.springframework
              spring-web
              ${spring.version}
          
          
              org.springframework
              spring-context
              ${spring.version}
          
          
              org.springframework
              spring-webmvc
              ${spring.version}
          
          
              org.hibernate
               hibernate-validator
              5.3.0.Final
          
          
              commons-io
              commons-io
              2.5
          
          
              commons-codec
              commons-codec
              1.10
          
          
              commons-fileupload
              commons-fileupload
              1.3.2
          
     
     
          motan-server
          
              
                   org.apache.maven.plugins
                   maven-compiler-plugin
                   3.1
                   
                        ${project.build.jdk}
                        ${project.build.jdk}
                        ${project.build.sourceEncoding}
                   
              
              
              
                   org.apache.maven.plugins
                   maven-war-plugin
                   2.6
                   
                        false
                   
              
          
     


3.2 src/main/resourcesにspringを追加する.xml、内容は以下の通りです


     
     

    
    
    
    
    


3.3 src/main/resourcesディレクトリにspring-mvcを追加する.xmlプロファイル



  
  
  
    
    
  
  



3.4公式コピーlog 4 j.propertiesファイルからsrc/main/resourcesディレクトリへ
3.5このウェブプロジェクトのため、tomcatの下で実行するには、優雅な起動サービスを実現するために、サービスMotanSwitcherUtilを起動または停止するサーブレットContextListenerを定義する必要があります.
package motan.demo.server.server.listener;

import javax.servlet.ServletContextEvent;
import javax.servlet.ServletContextListener;
import com.weibo.api.motan.common.MotanConstants;
import com.weibo.api.motan.util.MotanSwitcherUtil;

public class MotanServletContextListener implements ServletContextListener {

    @Override
    public void contextDestroyed(ServletContextEvent arg0) {
    }

    @Override
    public void contextInitialized(ServletContextEvent event) {
        //    spring       ,         motan  
        MotanSwitcherUtil.setSwitcherValue(MotanConstants.REGISTRY_HEARTBEAT_SWITCHER, true);
    }

}
     ```
#####3.5     HelloWorldImpl  api      ,  ,  ,MotanService motan       
```java     
package motan.demo.server.api.impl;

import org.slf4j.Logger;
import org.slf4j.LoggerFactory;

import com.weibo.api.motan.config.springsupport.annotation.MotanService;
import motan.demo.api.IHelloWorld;

@MotanService
public class HelloWorldImpl implements IHelloWorld{

    private Logger log = LoggerFactory.getLogger(getClass());

    @Override
    public String hello(String name) {
        log.debug("hello,name");
        return "hello,"+name;
    }

}

3.6 Webの構成xmlファイル、内容は以下の通りです


    
    
    
        contextConfigLocation
        classpath*:spring.xml
    
    
    
        org.springframework.web.context.ContextLoaderListener
    
    
    
    
        encodingFilter
        org.springframework.web.filter.CharacterEncodingFilter
        
            encoding
            UTF-8
        
        
            forceEncoding
            true
        
    
    
        encodingFilter
        /*
    
    
    
        spring_mvc_dispatcher
        org.springframework.web.servlet.DispatcherServlet
        
            contextConfigLocation
            classpath*:spring-mvc.xml
        
        1
    
    
        spring_mvc_dispatcher
        
        /
    

          
    
         motan.demo.server.listener.MotanServletContextListener
    


3.7コントローラがない場合、tomcatサービスを起動する必要がない場合は、main関数を使用して直接起動できます.クラスは次のとおりです.
public class Main {
     public static void main(String[] args) {
            @SuppressWarnings("unused")
          ApplicationContext applicationContext = new ClassPathXmlApplicationContext(
                     new String[] {"classpath*:spring.xml"});
             MotanSwitcherUtil.setSwitcherValue(MotanConstants.REGISTRY_HEARTBEAT_SWITCHER, true);
             System.out.println("server start...");
     }
}

説明:この構成中1.zookeeperなどの情報はspringにあります.xmlで構成する2.rpc実装クラスは注釈方式を採用している
四.motan-clientプロジェクト、これもwebエンジニアリングです
4.1 web.xmlプロファイルはmotan-serverプロジェクトと同じです
4.2 spring.xmlプロファイルは次のように調整されます.


     
      
     
     
     
     
     
 
     
     

    
    
    
    
    


4.3 spring-mvc.xmlプロファイルはserverと同じです(controllerがなければ構成しなくてもいいです)
4.4サービスを定義し、motanサービスを参照する
@Service
public class SayHello {
     @MotanReferer
     private IHelloWorld hello;
     private Logger log = LoggerFactory.getLogger(getClass());
     public String say(String name){
          String result = hello.hello(name);
          System.out.println(result);
          log.debug(result);
          return result;
     }
}

4.5コントロールを定義し、サービスを参照する
@RestController
public class HelloController {
     @Autowired
     private SayHello hello;
     private Logger log = LoggerFactory.getLogger(getClass());
     @RequestMapping("/hello/{name}")
     @ResponseBody
     public String hello(@PathVariable("name") String name){
          String result = hello.say(name);
          System.out.println(result);
          log.debug(result);
          return result;
     }
}

4.6この項目にもコントロールがない場合、main関数を直接使用して起動し、呼び出しテストを行うこともできます.内容は以下の通りです.
public class Main {
     public static void main(String[] args) throws InterruptedException {
          ApplicationContext ctx = new ClassPathXmlApplicationContext(new String[] { "classpath:spring.xml" });
          SayHello service = (SayHello) ctx.getBean(SayHello.class);
          for (int i = 0; i < 10; i++) {
              service.say("motan" + i);
              Thread.sleep(1000);
          }
          System.out.println("motan demo is finish.");
          System.exit(0);
     }
}