motan 搭建

motan 搭建安装 java 方法一 手动解压 JDK 的压缩包 然后设置环境变量 1 在 usr 目录下创建 java 目录 root localhost mkdir usr java root localhost cd usr java2 下载 jdk 然后解压 root localhostjav curl Ohttp download Oracle com otn

安装java

方法一:手动解压JDK的压缩包,然后设置环境变量

1.在/usr/目录下创建java目录

[root@localhost ~]# mkdir/usr/java

[root@localhost ~]# cd /usr/java

2.下载jdk,然后解压

[root@localhost java]# curl -O http://download.Oracle.com/otn-pub/java/jdk/7u79-b15/jdk-7u79-linux-x64.tar.gz 

[root@localhost java]# tar -zxvf jdk-7u79-linux-x64.tar.gz

3.设置环境变量

[root@localhost java]# vi /etc/profile

在profile中添加如下内容:

#set java environment

JAVA_HOME=/usr/java/jdk1.7.0_79

JRE_HOME=/usr/java/jdk1.7.0_79/jre

CLASS_PATH=.:$JAVA_HOME/lib/dt.jar:$JAVA_HOME/lib/tools.jar:$JRE_HOME/lib

PATH=$PATH:$JAVA_HOME/bin:$JRE_HOME/bin

export JAVA_HOME JRE_HOME CLASS_PATH PATH

让修改生效:

[root@localhost java]# source /etc/profile

4.验证JDK有效性

[root@localhost java]# java -version

java version “1.7.0_79”

Java(TM) SE Runtime Environment (build 1.7.0_79-b15)

Java HotSpot(TM) 64-Bit Server VM (build 24.79-b02, mixed mode)

 

方法二:用yum安装JDK

1.查看yum库中都有哪些jdk版本(暂时只发现了openjdk)

[root@localhost ~]# yum search java|grep jdk

ldapjdk-javadoc.x86_64 : Javadoc for ldapjdk

java-1.6.0-openjdk.x86_64 : OpenJDK Runtime Environment

java-1.6.0-openjdk-demo.x86_64 : OpenJDK Demos

java-1.6.0-openjdk-devel.x86_64 : OpenJDK Development Environment

java-1.6.0-openjdk-javadoc.x86_64 : OpenJDK API Documentation

java-1.6.0-openjdk-src.x86_64 : OpenJDK Source Bundle

java-1.7.0-openjdk.x86_64 : OpenJDK Runtime Environment

java-1.7.0-openjdk-demo.x86_64 : OpenJDK Demos

java-1.7.0-openjdk-devel.x86_64 : OpenJDK Development Environment

java-1.7.0-openjdk-javadoc.noarch : OpenJDK API Documentation

java-1.7.0-openjdk-src.x86_64 : OpenJDK Source Bundle

java-1.8.0-openjdk.x86_64 : OpenJDK Runtime Environment

java-1.8.0-openjdk-demo.x86_64 : OpenJDK Demos

java-1.8.0-openjdk-devel.x86_64 : OpenJDK Development Environment

java-1.8.0-openjdk-headless.x86_64 : OpenJDK Runtime Environment

java-1.8.0-openjdk-javadoc.noarch : OpenJDK API Documentation

java-1.8.0-openjdk-src.x86_64 : OpenJDK Source Bundle

ldapjdk.x86_64 : The Mozilla LDAP Java SDK

2.选择版本,进行安装

//选择1.7版本进行安装

[root@localhost ~]# yum install java-1.7.0-openjdk

//安装完之后,默认的安装目录是在: /usr/lib/jvm/java-1.7.0-openjdk-1.7.0.75.x86_64

3.设置环境变量

[root@localhost ~]# vi /etc/profile

在profile文件中添加如下内容

#set java environment

JAVA_HOME=/usr/lib/jvm/java-1.7.0-openjdk-1.7.0.75.x86_64

JRE_HOME=$JAVA_HOME/jre

CLASS_PATH=.:$JAVA_HOME/lib/dt.jar:$JAVA_HOME/lib/tools.jar:$JRE_HOME/lib

