dubbo-----------------------------------------------------------
项目结构
incubator-dubbo-dubbo-2.6.0
sc
sc-pay
sc-pay-client
sc-pay-common
sc-pay-dao
sc-pay-service
sc-order
sc-order-client
sc-order-common
sc-order-dao
sc-order-service
https://github.com/apache/incubator-dubbo/tree/dubbo-2.6.0
依赖
sc pom.xml
4.0.0
<groupId>com.sc</groupId>
<artifactId>sc</artifactId>
<packaging>pom</packaging>
<version>1.0-SNAPSHOT</version>
<build>
<plugins>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-compiler-plugin</artifactId>
<configuration>
<source>8</source>
<target>8</target>
</configuration>
</plugin>
</plugins>
</build>
<modules>
<module>sc-pay</module>
<module>sc-order</module>
</modules>
<properties>
<project.version>1.0-SNAPSHOT</project.version>
<project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
<maven.compiler.source>1.7</maven.compiler.source>
<maven.compiler.target>1.7</maven.compiler.target>
<!-- 常量信息 -->
<project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
<hadoop.version>2.7.3</hadoop.version>
<hbase.version>1.2.6</hbase.version>
<hive.version>2.3.3</hive.version>
<uasparser.version>0.6.1</uasparser.version>
<slf4j.version>1.7.25</slf4j.version>
<log4j.version>1.2.17</log4j.version>
<spring.version>4.3.18.RELEASE</spring.version>
</properties>
<dependencyManagement>
<dependencies>
<!-- spring -->
<!-- Spring依赖 -->
<!-- 1.Spring核心依赖 -->
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-core</artifactId>
<version>${spring.version}</version>
</dependency>
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-beans</artifactId>
<version>${spring.version}</version>
</dependency>
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-context</artifactId>
<version>${spring.version}</version>
</dependency>
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-context-support</artifactId>
<version>${spring.version}</version>
</dependency>
<!--Spring aop-->
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-aop</artifactId>
<version>${spring.version}</version>
</dependency>
<dependency>
<groupId>org.aspectj</groupId>
<artifactId>aspectjweaver</artifactId>
<version>1.9.1</version>
</dependency>
<!-- 2.Spring dao依赖 -->
<!-- spring-jdbc包括了一些如jdbcTemplate的工具类 -->
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-jdbc</artifactId>
<version>${spring.version}</version>
</dependency>
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-tx</artifactId>
<version>${spring.version}</version>
</dependency>
<!-- 3.Spring web依赖 -->
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-web</artifactId>
<version>${spring.version}</version>
</dependency>
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-webmvc</artifactId>
<version>${spring.version}</version>
</dependency>
<!-- 4.Spring test依赖:方便做单元测试和集成测试 -->
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-test</artifactId>
<version>${spring.version}</version>
</dependency>
<!--mybatis-->
<dependency>
<groupId>org.mybatis</groupId>
<artifactId>mybatis</artifactId>
<version>3.4.6</version>
</dependency>
<dependency>
<groupId>org.mybatis</groupId>
<artifactId>mybatis-spring</artifactId>
<version>1.3.2</version>
</dependency>
<dependency>
<groupId>com.alibaba</groupId>
<artifactId>druid</artifactId>
<version>1.1.7</version>
</dependency>
<dependency>
<groupId>commons-fileupload</groupId>
<artifactId>commons-fileupload</artifactId>
<version>1.3.2</version>
</dependency>
<dependency>
<groupId>org.apache.httpcomponents</groupId>
<artifactId>httpclient</artifactId>
<version>4.5.5</version>
</dependency>
<!-- servlet -->
<dependency>
<groupId>javax.servlet</groupId>
<artifactId>servlet-api</artifactId>
<version>2.5</version>
</dependency>
<dependency>
<groupId>javax.servlet</groupId>
<artifactId>jstl</artifactId>
<version>1.2</version>
</dependency>
<dependency>
<groupId>mysql</groupId>
<artifactId>mysql-connector-java</artifactId>
<version>8.0.11</version>
</dependency>
<dependency>
<groupId>com.fasterxml.jackson.core</groupId>
<artifactId>jackson-databind</artifactId>
<version>2.8.8.1</version>
</dependency>
<dependency>
<groupId>com.alibaba</groupId>
<artifactId>fastjson</artifactId>
<version>1.2.8</version>
</dependency>
<dependency>
<groupId>com.alibaba</groupId>
<artifactId>dubbo</artifactId>
<version>2.6.3</version>
</dependency>
<dependency>
<groupId>org.apache.curator</groupId>
<artifactId>curator-client</artifactId>
<version>2.8.0</version>
</dependency>
<dependency>
<groupId>org.apache.curator</groupId>
<artifactId>curator-recipes</artifactId>
<version>2.7.0</version>
</dependency>
<dependency>
<groupId>io.netty</groupId>
<artifactId>netty-all</artifactId>
<version>4.1.6.Final</version>
</dependency>
<dependency>
<groupId>log4j</groupId>
<artifactId>log4j</artifactId>
<version>${log4j.version}</version>
</dependency>
<dependency>
<groupId>org.slf4j</groupId>
<artifactId>slf4j-api</artifactId>
<version>${slf4j.version}</version>
</dependency>
<dependency>
<groupId>org.slf4j</groupId>
<artifactId>slf4j-log4j12</artifactId>
<version>${slf4j.version}</version>
</dependency>
<dependency>
<groupId>org.mortbay.jetty</groupId>
<artifactId>jetty</artifactId>
<version>6.1.26</version>
</dependency>
<dependency>
<groupId>org.jboss.resteasy</groupId>
<artifactId>resteasy-client</artifactId>
<version>3.0.19.Final</version>
</dependency>
<dependency>
<groupId>org.jboss.resteasy</groupId>
<artifactId>resteasy-spring</artifactId>
<version>3.0.7.Final</version>
</dependency>
<dependency>
<groupId>org.jboss.resteasy</groupId>
<artifactId>resteasy-jackson-provider</artifactId>
<version>3.0.7.Final</version>
</dependency>
<dependency>
<groupId>javax.validation</groupId>
<artifactId>validation-api</artifactId>
<version>1.1.0.Final</version>
</dependency>
<dependency>
<groupId>ch.qos.logback</groupId>
<artifactId>logback-core</artifactId>
<version>1.1.3</version>
</dependency>
<dependency>
<groupId>ch.qos.logback</groupId>
<artifactId>logback-access</artifactId>
<version>1.1.3</version>
</dependency>
<dependency>
<groupId>ch.qos.logback</groupId>
<artifactId>logback-classic</artifactId>
<version>1.1.3</version>
</dependency>
<!-- 项目依赖 -->
<dependency>
<groupId>org.apache.hadoop</groupId>
<artifactId>hadoop-client</artifactId>
<version>${hadoop.version}</version>
</dependency>
<dependency>
<groupId>org.apache.hadoop</groupId>
<artifactId>hadoop-common</artifactId>
<version>${hadoop.version}</version>
</dependency>
<dependency>
<groupId>org.apache.hadoop</groupId>
<artifactId>hadoop-hdfs</artifactId>
<version>${hadoop.version}</version>
</dependency>
<dependency>
<groupId>org.apache.hadoop</groupId>
<artifactId>hadoop-auth</artifactId>
<version>${hadoop.version}</version>
</dependency>
<dependency>
<groupId>org.apache.hbase</groupId>
<artifactId>hbase-client</artifactId>
<version>${hbase.version}</version>
</dependency>
<dependency>
<groupId>org.apache.hbase</groupId>
<artifactId>hbase-server</artifactId>
<version>${hbase.version}</version>
</dependency>
<dependency>
<groupId>org.apache.hive</groupId>
<artifactId>hive-exec</artifactId>
<version>${hive.version}</version>
</dependency>
<dependency>
<groupId>com.sc</groupId>
<artifactId>sc-pay-service</artifactId>
<version>${project.version}</version>
</dependency>
<dependency>
<groupId>com.sc</groupId>
<artifactId>sc-pay-client</artifactId>
<version>${project.version}</version>
</dependency>
<dependency>
<groupId>com.sc</groupId>
<artifactId>sc-pay-common</artifactId>
<version>${project.version}</version>
</dependency>
<dependency>
<groupId>com.sc</groupId>
<artifactId>sc-pay-dao</artifactId>
<version>${project.version}</version>
</dependency>
</dependencies>
</dependencyManagement>
sc-pay pom.xml
<?xml version="1.0" encoding="UTF-8"?><parent>
<artifactId>sc</artifactId>
<groupId>com.sc</groupId>
<version>1.0-SNAPSHOT</version>
</parent>
<modelVersion>4.0.0</modelVersion>
<groupId>com.sc</groupId>
<artifactId>sc-pay</artifactId>
<packaging>pom</packaging>
<version>1.0-SNAPSHOT</version>
<modules>
<module>sc-pay-service</module>
<module>sc-pay-client</module>
<module>sc-pay-dao</module>
<module>sc-pay-common</module>
</modules>
sc-pay-client pom.xml
<?xml version="1.0" encoding="UTF-8"?>
sc-pay
com.sc
1.0-SNAPSHOT
4.0.0
<artifactId>sc-pay-client</artifactId>
<dependencies>
<dependency>
<groupId>com.sc</groupId>
<artifactId>sc-pay-common</artifactId>
</dependency>
<dependency>
<groupId>org.jboss.resteasy</groupId>
<artifactId>resteasy-client</artifactId>
</dependency>
<dependency>
<groupId>org.jboss.resteasy</groupId>
<artifactId>resteasy-spring</artifactId>
</dependency>
<dependency>
<groupId>org.jboss.resteasy</groupId>
<artifactId>resteasy-jackson-provider</artifactId>
</dependency>
</dependencies>
sc-pay-service pom.xml
<?xml version="1.0" encoding="UTF-8"?>
sc-pay
com.sc
1.0-SNAPSHOT
4.0.0
<artifactId>sc-pay-service</artifactId>
<build>
<plugins>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-deploy-plugin</artifactId>
<version>2.8.2</version>
<configuration>
<skip>true</skip>
</configuration>
</plugin>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-jar-plugin</artifactId>
<version>2.4</version>
</plugin>
<plugin>
<artifactId>maven-assembly-plugin</artifactId>
<configuration>
<descriptor>src/main/assembly/assembly.xml</descriptor>
</configuration>
<executions>
<execution>
<id>make-assembly</id>
<phase>package</phase>
<goals>
<goal>single</goal>
</goals>
</execution>
</executions>
</plugin>
<plugin>
<artifactId>maven-compiler-plugin</artifactId>
<version>2.3.2</version>
<configuration>
<source>1.8</source>
<target>1.8</target>
<encoding>UTF-8</encoding>
</configuration>
<dependencies>
<dependency>
<groupId>org.codehaus.plexus</groupId>
<artifactId>plexus-compiler-javac</artifactId>
<version>1.8.1</version>
</dependency>
</dependencies>
</plugin>
<plugin>
<artifactId>maven-resources-plugin</artifactId>
<version>2.6</version>
<configuration>
<encoding>UTF-8</encoding>
</configuration>
</plugin>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-surefire-plugin</artifactId>
<version>2.10</version>
<configuration>
<skip>true</skip>
<testFailureIgnore>true</testFailureIgnore>
</configuration>
</plugin>
</plugins>
</build>
<dependencies>
<dependency>
<groupId>com.alibaba</groupId>
<artifactId>dubbo</artifactId>
</dependency>
<dependency>
<groupId>com.alibaba</groupId>
<artifactId>fastjson</artifactId>
</dependency>
<dependency>
<groupId>javax.validation</groupId>
<artifactId>validation-api</artifactId>
</dependency>
<dependency>
<groupId>org.jboss.resteasy</groupId>
<artifactId>resteasy-spring</artifactId>
</dependency>
<dependency>
<groupId>org.apache.curator</groupId>
<artifactId>curator-client</artifactId>
</dependency>
<dependency>
<groupId>io.netty</groupId>
<artifactId>netty-all</artifactId>
</dependency>
<dependency>
<groupId>org.apache.curator</groupId>
<artifactId>curator-recipes</artifactId>
</dependency>
<dependency>
<groupId>org.jboss.resteasy</groupId>
<artifactId>resteasy-client</artifactId>
</dependency>
<dependency>
<groupId>org.mortbay.jetty</groupId>
<artifactId>jetty</artifactId>
</dependency>
<dependency>
<groupId>javax.servlet</groupId>
<artifactId>servlet-api</artifactId>
</dependency>
<dependency>
<groupId>junit</groupId>
<artifactId>junit</artifactId>
<version>4.11</version>
</dependency>
<dependency>
<groupId>ch.qos.logback</groupId>
<artifactId>logback-core</artifactId>
</dependency>
<dependency>
<groupId>ch.qos.logback</groupId>
<artifactId>logback-access</artifactId>
</dependency>
<dependency>
<groupId>ch.qos.logback</groupId>
<artifactId>logback-classic</artifactId>
</dependency>
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-webmvc</artifactId>
</dependency>
<dependency>
<groupId>com.sc</groupId>
<artifactId>sc-pay-client</artifactId>
</dependency>
</dependencies>
sc-order pom.xml
<?xml version="1.0" encoding="UTF-8"?><parent>
<artifactId>sc</artifactId>
<groupId>com.sc</groupId>
<version>1.0-SNAPSHOT</version>
</parent>
<modelVersion>4.0.0</modelVersion>
<groupId>com.sc</groupId>
<artifactId>sc-order</artifactId>
<packaging>pom</packaging>
<version>1.0-SNAPSHOT</version>
<modules>
<module>sc-order-service</module>
<module>sc-order-client</module>
<module>sc-order-common</module>
<module>sc-order-dao</module>
</modules>
sc-order-client pom.xml
<?xml version="1.0" encoding="UTF-8"?>
sc-order
com.sc
1.0-SNAPSHOT
4.0.0
<artifactId>sc-order-client</artifactId>
<dependencies>
<dependency>
<groupId>com.sc</groupId>
<artifactId>sc-order-common</artifactId>
<version>${project.version}</version>
</dependency>
<dependency>
<groupId>org.jboss.resteasy</groupId>
<artifactId>resteasy-client</artifactId>
</dependency>
<dependency>
<groupId>org.jboss.resteasy</groupId>
<artifactId>resteasy-spring</artifactId>
</dependency>
<dependency>
<groupId>org.jboss.resteasy</groupId>
<artifactId>resteasy-jackson-provider</artifactId>
</dependency>
</dependencies>
sc-order-service pom.xml
<?xml version="1.0" encoding="UTF-8"?>
sc-order
com.sc
1.0-SNAPSHOT
4.0.0
<artifactId>sc-order-service</artifactId>
<build>
<plugins>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-deploy-plugin</artifactId>
<version>2.8.2</version>
<configuration>
<skip>true</skip>
</configuration>
</plugin>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-jar-plugin</artifactId>
<version>2.4</version>
</plugin>
<plugin>
<artifactId>maven-assembly-plugin</artifactId>
<configuration>
<descriptor>src/main/assembly/assembly.xml</descriptor>
</configuration>
<executions>
<execution>
<id>make-assembly</id>
<phase>package</phase>
<goals>
<goal>single</goal>
</goals>
</execution>
</executions>
</plugin>
<plugin>
<artifactId>maven-compiler-plugin</artifactId>
<version>2.3.2</version>
<configuration>
<source>1.8</source>
<target>1.8</target>
<encoding>UTF-8</encoding>
</configuration>
<dependencies>
<dependency>
<groupId>org.codehaus.plexus</groupId>
<artifactId>plexus-compiler-javac</artifactId>
<version>1.8.1</version>
</dependency>
</dependencies>
</plugin>
<plugin>
<artifactId>maven-resources-plugin</artifactId>
<version>2.6</version>
<configuration>
<encoding>UTF-8</encoding>
</configuration>
</plugin>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-surefire-plugin</artifactId>
<version>2.10</version>
<configuration>
<skip>true</skip>
<testFailureIgnore>true</testFailureIgnore>
</configuration>
</plugin>
</plugins>
</build>
<dependencies>
<dependency>
<groupId>com.alibaba</groupId>
<artifactId>dubbo</artifactId>
</dependency>
<dependency>
<groupId>com.alibaba</groupId>
<artifactId>fastjson</artifactId>
</dependency>
<dependency>
<groupId>javax.validation</groupId>
<artifactId>validation-api</artifactId>
</dependency>
<dependency>
<groupId>org.jboss.resteasy</groupId>
<artifactId>resteasy-spring</artifactId>
</dependency>
<dependency>
<groupId>org.apache.curator</groupId>
<artifactId>curator-client</artifactId>
</dependency>
<dependency>
<groupId>io.netty</groupId>
<artifactId>netty-all</artifactId>
</dependency>
<dependency>
<groupId>org.apache.curator</groupId>
<artifactId>curator-recipes</artifactId>
</dependency>
<dependency>
<groupId>org.jboss.resteasy</groupId>
<artifactId>resteasy-client</artifactId>
</dependency>
<dependency>
<groupId>org.mortbay.jetty</groupId>
<artifactId>jetty</artifactId>
</dependency>
<dependency>
<groupId>javax.servlet</groupId>
<artifactId>servlet-api</artifactId>
</dependency>
<dependency>
<groupId>junit</groupId>
<artifactId>junit</artifactId>
<version>4.11</version>
</dependency>
<dependency>
<groupId>ch.qos.logback</groupId>
<artifactId>logback-core</artifactId>
</dependency>
<dependency>
<groupId>ch.qos.logback</groupId>
<artifactId>logback-access</artifactId>
</dependency>
<dependency>
<groupId>ch.qos.logback</groupId>
<artifactId>logback-classic</artifactId>
</dependency>
<dependency>
<groupId>com.sc</groupId>
<artifactId>sc-order-client</artifactId>
<version>${project.version}</version>
</dependency>
<dependency>
<groupId>com.sc</groupId>
<artifactId>sc-pay-client</artifactId>
<version>${project.version}</version>
</dependency>
</dependencies>
dubbo打包工具 assembly
sc-order-service/src/main/assembly/assembly.xml
assembly
tar.gz
true
src/main/assembly/bin
bin
0755
src/main/assembly/conf
conf
0644
lib
runtime
sc-order-service/src/main/assembly/bin
#!/bin/bash
cd dirname $0
BIN_DIR=pwd
cd …
DEPLOY_DIR=pwd
CONF_DIR=$DEPLOY_DIR/conf
SERVER_NAME=sed '/dubbo.application.name/!d;s/.*=//' conf/dubbo.properties | tr -d '\r'
LOGS_FILE=sed '/dubbo.log4j.file/!d;s/.*=//' conf/dubbo.properties | tr -d '\r'
if [ -z “$SERVER_NAME” ]; then
SERVER_NAME=hostname
fi
PIDS=ps -f | grep java | grep "$CONF_DIR" |awk '{print $2}'
if [ -z “$PIDS” ]; then
echo “ERROR: The $SERVER_NAME does not started!”
exit 1
fi
LOGS_DIR=""
if [ -n “$LOGS_FILE” ]; then
LOGS_DIR=dirname $LOGS_FILE
else
LOGS_DIR=$DEPLOY_DIR/logs
fi
if [ ! -d $LOGS_DIR ]; then
mkdir
L
O
G
S
D
I
R
f
i
D
U
M
P
D
I
R
=
LOGS_DIR fi DUMP_DIR=
LOGSDIRfiDUMPDIR=LOGS_DIR/dump
if [ ! -d $DUMP_DIR ]; then
mkdir
D
U
M
P
D
I
R
f
i
D
U
M
P
D
A
T
E
=
‘
d
a
t
e
+
D
A
T
E
D
I
R
=
DUMP_DIR fi DUMP_DATE=`date +%Y%m%d%H%M%S` DATE_DIR=
DUMPDIRfiDUMPDATE=‘date+DATEDIR=DUMP_DIR/$DUMP_DATE
if [ ! -d $DATE_DIR ]; then
mkdir $DATE_DIR
fi
echo -e “Dumping the $SERVER_NAME …\c”
for PID in $PIDS ; do
jstack $PID >
D
A
T
E
D
I
R
/
j
s
t
a
c
k
−
DATE_DIR/jstack-
DATEDIR/jstack−PID.dump 2>&1
echo -e “.\c”
jinfo $PID >
D
A
T
E
D
I
R
/
j
i
n
f
o
−
DATE_DIR/jinfo-
DATEDIR/jinfo−PID.dump 2>&1
echo -e “.\c”
jstat -gcutil $PID >
D
A
T
E
D
I
R
/
j
s
t
a
t
−
g
c
u
t
i
l
−
DATE_DIR/jstat-gcutil-
DATEDIR/jstat−gcutil−PID.dump 2>&1
echo -e “.\c”
jstat -gccapacity $PID >
D
A
T
E
D
I
R
/
j
s
t
a
t
−
g
c
c
a
p
a
c
i
t
y
−
DATE_DIR/jstat-gccapacity-
DATEDIR/jstat−gccapacity−PID.dump 2>&1
echo -e “.\c”
jmap $PID >
D
A
T
E
D
I
R
/
j
m
a
p
−
DATE_DIR/jmap-
DATEDIR/jmap−PID.dump 2>&1
echo -e “.\c”
jmap -heap $PID >
D
A
T
E
D
I
R
/
j
m
a
p
−
h
e
a
p
−
DATE_DIR/jmap-heap-
DATEDIR/jmap−heap−PID.dump 2>&1
echo -e “.\c”
jmap -histo $PID >
D
A
T
E
D
I
R
/
j
m
a
p
−
h
i
s
t
o
−
DATE_DIR/jmap-histo-
DATEDIR/jmap−histo−PID.dump 2>&1
echo -e “.\c”
if [ -r /usr/sbin/lsof ]; then
/usr/sbin/lsof -p $PID >
D
A
T
E
D
I
R
/
l
s
o
f
−
DATE_DIR/lsof-
DATEDIR/lsof−PID.dump
echo -e “.\c”
fi
done
if [ -r /bin/netstat ]; then
/bin/netstat -an > $DATE_DIR/netstat.dump 2>&1
echo -e “.\c”
fi
if [ -r /usr/bin/iostat ]; then
/usr/bin/iostat > $DATE_DIR/iostat.dump 2>&1
echo -e “.\c”
fi
if [ -r /usr/bin/mpstat ]; then
/usr/bin/mpstat > $DATE_DIR/mpstat.dump 2>&1
echo -e “.\c”
fi
if [ -r /usr/bin/vmstat ]; then
/usr/bin/vmstat > $DATE_DIR/vmstat.dump 2>&1
echo -e “.\c”
fi
if [ -r /usr/bin/free ]; then
/usr/bin/free -t > $DATE_DIR/free.dump 2>&1
echo -e “.\c”
fi
if [ -r /usr/bin/sar ]; then
/usr/bin/sar > $DATE_DIR/sar.dump 2>&1
echo -e “.\c”
fi
if [ -r /usr/bin/uptime ]; then
/usr/bin/uptime > $DATE_DIR/uptime.dump 2>&1
echo -e “.\c”
fi
echo “OK!”
echo “DUMP: $DATE_DIR”
#!/bin/bash
cd dirname $0
./stop.sh
./start.sh
#!/bin/bash
cd dirname $0
if [ “$1” = “start” ]; then
./start.sh
else
if [ “$1” = “stop” ]; then
./stop.sh
else
if [ “$1” = “debug” ]; then
./start.sh debug
else
if [ “$1” = “restart” ]; then
./restart.sh
else
if [ “$1” = “dump” ]; then
./dump.sh
else
echo “ERROR: Please input argument: start or stop or debug or restart or dump”
exit 1
fi
fi
fi
fi
fi
start.bat
@echo off & setlocal enabledelayedexpansion
set LIB_JARS=""
cd …\lib
for %%i in (*) do set LIB_JARS=!LIB_JARS!;…\lib%%i
cd …\bin
if “”%1"" == ““debug”” goto debug
if “”%1"" == ““jmx”” goto jmx
java -Xms64m -Xmx1024m -XX:MaxPermSize=64M -classpath …\conf;%LIB_JARS% com.alibaba.dubbo.container.Main
goto end
:debug
java -Xms64m -Xmx1024m -XX:MaxPermSize=64M -Xdebug -Xnoagent -Djava.compiler=NONE -Xrunjdwp:transport=dt_socket,address=8000,server=y,suspend=n -classpath …\conf;%LIB_JARS% com.alibaba.dubbo.container.Main
goto end
:jmx
java -Xms64m -Xmx1024m -XX:MaxPermSize=64M -Dcom.sun.management.jmxremote.port=1099 -Dcom.sun.management.jmxremote.ssl=false -Dcom.sun.management.jmxremote.authenticate=false -classpath …\conf;%LIB_JARS% com.alibaba.dubbo.container.Main
:end
pause
#!/bin/bash
cd dirname $0
BIN_DIR=pwd
cd …
DEPLOY_DIR=pwd
CONF_DIR=$DEPLOY_DIR/conf
SERVER_NAME=sed '/dubbo.application.name/!d;s/.*=//' conf/dubbo.properties | tr -d '\r'
SERVER_PROTOCOL=sed '/dubbo.protocol.name/!d;s/.*=//' conf/dubbo.properties | tr -d '\r'
SERVER_PORT=sed '/dubbo.protocol.port/!d;s/.*=//' conf/dubbo.properties | tr -d '\r'
LOGS_FILE=sed '/dubbo.log4j.file/!d;s/.*=//' conf/dubbo.properties | tr -d '\r'
if [ -z “$SERVER_NAME” ]; then
SERVER_NAME=hostname
fi
PIDS=ps -f | grep java | grep "$CONF_DIR" |awk '{print $2}'
if [ -n “$PIDS” ]; then
echo “ERROR: The $SERVER_NAME already started!”
echo “PID: $PIDS”
exit 1
fi
if [ -n “$SERVER_PORT” ]; then
SERVER_PORT_COUNT=netstat -tln | grep $SERVER_PORT | wc -l
if [ $SERVER_PORT_COUNT -gt 0 ]; then
echo “ERROR: The $SERVER_NAME port $SERVER_PORT already used!”
exit 1
fi
fi
LOGS_DIR=""
if [ -n “$LOGS_FILE” ]; then
LOGS_DIR=dirname $LOGS_FILE
else
LOGS_DIR=$DEPLOY_DIR/logs
fi
if [ ! -d $LOGS_DIR ]; then
mkdir
L
O
G
S
D
I
R
f
i
S
T
D
O
U
T
F
I
L
E
=
LOGS_DIR fi STDOUT_FILE=
LOGSDIRfiSTDOUTFILE=LOGS_DIR/stdout.log
LIB_DIR=$DEPLOY_DIR/lib
LIB_JARS=ls $LIB_DIR|grep .jar|awk '{print "'$LIB_DIR'/"$0}'|tr "\n" ":"
LOCK_ZOOKEEPER_FILE="$LOGS_DIR/echo $PWD|awk -F/ '{print $NF}'
.properties"
JAVA_OPTS=" -Djava.awt.headless=true -Djava.net.preferIPv4Stack=true -Ddubbo.registry.file=$LOCK_ZOOKEEPER_FILE"
JAVA_DEBUG_OPTS=""
if [ “$1” = “debug” ]; then
JAVA_DEBUG_OPTS=" -Xdebug -Xnoagent -Djava.compiler=NONE -Xrunjdwp:transport=dt_socket,address=8000,server=y,suspend=n "
fi
JAVA_JMX_OPTS=""
if [ “KaTeX parse error: Expected 'EOF', got '&' at position 247: …ava -version 2>&̲1 | grep -i 64-…BITS” ]; then
JAVA_MEM_OPTS=" -server -Xmx2g -Xms2g -Xmn256m -XX:PermSize=128m -Xss256k -XX:+DisableExplicitGC -XX:+UseConcMarkSweepGC -XX:+CMSParallelRemarkEnabled -XX:+UseCMSCompactAtFullCollection -XX:LargePageSizeInBytes=128m -XX:+UseFastAccessorMethods -XX:+UseCMSInitiatingOccupancyOnly -XX:CMSInitiatingOccupancyFraction=70 "
#else
JAVA_MEM_OPTS=" -server -Xms1g -Xmx1g -XX:PermSize=128m -XX:SurvivorRatio=2 -XX:+UseParallelGC "
#fi
echo -e “Starting the $SERVER_NAME …\c”
nohup java $JAVA_OPTS $JAVA_MEM_OPTS $JAVA_DEBUG_OPTS $JAVA_JMX_OPTS -classpath
C
O
N
F
D
I
R
:
CONF_DIR:
CONFDIR:LIB_JARS com.alibaba.dubbo.container.Main > $STDOUT_FILE 2>&1 &
COUNT=0
while [ KaTeX parse error: Expected 'EOF', got '\c' at position 37: … echo -e ".\̲c̲" sleep 1 …SERVER_PORT" ]; then
if [ “$SERVER_PROTOCOL” == “dubbo” ]; then
COUNT=echo status | nc -i 1 s51 $SERVER_PORT | grep -c OK
else
COUNT=netstat -an | grep $SERVER_PORT | wc -l
fi
else
COUNT=ps -f | grep java | grep "$DEPLOY_DIR" | awk '{print $2}' | wc -l
fi
if [ $COUNT -gt 0 ]; then
break
fi
done
echo “OK!”
PIDS=ps -f | grep java | grep "$DEPLOY_DIR" | awk '{print $2}'
echo “PID: $PIDS”
echo “STDOUT: $STDOUT_FILE”
#!/bin/bash
cd dirname $0
BIN_DIR=pwd
cd …
DEPLOY_DIR=pwd
CONF_DIR=$DEPLOY_DIR/conf
SERVER_NAME=sed '/dubbo.application.name/!d;s/.*=//' conf/dubbo.properties | tr -d '\r'
if [ -z “$SERVER_NAME” ]; then
SERVER_NAME=hostname
fi
PIDS=ps -ef | grep java | grep "$CONF_DIR" |awk '{print $2}'
if [ -z “$PIDS” ]; then
echo “ERROR: The $SERVER_NAME does not started!”
exit 1
fi
if [ “$1” != “skip” ]; then
$BIN_DIR/dump.sh
fi
echo -e “Stopping the $SERVER_NAME …\c”
for PID in $PIDS ; do
kill $PID > /dev/null 2>&1
done
COUNT=0
while [ $COUNT -lt 1 ]; do
echo -e “.\c”
sleep 1
COUNT=1
for PID in $PIDS ; do
PID_EXIST=ps -f -p $PID | grep java
if [ -n “$PID_EXIST” ]; then
COUNT=0
break
fi
done
done
echo “OK!”
echo “PID: $PIDS”
sc-order-service/src/main/assembly/conf/dubbo.properties
dubbo.application.name=sc-pay-service
dubbo.registry.address=zookeeper://s51:2181
dubbo.protocol.port=20880
dubbo.service.min.thread.pool.size=200
dubbo.service.max.thread.pool.size=200
dubbo resources dubbo-pay-provider.xml
/src/main/resources/META-INF/spring/dubbo-pay-provider.xml
<dubbo:application name=“dubbo-sc”/>
<dubbo:registry group=“sc-pay” address=“zookeeper://s51:2181”/>
<dubbo:registry address=“zookeeper://s51:2181”/>
<dubbo:protocol name=“dubbo” port=“20880”/>
<dubbo:protocol name=“rest” port=“8888” contextpath="/pay"/>
<dubbo:annotation package=“com.sc.pay." />
<context:component-scan base-package="com.sc.pay.” />
context:annotation-config/
mvc:annotation-driven/
mvc:default-servlet-handler/
<dubbo:service interface=“com.sc.pay.core.service.web.IPayService” protocol=“dubbo,rest” ref=“payService”/>
dubbo resources dubbo-order-provider.xml
/src/main/resources/META-INF/spring/dubbo-order-provider.xml
<dubbo:application name=“dubbo-sc”/>
<dubbo:registry group=“sc-order” address=“zookeeper://s51:2181”/>
<dubbo:registry address=“zookeeper://s51:2181”/>
<dubbo:protocol name=“dubbo” port=“20881”/>
<dubbo:protocol name=“rest” port=“8808” contextpath="/order"/>
<dubbo:annotation package="com.sc.order.*" />
<context:component-scan base-package="com.sc.order.*" />
<dubbo:service interface="com.sc.order.core.service.web.IOrderService" protocol="dubbo,rest" ref="orderService"/>
dubbo resources dubbo-pay-consumer.xml
/src/main/resources/META-INF/spring/dubbo-pay-consumer.xml
<dubbo:reference id=“payService” interface=“com.sc.pay.core.service.web.IPayService” timeout=“20000” check=“false”/>
log4j.properties
set log levels
log4j.rootLogger = DEBUG,Console,File
输出到控制台
log4j.appender.Console=org.apache.log4j.ConsoleAppender
log4j.appender.Console.Target=System.out
log4j.appender.Console.layout=org.apache.log4j.PatternLayout
log4j.appender.Console.layout.ConversionPattern= %d{ABSOLUTE} %5p %c{1}:%L - %m%n
输出到日志文件
log4j.appender.File=org.apache.log4j.RollingFileAppender
log4j.appender.File.File=${project}/WEB-INF/logs/app.log
log4j.appender.File.DatePattern=_yyyyMMdd’.log’
log4j.appender.File.MaxFileSize=10MB
log4j.appender.File.Threshold=ALL
log4j.appender.File.layout=org.apache.log4j.PatternLayout
log4j.appender.File.layout.ConversionPattern=[%p][%d{yyyy-MM-dd HH:mm:ss,SSS}][%c]%m%n
#user nobody;
worker_processes 1;
#error_log logs/error.log;
#error_log logs/error.log notice;
#error_log logs/error.log info;
#pid logs/nginx.pid;
events {
worker_connections 1024;
}
http {
include mime.types;
default_type application/octet-stream;
log_format main '$remote_addr - $remote_user [$time_local] "$request" '
'$status $body_bytes_sent "$http_referer" '
'"$http_user_agent" "$http_x_forwarded_for"';
access_log logs/access.log main;
sendfile on;
#tcp_nopush on;
#keepalive_timeout 0;
keepalive_timeout 65;
#gzip on;
upstream order_servers{
server 192.168.80.51:9091 weight=1;
server 192.168.80.52:9091 weight=4;
server 192.168.80.53:9091 weight=4;
}
upstream pay_servers{
server 192.168.80.51:9092 weight=1;
server 192.168.80.52:9092 weight=4;
server 192.168.80.53:9092 weight=4;
}
upstream dubbo_order_servers{
server 192.168.80.51:8808;
}
upstream dubbo_pay_servers{
server 192.168.80.51:8888;
}
server {
listen 80;
server_name s51;
#charset koi8-r;
access_log logs/host.access.log main;
location / {
root html;
index index.html index.htm;
}
location /api/order/ {
proxy_pass http://order_servers;
}
location /order/order/ {
proxy_pass http://dubbo_order_servers;
}
location ~ .*\.(html|htm|gif|jpg|jpeg|bmp|png|ico|txt|js|css|ttf|woff|woff2)$
{
root /soft/order/static;
#expires定义用户浏览器缓存的时间为7天,如果静态页面不常更新,可以设置更长,这样可以节省带宽和缓解服务器的压力
# expires 7d;
#
}
#error_page 404 /404.html;
# redirect server error pages to the static page /50x.html
#
error_page 500 502 503 504 /50x.html;
location = /50x.html {
root html;
}
# proxy the PHP scripts to Apache listening on 127.0.0.1:80
#
#location ~ \.php$ {
# proxy_pass http://127.0.0.1;
#}
# pass the PHP scripts to FastCGI server listening on 127.0.0.1:9000
#
#location ~ \.php$ {
# root html;
# fastcgi_pass 127.0.0.1:9000;
# fastcgi_index index.php;
# fastcgi_param SCRIPT_FILENAME /scripts$fastcgi_script_name;
# include fastcgi_params;
#}
# deny access to .htaccess files, if Apache's document root
# concurs with nginx's one
#
#location ~ /\.ht {
# deny all;
#}
}
# another virtual host using mix of IP-, name-, and port-based configuration
#
#server {
# listen 8000;
# listen somename:8080;
# server_name somename alias another.alias;
# location / {
# root html;
# index index.html index.htm;
# }
#}
# HTTPS server
#
#server {
# listen 443 ssl;
# server_name localhost;
# ssl_certificate cert.pem;
# ssl_certificate_key cert.key;
# ssl_session_cache shared:SSL:1m;
# ssl_session_timeout 5m;
# ssl_ciphers HIGH:!aNULL:!MD5;
# ssl_prefer_server_ciphers on;
# location / {
# root html;
# index index.html index.htm;
# }
#}
server {
listen 443 ssl;
server_name s51;
ssl_certificate ssl/server.crt;
ssl_certificate_key ssl/server.key;
ssl_session_cache shared:SSL:1m;
ssl_session_timeout 5m;
ssl_ciphers HIGH:!aNULL:!MD5;
ssl_prefer_server_ciphers on;
# ssl_session_cache shared:SSL:1m;
# ssl_session_timeout 5m;
# ssl_ciphers HIGH:!aNULL:!MD5;
# ssl_prefer_server_ciphers on;
location / {
root html;
index index.html index.htm;
proxy_redirect off;
}
location /api/pay/ {
proxy_pass http://pay_servers;
}
location /pay/pay/ {
proxy_pass http://dubbo_pay_servers;
}
location ~ .*\.(html|htm|gif|jpg|jpeg|bmp|png|ico|txt|js|css|ttf|woff|woff2)$
{
root /soft/pay/static;
#expires定义用户浏览器缓存的时间为7天,如果静态页面不常更新,可以设置更长,这样可以节省带宽和缓解服务器的压力
# expires 7d;
#
}
}
}