1)将表现层工程独立出来:
e3-manager-web
2)将原来的e3-manager改为如下结构
e3-parent打包方式pom
e3-common打包方式jar
e3-manager打包方式war
e3-manager打包方式pom
|--e3-manager-dao打包方式jar
|--e3-manager-interface打包方式jar
|--e3-manager-pojo打包方式jar
|--e3-manager-service(打包方式改为war)
工程上右键--delete
粘贴工程到上一级目录下
导入e3-manager-web
修改e3-manager-web的pom.xml文件
此时e3-manager-web的父工程不再是e3-manager而是e3-parent
此时e3-manager-web就不需要依赖e3-manager-service了,只需要依赖它的接口即可,因此,此时的依赖就要改为e3-manager-interface。如果仍然依赖service,那么还是不能解耦,无法将工程分开,另外service工程已经是war包,我们要调用的是jar包
修改时候回有这种报错
这说明spring没有了,由于spring是在e3-manager-service中的pom.xml文件中进行的依赖,现在将e3-manager-web分离出来以后,e3-manager-web中就缺少spring相关的依赖,需要将spring相关的依赖考到e3-manager-web工程中的pom.xml文件中
org.springframework
spring-context
org.springframework
spring-beans
org.springframework
spring-webmvc
org.springframework
spring-jdbc
org.springframework
spring-aspects
org.springframework
spring-jms
org.springframework
spring-context-support
因为e3-manager聚合工程中至少有一个是war包,所以要将e3-manager-service的打包方式修改为war
改为war包以后,e3-manager-service工程会立马报错,因为工程里缺少了webapp文件夹以及里面的web.xml配置文件
手动添加webapp文件夹以及里面的文件
因为表现层只需要与表现层相关的springmvc.xml配置文件,其他的都应该在service层,所以要将不需要的复制到service层
e3-manager-service层的配置文件如下:
e3-manager-web层的配置文件如下:
因为加载spring容器时service层要做的,所以在表现层的web.xml配置文件中就不需要加载spring容器了
e3-manager-web层的web.xml文件配置如下:
e3-manager-web
index.jsp
CharacterEncodingFilter
org.springframework.web.filter.CharacterEncodingFilter
encoding
utf-8
CharacterEncodingFilter
/*
e3-manager
org.springframework.web.servlet.DispatcherServlet
contextConfigLocation
classpath:spring/springmvc.xml
1
e3-manager
/
因为post提交,web请求都是表现层要用的,所以才service层的web.xml配置文件中就不需要配置解决post乱码的配置
前端控制器也是属于表现层的,所以在service层也要删除
最后service层的web.xml文件的配置如下
e3-manager
index.jsp
contextConfigLocation
classpath:spring/applicationContext*.xml
org.springframework.web.context.ContextLoaderListener
在e3-manager-Service工程中pom.xml添加dubbo依赖的jar包。
com.alibaba
dubbo
org.springframework
spring
org.jboss.netty
netty
org.apache.zookeeper
zookeeper
com.github.sgroschupf
zkclient
在spring的application-service.xml配置文件中添加dubbo的约束,然后使用dubbo:service发布服务。
主要修改的三处
xmlns:dubbo="http://code.alibabatech.com/schema/dubbo"
http://code.alibabatech.com/schema/dubbo http://code.alibabatech.com/schema/dubbo/dubbo.xsd
上面的配置是集群版的,单机版的只需要将address后面的IP地址写一个就可以了
总体配置
pom.xml
4.0.0
cn.e3mall
e3-manager
0.0.1-SNAPSHOT
war
e3-manager-service
cn.e3mall
e3-manager-dao
0.0.1-SNAPSHOT
cn.e3mall
e3-manager-interface
0.0.1-SNAPSHOT
org.springframework
spring-context
org.springframework
spring-beans
org.springframework
spring-webmvc
org.springframework
spring-jdbc
org.springframework
spring-aspects
org.springframework
spring-jms
org.springframework
spring-context-support
com.alibaba
dubbo
org.springframework
spring
org.jboss.netty
netty
org.apache.zookeeper
zookeeper
com.github.sgroschupf
zkclient
application-servvice.xml
上面的引入dubbo约束的时候需要手工配置约束,dubbo的约束就算是联网也不会下载
Window--Preference--搜索xml Catalog
改造e3-manager-web工程。
com.alibaba
dubbo
org.springframework
spring
org.jboss.netty
netty
org.apache.zookeeper
zookeeper
com.github.sgroschupf
zkclient
5、e3-mangager-web添加对e3-manager-Interface的依赖。
第三步:修改springmvc.xml,在springmvc的配置文件中添加服务的引用。
pom.xml文件需要修改三处
xmlns:dubbo="http://code.alibabatech.com/schema/dubbo"
http://code.alibabatech.com/schema/dubbo http://code.alibabatech.com/schema/dubbo/dubbo.xsd
第四步:在e3-manager-web工程中pom.xml添加tomcat插件配置。
org.apache.tomcat.maven
tomcat7-maven-plugin
/
8081
最终的配置文件
pom.xml
4.0.0
cn.e3mall
e3-parent
0.0.1-SNAPSHOT
e3-manager-web
war
cn.e3mall
e3-search-interface
0.0.1-SNAPSHOT
org.springframework
spring-context
org.springframework
spring-beans
org.springframework
spring-webmvc
org.springframework
spring-jdbc
org.springframework
spring-aspects
org.springframework
spring-jms
org.springframework
spring-context-support
jstl
jstl
javax.servlet
servlet-api
provided
javax.servlet
jsp-api
provided
com.alibaba
dubbo
org.springframework
spring
org.jboss.netty
netty
org.apache.zookeeper
zookeeper
com.github.sgroschupf
zkclient
junit
junit
org.apache.tomcat.maven
tomcat7-maven-plugin
/
8081
springmvc.xml