PATH=$PATH:$JAVA_HOME/bin:$JRE_HOME/bin

export JAVA_HOME JRE_HOME CLASS_PATH PATH

让修改生效

[root@localhost java]# source /etc/profile

4.验证(同上一方法)

方法三:用rpm安装JDK

1.下载rpm安装文件

[root@localhost ~]$ curl -O http://download.oracle.com/otn-pub/java/jdk/7u79-b15/jdk-7u79-linux-x64.rpm

2.使用rpm命令安装

[root@localhost  ~]# rpm -ivh jdk-7u79-linux-x64.rpm

3.设置环境变量

[root@localhost java]# vi /etc/profile

在打开的profile文件中添加如下内容

#set java environment

JAVA_HOME=/usr/java/jdk1.7.0_79

JRE_HOME=/usr/java/jdk1.7.0_79/jre

CLASS_PATH=.:$JAVA_HOME/lib/dt.jar:$JAVA_HOME/lib/tools.jar:$JRE_HOME/lib

PATH=$PATH:$JAVA_HOME/bin:$JRE_HOME/bin

export JAVA_HOME JRE_HOME CLASS_PATH PATH

让修改生效

[root@localhost java]# source /etc/profile

4.验证(同上一方法)

注:和yum安装类似,不用设置环境变量就可以运行java命令。rpm安装方式默认会把jdk安装到/usr/java/jdk1.7.0_79,然后通过三层链接,链接到/usr/bin,具体链接如下:

[root@localhost ~]# cd /bin

[root@localhost bin]# ll|grep java

lrwxrwxrwx. 1 root root    25 Mar 28 11:24 jar ->/usr/java/default/bin/jar

lrwxrwxrwx. 1 root root    26 Mar 28 11:24 java -> /usr/java/default/bin/java

lrwxrwxrwx. 1 root root    27 Mar 28 11:24 javac ->/usr/java/default/bin/javac

lrwxrwxrwx. 1 root root    29 Mar 28 11:24 javadoc ->/usr/java/default/bin/javadoc

lrwxrwxrwx. 1 root root    28 Mar 28 11:24 javaws ->/usr/java/default/bin/javaws

lrwxrwxrwx. 1 root root    30 Mar 28 11:24 jcontrol ->/usr/java/default/bin/jcontrol

[root@localhost bin]# cd /usr/java/

[root@localhost java]# ll

total 4

lrwxrwxrwx. 1 root root  16 Mar 28 11:24 default-> /usr/java/latest

drwxr-xr-x. 8 root root 4096 Mar 28 11:24 jdk1.7.0_79

lrwxrwxrwx. 1 root root  21 Mar 28 11:24 latest -> /usr/java/jdk1.7.0_79

方法四:Ubuntu 上使用apt-get安装JDK

1.查看apt库都有哪些jdk版本

root@linuxidc:~# apt-cache search java|grep jdk

default-jdk – Standard Java or Java compatible Development Kit

default-jdk-doc – Standard Java or Java compatible Development Kit (documentation)

gcj-4.6-jdk – gcj and classpath development tools for Java(TM)

gcj-jdk – gcj and classpath development tools for Java(TM)

openjdk-6-dbg – Java runtime based on OpenJDK (debugging symbols)

openjdk-6-demo – Java runtime based on OpenJDK (demos and examples)

openjdk-6-doc – OpenJDK Development Kit (JDK) documentation

openjdk-6-jdk – OpenJDK Development Kit (JDK)

openjdk-6-jre-lib – OpenJDK Java runtime (architecture independent libraries)

openjdk-6-source – OpenJDK Development Kit (JDK) source files

openjdk-7-dbg – Java runtime based on OpenJDK (debugging symbols)

openjdk-7-demo – Java runtime based on OpenJDK (demos and examples)

openjdk-7-doc – OpenJDK Development Kit (JDK) documentation

openjdk-7-jdk – OpenJDK Development Kit (JDK)

openjdk-7-source – OpenJDK Development Kit (JDK) source files

uwsgi-plugin-jvm-openjdk-6 – Java plugin for uWSGI (OpenJDK 6)

