动力节点首页 全国咨询热线:400-8080-105

绑定手机号,登录
手机号

验证码

微信登录
手机号登录
手机号

验证码

微信登录与注册
微信扫码登录与注册

扫码关注微信公众号完成登录与注册
手机号登录
首页 > 文章

Dubbo启动及配置

07-12 11:13 727浏览
举报 T字号
  • 大字
  • 中字
  • 小字

Tomcat+Dubbo安装

1.将tomcat的webapps目录下的所有文件清空

讲Dubbo管理控制台的程序dubbo-admin-2.5.3.war放到webapps中,并且解压命名为ROOT。

unzip dubbo.war -d ROOT

2.配置dubbo.properties

将以下地址改为你Zookeeper注册的地址。前提:已经安装过Zookeeper。

dubbo.registry.address=zookeeper://192.168.137.128:2181

3.启动tomcat

浏览:http://192.168.137.128:8080/出现以下界面

PS:JDK最好使用1.7版本,因为dubbo使用的Spring版为2.X 具体原因也说不清楚,最早部署时也是使用JDK1.8 启动tomcat时报错:

RROR context.ContextLoader - Context initialization failed org.springframework.beans.factory.BeanCreationException: Error creating bean with name 'uriBrokerService': Cannot create inner bean '(inner bean)' of type [com.alibaba.citrus.service.uribroker.impl.URIBrokerServiceImpl$URIBrokerInfo] while setting bean property 'brokers' with key [0]; nested excepti on is org.springframework.beans.factory.BeanCreationException: Error creating bean with name '(inner bean)#25': Cannot create inner bean 'server' of type [com.alibaba.citrus.service.uribroker.uri.GenericURIBroker] while setting constructor argument; nested exception is org.springframework.beans.fact ory.BeanCreationException: Error creating bean with name 'server': Error setting property values; nested exception is org.springframework.beans.NotWritablePropertyException: Invalid property 'URIType' of bean class [com.alibaba.citrus.service.uribroker.uri.GenericURIBroker]: Bean property 'URIType' is not writable or has an invalid setter method. Does the parameter type of the setter match the return type of the getter?

为了省事我是将JDK降到1.7 。

dubbo官网com.alibaba.dubbo.container.Main 启动服务配置

相应的配置已经配置好了,接下来介绍使用dubbo官网com.alibaba.dubbo.container.Main 启动服务实现优雅关机

pop.xml打包配置

<build>
        <finalName>pay-service-bank</finalName> <!--包名称 -->
        <resources>
            <resource>
                <targetPath>${project.build.directory}/classes</targetPath>
                <directory>src/main/resources</directory>
                <filtering>true</filtering>
                <includes><!-- 配置文件信息 -->
                    <include>**/*.xml</include>
                    <include>**/*.properties</include>
                </includes>
            </resource>
            <resource>
                <targetPath>${project.build.directory}/classes/META-INF/spring</targetPath>
                <directory>src/main/resources/spring</directory>
                <filtering>true</filtering>
                <includes>
                    <include>spring-context.xml</include>
                </includes>
            </resource>
        </resources>
        <pluginManagement>
            <plugins>
                <plugin>
                    <groupId>org.eclipse.m2e</groupId>
                    <artifactId>lifecycle-mapping</artifactId>
                    <version>1.0.0</version>
                    <configuration>
                        <lifecycleMappingMetadata>
                            <pluginExecutions>
                                <pluginExecution>
                                    <pluginExecutionFilter>
                                        <groupId>org.apache.maven.plugins</groupId>
                                        <artifactId>maven-dependency-plugin</artifactId>
                                        <versionRange>[2.0,)</versionRange>
                                        <goals>
                                            <goal>copy-dependencies</goal>
                                        </goals>
                                    </pluginExecutionFilter>
                                    <action>
                                        <ignore />
                                    </action>
                                </pluginExecution>
                            </pluginExecutions>
                        </lifecycleMappingMetadata>
                    </configuration>
                </plugin>
            </plugins>
        </pluginManagement>
        <plugins>
            <!-- 打包jar文件时,配置manifest文件,加入lib包的jar依赖 -->
            <plugin>
                <groupId>org.apache.maven.plugins</groupId>
                <artifactId>maven-jar-plugin</artifactId>
                <configuration>
                    <classesDirectory>target/classes/</classesDirectory>
                    <archive>
                        <manifest>
                            <mainClass>com.alibaba.dubbo.container.Main</mainClass>
                            <!-- 打包时 MANIFEST.MF文件不记录的时间戳版本 -->
                            <useUniqueVersions>false</useUniqueVersions>
                            <addClasspath>true</addClasspath>
                            <classpathPrefix>lib/</classpathPrefix>
                        </manifest>
                        <manifestEntries>
                            <Class-Path>.</Class-Path>
                        </manifestEntries>
                    </archive>
                </configuration>
            </plugin>
            <plugin>
                <groupId>org.apache.maven.plugins</groupId>
                <artifactId>maven-dependency-plugin</artifactId>
                <executions>
                    <execution>
                        <id>copy-dependencies</id>
                        <phase>package</phase>
                        <goals>
                            <goal>copy-dependencies</goal>
                        </goals>
                        <configuration>
                            <type>jar</type>
                            <includeTypes>jar</includeTypes>
                            <outputDirectory>
                                ${project.build.directory}/lib
                            </outputDirectory>
                        </configuration>
                    </execution>
                </executions>
            </plugin>
        </plugins>
    </build>

