发表于: 2020-08-15 23:45:49

1 1274


今天完成的事情:上午遇到了意外,请假了半天。完成分离service功能,了解聚合项目
明天计划的事情:发布两个web服务器,负载均衡
遇到的问题:项目确实依赖的运行问题,解决了
收获:

分离Service

服务端

接口以及实现类

配置文件rmiServer.xml,配置两个服务端

<!--注册第一个服务-->
<bean id="rmiUserA" class="com.hyx.rmiService.RmiUserServiceImpl"></bean>
<bean id="rmiUserServiceA" class="org.springframework.remoting.rmi.RmiServiceExporter">
<property name="service" ref="rmiUserA"/>
<property name="serviceInterface" value="com.hyx.rmiService.RmiUserService"/>
<property name="serviceName" value="rmiUserA"/>
<property name="registryPort" value="1022"/>
</bean>
<bean id="rmiStudentA" class="com.hyx.rmiService.RmiStudentServiceImpl"></bean>
<bean id="rmiStudentServiceA" class="org.springframework.remoting.rmi.RmiServiceExporter">
<property name="service" ref="rmiStudentA"/>
<property name="serviceInterface" value="com.hyx.rmiService.RmiStudentService"/>
<property name="serviceName" value="rmiStudentA"/>
<property name="registryPort" value="1022"/>
</bean>

<!--注册第二个服务-->
<!--注册服务-->
<bean id="rmiUserB" class="com.hyx.rmiService.RmiUserServiceImpl"></bean>
<bean id="rmiUserServiceB" class="org.springframework.remoting.rmi.RmiServiceExporter">
<property name="service" ref="rmiUserB"/>
<property name="serviceInterface" value="com.hyx.rmiService.RmiUserService"/>
<property name="serviceName" value="rmiUserB"/>
<property name="registryPort" value="1023"/>
</bean>
<bean id="rmiStudentB" class="com.hyx.rmiService.RmiStudentServiceImpl"></bean>
<bean id="rmiStudentServiceB" class="org.springframework.remoting.rmi.RmiServiceExporter">
<property name="service" ref="rmiStudentB"/>
<property name="serviceInterface" value="com.hyx.rmiService.RmiStudentService"/>
<property name="serviceName" value="rmiStudentB"/>
<property name="registryPort" value="1023"/>
</bean>

启动服务startServer

public class StartServer {
public static void main(String[] args) {
ApplicationContext context = new ClassPathXmlApplicationContext("rmiServer.xml");
System.out.println("RMI服务端启动");
}
}

客户端

必须写和服务端一模一样的接口

然后配置两个客户端

<!--RMI Client的配置1-->
<bean id="rmiUserClientA" class="org.springframework.remoting.rmi.RmiProxyFactoryBean">
<property name="serviceUrl" value="rmi://127.0.0.1:1022/rmiUserA"/>
<property name="serviceInterface" value="com.hyx.service.UserService"/>
</bean>
<bean id="rmiStudentClientA" class="org.springframework.remoting.rmi.RmiProxyFactoryBean">
<property name="serviceUrl" value="rmi://127.0.0.1:1022/rmiStudentA"/>
<property name="serviceInterface" value="com.hyx.service.StudentService"/>
</bean>

<!--RMI Client的配置2-->
<bean id="rmiUserClientB" class="org.springframework.remoting.rmi.RmiProxyFactoryBean">
<property name="serviceUrl" value="rmi://127.0.0.1:1023/rmiUserB"/>
<property name="serviceInterface" value="com.hyx.service.UserService"/>
</bean>
<bean id="rmiStudentClientB" class="org.springframework.remoting.rmi.RmiProxyFactoryBean">
<property name="serviceUrl" value="rmi://127.0.0.1:1023/rmiStudentB"/>
<property name="serviceInterface" value="com.hyx.service.StudentService"/>
</bean>


聚合项目

1.简介

对于传统系统的开发,系统集中与一起, 模块间的耦合度太高,一个模块升级,全部模块都需要升级,也不能进行分布式的部署。

把系统按模块拆分成多个子系统,使用接口进行通信/消息队列,降低模块之间的耦合度。同时把项目拆分为不同的模块,不同的小组可以负责不同的子项目。增加功能只有再增加一个子项目就可,可以灵活的进行分布式的部署。

2.步骤

创建一个顶级工程maven项目;
第二步:右键点击顶级项目,创建maven modul就可以了;

注意:
模块和模块之间可以资源互用,只要在本项目中添加其他模块的依赖即可;
顶级工程项目的pom文件每添加一个子模块就会在中增加相对应的子模块信息;顶级项目pom文件添加公共的依赖,这样子模块就不用重复添加了。(公共依赖:例如mybatis、junit、日志、common-lang3等等)
顶级工程项目的pom中一定要设置pom, 不设置默认是打jar包;
聚合项目实际上可以看成对一个项目的横向拆分;api、service、mapper、pojo;



返回列表 返回列表
评论

    分享到