uwsgi-plugin-jwsgi-openjdk-6 – JWSGI plugin for uWSGI (OpenJDK 6)

openjdk-6-jre – OpenJDK Java runtime, using Hotspot JIT

openjdk-6-jre-headless – OpenJDK Java runtime, using Hotspot JIT (headless)

openjdk-7-jre – OpenJDK Java runtime, using Hotspot JIT

openjdk-7-jre-headless – OpenJDK Java runtime, using Hotspot JIT (headless)

openjdk-7-jre-lib – OpenJDK Java runtime (architecture independent libraries)

2.选择版本进行安装

root@linuxidc:~# apt-get install openjdk-7-jdk

3.设置环境变量

root@linuxidc:~# vi /etc/profile

在打开的profile文件中添加如下内容

#set java environment

JAVA_HOME=/usr/lib/jvm/java-1.7.0-openjdk-amd64

JRE_HOME=$JAVA_HOME/jre

CLASS_PATH=.:$JAVA_HOME/lib/dt.jar:$JAVA_HOME/lib/tools.jar:$JRE_HOME/lib

PATH=$PATH:$JAVA_HOME/bin:$JRE_HOME/bin

export JAVA_HOME JRE_HOME CLASS_PATH PATH

让修改生效

root@linuxidc:~# source /etc/profile

 

安装zookeeper

 

 1、创建 /usr/local/services/zookeeper 文件夹:

    mkdir -p /usr/local/services/zookeeper

 

2、进入到 /usr/local/services/zookeeper 目录中:

    cd /usr/local/services/zookeeper

 

3、下载 zookeeper-3.4.9.tar.gz:

    wget https://mirrors.tuna.tsinghua.edu.cn/apache/zookeeper/zookeeper-3.4.9/zookeeper-3.4.9.tar.gz

 

4、解压缩 zookeeper-3.4.9.tar.gz:

    tar -zxvf zookeeper-3.4.9.tar.gz

 

5、进入到 /usr/local/services/zookeeper/zookeeper-3.4.9/conf 目录中:

    cd zookeeper-3.4.9/conf/

 

6、复制 zoo_sample.cfg 文件的并命名为为 zoo.cfg:

    cp zoo_sample.cfg zoo.cfg

 

7、用 vim 打开 zoo.cfg 文件并修改其内容为如下:

    # The number of milliseconds of each tick

 

    # zookeeper 定义的基准时间间隔,单位:毫秒

    tickTime=2000

 

    # The number of ticks that the initial 

    # synchronization phase can take

    initLimit=10

    # The number of ticks that can pass between 

    # sending a request and getting an acknowledgement

    syncLimit=5

    # the directory where the snapshot is stored.

    # do not use /tmp for storage, /tmp here is just 

    # example sakes.

    # dataDir=/tmp/zookeeper

 

    # 数据文件夹

    dataDir=/usr/local/services/zookeeper/zookeeper-3.4.9/data

 

    # 日志文件夹

    dataLogDir=/usr/local/services/zookeeper/zookeeper-3.4.9/logs

 

    # the port at which the clients will connect

    # 客户端访问 zookeeper 的端口号

    clientPort=2181

 

    # the maximum number of client connections.

    # increase this if you need to handle more clients

    #maxClientCnxns=60

    #

    # Be sure to read the maintenance section of the 

    # administrator guide before turning on autopurge.

    #

    # http://zookeeper.apache.org/doc/current/zookeeperAdmin.html#sc_maintenance

    #

    # The number of snapshots to retain in dataDir

    #autopurge.snapRetainCount=3

    # Purge task interval in hours

    # Set to “0” to disable auto purge feature

    #autopurge.purgeInterval=1

 

8、保存并关闭 zoo.cfg 文件:

    

9、进入到 /usr/local/services/zookeeper/zookeeper-3.4.9/bin 目录中:

    cd ../bin/

 

10、用 vim 打开 /etc/ 目录下的配置文件 profile:

    vim /etc/profile

    并在其尾部追加如下内容:

 

    # idea – zookeeper-3.4.9 config start – 2016-09-08

 

    export ZOOKEEPER_HOME=/usr/local/services/zookeeper/zookeeper-3.4.9/

    export PATH=$ZOOKEEPER_HOME/bin:$PATH

    export PATH

 

    # idea – zookeeper-3.4.9 config start – 2016-09-08

 