ps :spring-context.xml文件中对其他xml的引入地址要写成:

<import resource="classpath:spring/spring-mybatis.xml" />
<import resource="classpath:spring/applicationContext.xml" />

原因是我们在打包配置时将spring-context.xml文件复制到META-INF/spring下,如果还是使用相对地址配置就出错了找不到文件

OK打包部署。

自定义Dubbo服务端维护的shell脚本

#! /bin/bash
usage(){ 
   echo "----------USAGE:--------------------"
   echo "provider  start"
   echo "provider  stop"
   echo "provider  start  xx"
   echo "provider  stop   xx"
   echo "-------------------------------------"
} 
stopAll(){ 
    procids=`ps -fe|grep jar |grep -v grep |grep -v tomcat| awk '{print $2}'`
    if [ -z "$procids" ]; then
        echo  tip:  no process  found
    else
        for procid in $procids
          do
               kill $procid
          done
    fi
} 
startAll(){
    echo '....'
    jars=`ls *.jar`
    if [ -z "$jars" ]; then
        echo top:  no jar found,please check if you are in correct directory...
    else
        for jarName in $jars
        do
            #logName=`echo ${jarName/jar/log}`
            logName='all.log'
            nohup java $JAVA_OPTS -jar $jarName >>$logName 2>1 &
        done
    fi;
} 
cmd=$1
module=$2 
JAVA_OPTS="-server -Xms4096m  -Xmx4096m  -verbose:gc  -XX:+PrintGCDetails  -XX:PermSize=256M -XX:MaxPermSize=512m" 
if [ $# -gt 2 ] || [ $# -lt 1 ];  then
   usage;
elif [ $cmd != 'start' ] &&  [ $cmd != 'stop' ]; then
   usage;
else
   case $cmd  in
          'start')
                                if [ $#  -eq 1 ] ; then
                                       echo start all provider ............
                                       procids=`ps -fe|grep jar |grep -v grep |grep -v tomcat| awk '{print $2}'`
                                       if [ -z "$procids" ]; then
                                             echo ''   
                                       else
                                              stopAll
                                       fi;
                                       startAll
                                else
                                       echo start $module  ........
                                       echo
                                       if [ -n $module".jar" ];  then
                                                procid=`ps -fe|grep $module".jar" |grep -v grep | awk '{print $2}'`
                                                echo $procid
                                                if [ -z "$procid" ]; then
                                                    #nohup java -jar $module".jar" >$module".log" &
                                                    nohup java $JAVA_OPTS -jar $module".jar" >>all.log 2>1 &
                                                else
                                                    echo  tip:     $module".jar"  has started already.  don not  start again!
                                                fi
                                       else
                                                echo $module".jar not exists"
                                       fi
                                       echo
                                fi
                                ;;
           'stop')
                                if [ $#  -eq 1 ] ; then
                                       echo stop all provider ............
                                       stopAll
                                else
                                       echo stop  $module  ........
                                       echo
                                       procid=`ps -fe|grep $module".jar" |grep -v grep | awk '{print $2}'`
                                       if [ -z "$procid" ]; then
                                                echo   tip:   java $module".jar"  process not exists;
                                       else
                                                kill $procid
                                       fi
                                       echo
                                fi
                                ;;
   esac
fi

ps:Dubbo是通过JDK的ShutdownHook来完成优雅停机的,所以如果用户使用"kill -9 PID"等强制关闭指令,是不会执行优雅停机的,只有通过"kill PID"时,才会执行。

Maven内置变量说明:

${basedir} 项目根目录

${project.build.directory} 构建目录,缺省为target

${project.build.outputDirectory} 构建过程输出目录,缺省为target/classes

${project.build.finalName} 产出物名称,缺省为${project.artifactId}-${project.version}

${project.packaging} 打包类型,缺省为jar

${project.xxx} 当前pom文件的任意节点的内容

动力节点在线课程涵盖零基础入门,高级进阶,在职提升三大主力内容,覆盖Java从入门到就业提升的全体系学习内容。全部Java视频教程免费观看,相关学习资料免费下载!对于火爆技术,每周一定时更新!如果想了解更多相关技术,可以到动力节点在线免费观看Dubbo框架视频教程学习哦!

0人推荐
共同学习,写下你的评论
0条评论
代码小兵124
程序员代码小兵124

99篇文章贡献336699字

相关课程 更多>

作者相关文章更多>

推荐相关文章更多>

Java面试题及答案整理

提枪策马乘胜追击04-21 20:01

Spring常见面试题

代码小兵92504-17 16:07

Java零基础实战项目——五子棋

代码小兵98804-25 13:57

Java string类详解

杨晶珍05-11 14:54

6道经典算法面试题

杨晶珍05-12 16:39

发评论

举报

0/150

取消