一、dubbo服务项目结构及发布结构
    dubbo 服务项目结构
    xxxxx-api 接口类和一些DTO 用于供其他项目依赖
    需要提供dubbo服务的接口命名 以Facade结尾 (xxxxxFacade.java)

    dubbo、web应用 项目结构以及发布目录结构示意 - 图1

    xxxxx-service 接口实现 以及dubbo服务暴露
    需要提供dubbo服务的服务命名以Impl结尾 (xxxxxImpl.java)
    dubbo、web应用 项目结构以及发布目录结构示意 - 图2

    关于Duubo服务本地启动方式和用Wrapper方式在服务器启动方式
    Duubo服务本地启动方式
    采用DUBBO框架自带的Main类的main方法
    默认读取在项目的classpath目录下 dubbo.properties配置文件
    dubbo、web应用 项目结构以及发布目录结构示意 - 图3
    dubbo.properties指定 加载spring文件的路径
    作用是告诉main方法读取哪个路径下的spring配置文件

    dubbo、web应用 项目结构以及发布目录结构示意 - 图4

    采用Wrapper的方式在服务器上启动dobbo
    在项目跟目录下建立wrapper文件夹
    dubbo、web应用 项目结构以及发布目录结构示意 - 图5

    service.sh为shell脚本
    通过 ./service.sh start|stop|restart 命令来启停dubbo服务
    wrapper.conf为wrapper的配置文件

    通过maven打包之后的目录结构为

    dubbo、web应用 项目结构以及发布目录结构示意 - 图6

    服务器发布的目录结构
    ProjectName (根目录)
    |
    conf 项目自己的配置文件 (prop.key,server.properties)
    | xxxxx-service
    |
    bin
    | conf
    |
    lib 项目依赖的库(包括项目本身的jar包)
    |_ logs 日志文件存放目录

    二、web项目通过Wrapper来发布

    1、 把应用安装为守护进程
    2、把检测jvm运行情况,对于程序原因或内存溢出导致的虚拟机崩溃实现自动重启
    3、记录运行日志

    1. web项目打成war

    服务器发布目录结构
    ProjectName (根目录)
    |
    xxxxx-web
    | conf 项目自己的配置文件 (prop.key,server.properties)
    |
    XXXTomcat

    对于wrapper的配置
    dubbo服务的配置相对比较简单
    wrapper.conf 配置文件
    set.JAVA_HOME=/data/apps/java/jdk1.8.0_45 jdk目录
    wrapper.java.command=%JAVA_HOME%/bin/java java命令
    wrapper.app.parameter.1=cn.lehome.universal.api.open.ServiceApplication 指定启动类
    具体 可以参考 demo [https://github.com/gigold/demo.git
    web应用的配置相对复杂
    具体 可以参考[java Service Wrapper配置使用]