motan入門環境構築手記
16413 ワード
注意事項:
主なプロセスは次のとおりです.
一.新規3項目、それぞれ
二.motan-apiは普通の工事でjarパッケージを生成して、1つのインタフェースしかありません
三.motan-serverはwebエンジニアリングで、
3.1 pom.xml構成は次のとおりです.
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を定義する必要があります.
3.6 Webの構成xmlファイル、内容は以下の通りです
3.7コントローラがない場合、tomcatサービスを起動する必要がない場合は、main関数を使用して直接起動できます.クラスは次のとおりです.
説明:この構成中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サービスを参照する
4.5コントロールを定義し、サービスを参照する
4.6この項目にもコントロールがない場合、main関数を直接使用して起動し、呼び出しテストを行うこともできます.内容は以下の通りです.
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);
}
}