11、使 /etc/ 目录下的 profile 文件即可生效:

    source /etc/profile

 

12、启动 zookeeper 服务:

    zkServer.sh start

    如打印如下信息则表明启动成功:

    ZooKeeper JMX enabled by default

    Using config: /usr/local/services/zookeeper/zookeeper-3.4.9/bin/../conf/zoo.cfg

    Starting zookeeper … STARTED

 

13、查询 zookeeper 状态:

    zkServer.sh status

 

14、关闭 zookeeper 服务:

    zkServer.sh stop

    如打印如下信息则表明成功关闭:

    ZooKeeper JMX enabled by default

    Using config: /usr/local/services/zookeeper/zookeeper-3.4.9/bin/../conf/zoo.cfg

    Stopping zookeeper … STOPPED

 

15、重启 zookeeper 服务:

    zkServer.sh restart

    如打印如下信息则表明重启成功:

    ZooKeeper JMX enabled by default

    Using config: /usr/local/services/zookeeper/zookeeper-3.4.9/bin/../conf/zoo.cfg

    ZooKeeper JMX enabled by default

    Using config: /usr/local/services/zookeeper/zookeeper-3.4.9/bin/../conf/zoo.cfg

    Stopping zookeeper … STOPPED

    ZooKeeper JMX enabled by default

    Using config: /usr/local/services/zookeeper/zookeeper-3.4.9/bin/../conf/zoo.cfg

    Starting zookeeper … STARTED

 

zookeeper集群

 

#修改配置文件zoo.cfg,如下:

egrep -v “^#|^$” zoo.cfg

tickTime=2000 initLimit=10 syncLimit=5 dataLogDir=/opt/zookeeper/logs dataDir=/opt/zookeeper/data clientPort=2181 autopurge.snapRetainCount=500 autopurge.purgeInterval=24 server.1= 192.168.1.148:2888:3888 server.2= 192.168.1.149:2888:3888 server.3= 192.168.1.150:2888:3888

#创建相关目录,三台节点都需要

mkdir -p /tmp/zookeeper/{logs,data}

#其余zookeeper节点安装完成之后,同步配置文件zoo.cfg。

 

cd /tmp/zookeeper/

 

创建ServerID标识

除了修改zoo.cfg配置文件外,zookeeper集群模式下还要配置一个myid文件,这个文件需要放在dataDir目录下。

这个文件里面有一个数据就是A的值(该A就是zoo.cfg文件中server.A=B:C:D中的A),在zoo.cfg文件中配置的dataDir路径中创建myid文件。

#在192.168.1.148服务器上面创建myid文件,并设置值为1,同时与zoo.cfg文件里面的server.1保持一致,如下

echo “1” > /tmp/zookeeper//myid

#在192.168.1.149服务器上面创建myid文件,并设置值为1,同时与zoo.cfg文件里面的server.2保持一致,如下

echo “2” > /tmp/zookeeper//myid

#在192.168.1.150服务器上面创建myid文件,并设置值为1,同时与zoo.cfg文件里面的server.3保持一致,如下

echo “3” > /tmp/zookeeper//myid

到此,相关配置已完成

 

启动zk,如果报错,检查zoo.cfg配置文件和iptbale防火墙

 

或者

mkdir -p /usr/local/services/zookeeper/zookeeper-3.4.9/data

 

cd /usr/local/services/zookeeper/zookeeper-3.4.9/data

 

echo “2” > /usr/local/services/zookeeper/zookeeper-3.4.9/data/myid

 

重启zk

注:官网上是maven项目,这里把它都变成了web项,官网上用maven只创建了一个maven的接口,然后生产者,消费者去依赖这个接口,这里是在消费者和生产者中都创建了一个相同的接口

motan 生产者配置

已mian方法启动 和 web 方式启动

创建接口

package com.business.user.service;

 

import java.util.List;

 

import com.business.user.domain.User;

/

* @ClassName: UserService

* @Description: User服务接口

*

*/

public interface UserServices {

/

* 批量删除

* @param ids 要删除的UserID集合

* @return 删除成功的记录生活

*/

public String hello(String name);

}

 

实现类UserServiceImpls实现接口,如下,其中,MotanService是motan的服务注册注解

 

package com.business.user.service.impl;

import com.business.user.service.UserServices;

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

 

 

/

* @ClassName: UserServiceImpl

* @Description: User服务实现类

*

*/

 

@MotanService

public class UserServiceImpls implements UserServices {

@Override

public String hello(String name) {

return “hello,”+name;

}

}

如果没有controller,不需要启动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…”); } }

 

 

 

配置web.xml文件 (已main方法启动不需要配置web)


xsi:schemaLocation=”http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-app_3_0.xsd”

id=”WebApp_ID” version=”3.0″>

contextConfigLocation

classpath:resources/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.server.listener.MotanServletContextListener

 

在src/main/resources中添加spring.xml

 

 


xmlns:xsi=”http://www.w3.org/2001/XMLSchema-instance”

xmlns:context=”http://www.springframework.org/schema/context”

xmlns:motan=”http://api.weibo.com/schema/motan”

xsi:schemaLocation=”http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans-2.5.xsd

http://api.weibo.com/schema/motan http://api.weibo.com/schema/motan.xsd

http://www.springframework.org/schema/context

http://www.springframework.org/schema/context/spring-context-2.5.xsd”>


maxServerConnection=”80000″ maxContentLength=””

maxWorkerThread=”800″ minWorkerThread=”20″/>


group=”lyncc-motan-demo-rpc” accessLog=”true” shareChannel=”true” module=”motan-demo-rpc”

application=”myMotanDemo” registry=”registry” id=”serviceBasicConfig”/>

 

 

为了实现优雅的起启服务,需要定义一个ServletContextListener来启动或关闭服务MotanSwitcherUtil,经测试,如果不配置的话,通过servlet发布的服务将无法使用

 

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 {

 

public void contextDestroyed(ServletContextEvent arg0) {

}

@Override

public void contextInitialized(ServletContextEvent event) {

System.out.println(“”);

MotanSwitcherUtil.setSwitcherValue(MotanConstants.REGISTRY_HEARTBEAT_SWITCHER, true);

}

 

}

 

 

在src/main/resources目录中添加spring-mvc.xml配置文件(如果项目是 spingmvc 需要访问controller 则配置,否则可以不配)

 


xmlns:context=”http://www.springframework.org/schema/context”

xmlns:mvc=”http://www.springframework.org/schema/mvc”

xmlns:xsi=”http://www.w3.org/2001/XMLSchema-instance”

xmlns:util=”http://www.springframework.org/schema/util”

xsi:schemaLocation=”http://www.springframework.org/schema/beans

http://www.springframework.org/schema/beans/spring-beans.xsd

http://www.springframework.org/schema/context

http://www.springframework.org/schema/context/spring-context.xsd

http://www.springframework.org/schema/mvc

http://www.springframework.org/schema/mvc/spring-mvc.xsd

http://www.springframework.org/schema/util

http://www.springframework.org/schema/util/spring-util.xsd “>

 

 

 

 

motan 消费者配置

已mian方法启动 和 web 方式启动

 

创建接口(要和生产者提供的接口相同,包名也需要相同)

package com.business.user.service;

 

import java.util.List;

 

import com.business.user.domain.User;

/

* @ClassName: UserService

* @Description: User服务接口

*

*/

public interface UserServices {

/

* 批量删除

* @param ids 要删除的UserID集合

* @return 删除成功的记录生活

*/

public String hello(String name);

}

 

 

 定义一个Service,引用motan服务

 

package com.business.user.service.impl;

import org.springframework.stereotype.Service;

import com.business.user.service.UserServices;

import com.weibo.api.motan.config.springsupport.annotation.MotanReferer;

/

* @ClassName: UserServiceImpl

* @Description: User服务实现类

*

*/

 

@Service

public class UserServiceImpls {

@MotanReferer

private UserServices userServices;

public String say(String name){

System.out.println(“motan”+”9999″+”ooooooo”);

System.out.println(name);

String result=userServices.hello(“woaini”);

System.out.println(result);

return result;

}

 

}

 

定义controller,引用Service

@Autowired

private UserServiceImpls userServiceImpls;

/

* 批量删除记录

*/

public void delete() {

String msg = “”;

if (ids != null && ids.length > 0){

System.out.println(userServiceImpls.say(“binibin”));

int s = userService.deleteByIds(ids);

msg = “删除成功” + s + “条记录”;

} else {

msg = “请选择要删除的记录!”;

}

JSONOuter().writeSuccessMsg(getOut(), msg);

}

 

 

如果这个项目也没有controller,则也可以直接使用main函数启动, 进行调用测试,内容如下

package com;

import org.springframework.context.ApplicationContext;

import org.springframework.context.support.ClassPathXmlApplicationContext;

 

import com.business.user.service.UserServices;

 

public class ClientStart {

public static void main(String[] args) {

ApplicationContext ctx = new ClassPathXmlApplicationContext(“classpath:spring/spring-server.xml”);

UserServices service = (UserServices) ctx.getBean(“remoteService”);

for(int i = 0;i< 50;i++){

System.out.println(service.hello(“motan”));

}

}

}

 

实现优雅的起启服务

public class MotanServletContextListener implements ServletContextListener {

 

public void contextDestroyed(ServletContextEvent arg0) {

}

@Override

public void contextInitialized(ServletContextEvent event) {

System.out.println(“”);

MotanSwitcherUtil.setSwitcherValue(MotanConstants.REGISTRY_HEARTBEAT_SWITCHER, true);

}

 

 web.xml配置文件与motan-server项目相同

 

集成马场 web.xml


xmlns=”http://java.sun.com/xml/ns/j2ee” xmlns:xsi=”http://www.w3.org/2001/XMLSchema-instance”

xsi:schemaLocation=”http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd”>

contextConfigLocation

classpath*:spring/spring-*.xml

org.springframework.web.context.ContextLoaderListener

log4jExposeWebAppRoot

false

log4jConfigLocation

classpath:log4j.properties

webAppRootKey

horseFarm.root

 

 


300

 

org.springframework.web.util.Log4jConfigListener


UploadServlet


com.webuploader.UploadServlet


UploadServlet


/UploadServlet.do


WxMsgPushHandleNew


com.wx.push.WxMsgPushHandleNew


WxMsgPushHandleNew


/WxMsgPushHandleNew.do


WxNativePay


com.wx.pay.twocode.WxNativePay


WxNativePay


/twoCodePay.do


requestEncodefilter

com.uniontrust.framework.web.filter.RequestEncodeFilter

encoding

UTF-8


requestEncodefilter


*.action


requestEncodefilter


*.jsp


404


/page/pc/404.html


responseEncodefilter

com.uniontrust.framework.web.filter.ResponseEncodeFilter

encoding

UTF-8


responseEncodefilter


*.action


responseEncodefilter


*.jsp


responseEncodefilter


*.html

 


struts2


org.apache.struts2.dispatcher.ng.filter.StrutsPrepareAndExecuteFilter

configProviders

com.uniontrust.framework.web.InitConfigurationProvider


struts2


*.action

 


html


text/html;charset=UTF-8


htm


text/html;charset=UTF-8


ReceiveResp1


com.bill99.plfk.servlet.ReceiveResp1


ReceiveResp2


com.bill99.plfk.servlet.ReceiveResp2


SendBatch


com.bill99.plfk.test.send.SendBatch

 

 

 


ReceiveResp1


/servlet/receive1


ReceiveResp2


/servlet/receive2


SendBatch


/servlet/senddata

motan.demo.server.server.listener.MotanServletContextListener

 

 web.xml配置文件与motan-server项目相同

 

 spring.xml配置文件调整如下:


xmlns:xsi=”http://www.w3.org/2001/XMLSchema-instance”

xmlns:context=”http://www.springframework.org/schema/context”

xmlns:motan=”http://api.weibo.com/schema/motan”

xmlns:mvc=”http://www.springframework.org/schema/mvc”

xsi:schemaLocation=”http://www.springframework.org/schema/beans

http://www.springframework.org/schema/beans/spring-beans-2.5.xsd

http://api.weibo.com/schema/motan

http://api.weibo.com/schema/motan.xsd

http://www.springframework.org/schema/context

http://www.springframework.org/schema/context/spring-context.xsd

http://www.springframework.org/schema/mvc

http://www.springframework.org/schema/mvc/spring-mvc.xsd”>


loadbalance=”roundrobin” maxClientConnection=”10″ minClientConnection=”2″/>


retries=”2″ group=”lyncc-motan-demo-rpc” module=”motan-demo-rpc”

application=”myMotanDemo” protocol=”motan” registry=”registry”

id=”motantestClientBasicConfig” throwException=”false” check=”true”/>

 

spring-mvc.xml配置文件与server相同(如果没有controller,也可以不用配置)如果项目不是springmvc的,配置会报错,jar包冲突,jar版本过低等。

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请联系我们举报,一经查实,本站将立刻删除。

发布者:全栈程序员-站长,转载请注明出处:https://javaforall.net/228887.html原文链接:https://javaforall.net

(0)
上一篇 2026年3月16日 下午5:58
下一篇 2026年3月16日 下午5:58


相关推荐

  • 白盒测试和黑盒测试的区别

    白盒测试和黑盒测试的区别白盒测试 是指实际运行被测程序 通过程序的源代码进行测试而不使用用户界面 这种类型的测试需要从代码句法发现内部代码在算法 溢出 路径和条件等方面的缺点或者错误 进而加以修正 白盒测试把测试对象看作一个打开的盒子 黑盒测试 又称功能测试 数据驱动测试或基于规格说明的测试 是通过使用整个软件或某种软件功能来严格地测试 而并没有通过检查程序的源代码 或者很清楚地了解该软件的源代码程序具体是

    2025年8月10日
    4
  • TestDirector概念

    TestDirector概念TestDirector nbsp nbsp TestDirector 是业界第一个基于 Web 的测试管理解决方案 它可以在您公司内部进行全球范围的测试协调 TestDirector 能够在一个独立的应用系统中提供需求管理功能 并且可以把测试需求管理与测试计划 测试日程控制 测试执行和错误跟踪等功能融合为一体 因此极大地加速了测试的进程 电子商务正改变着许多公司在如何规划并建立 IT 系统方面的决定 常常在一

    2026年3月19日
    2
  • rpc接口测试方法_rpc服务接口测试

    rpc接口测试方法_rpc服务接口测试一、项目需求开发文档已明确要压测的接口是rpc接口,并给出了rpc接口和依赖,如下:RPC接口:<dependency><groupId>com.xueqiu.snowflake</groupId><artifactId>usercenter-client</artifactId><version>2.13.5</version></dependency>调用示例:List&

    2022年10月13日
    4
  • cpu,核心数,线程抢占式分配理解,时间分片机制总结,进程和线程关系及区别,[通俗易懂]

    cpu,核心数,线程抢占式分配理解,时间分片机制总结,进程和线程关系及区别,[通俗易懂]cpu,核心数,线程抢占式分配理解,时间分片机制总结,进程和线程关系及区别,

    2022年4月23日
    266
  • 左连接 ,右连接,内连接和全外连接的4者区别[通俗易懂]

    左连接 ,右连接,内连接和全外连接的4者区别[通俗易懂]基本定义:  leftjoin(左连接):返回包括左表中的所有记录和右表中连接字段相等的记录。  rightjoin(右连接):返回包括右表中的所有记录和左表中连接字段相等的记录。  innerjoin(等值连接或者叫内连接):只返回两个表中连接字段相等的行。  fulljoin(全外连接):返回左右表中所有的记录和左右表中连接字段相等的记录。举个例子: …

    2022年5月24日
    43
  • 矩阵股份:公司未有与腾讯元宝混元合作

    矩阵股份:公司未有与腾讯元宝混元合作

    2026年3月12日
    3

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

关注全栈程序员社区公众号