发表于: 2020-09-08 16:26:26

1 1458


今天完成的事

将原有学员系统中Service中拆分出来,变成一个RMI的Service。

在原来的WEB中调用Service。

首先是拆服务端,服务端只提供增删改查功能,所以把controller包删掉。

删完的目录。


在部署到远程服务器上,服务器有公网ip和私网ip,这里要指定好公网ip。

main方法:

public static void main(String[] args) {
System.setProperty("java.rmi.server.hostname","42.194.209.204");
   //发布服务
   new ClassPathXmlApplicationContext("spring/applicationContext.xml");

这个服务端直接部署到腾讯云上,所以要添加servicePort字段,指定好从腾讯云返回数据的端口。

<bean id="studentService" class="com.jnshu.service.impl.StudentServiceImpl"/>
<bean id="server" class="org.springframework.remoting.rmi.RmiServiceExporter">
   <property name="service" ref="studentService"/>
   <property name="serviceName" value="server1"/>
   <property name="serviceInterface" value="com.jnshu.service.StudentService"/>
   <property name="registryPort" value="5793"/>
   <property name="servicePort" value="5793"/>
</bean>

在pom.xml配置好打包插件,指定好main方法的位置

<plugin>
   <groupId>org.apache.maven.plugins</groupId>
   <artifactId>maven-shade-plugin</artifactId>
   <version>2.4.1</version>
   <executions>
       <execution>
           <phase>package</phase>
           <goals>
               <goal>shade</goal>
           </goals>
           <configuration>
               <transformers>
                   <transformer implementation="org.apache.maven.plugins.shade.resource.ManifestResourceTransformer">
                       <mainClass>com.jnshu.go.ServiceGo</mainClass>
                   </transformer>
                   <transformer implementation="org.apache.maven.plugins.shade.resource.AppendingTransformer">
                       <resource>META-INF/spring.handlers</resource>
                   </transformer>
                   <transformer implementation="org.apache.maven.plugins.shade.resource.AppendingTransformer">
                       <resource>META-INF/spring.schemas</resource>
                   </transformer>
               </transformers>
           </configuration>
       </execution>
   </executions>
</plugin>

然后把jar包上传到腾讯云使用java -jar 包名.jar 命令 执行main方法发布服务

接下来配置客户端,客户端只留service接口和controller,pojo包,其他关于增删改查的全删掉。

<bean id="studentService" class="org.springframework.remoting.rmi.RmiProxyFactoryBean">
   <property name="serviceInterface" value="com.jnshu.service.StudentService"/>
   <property name="serviceUrl" value="rmi://42.194.209.204:5793/server1"/>
</bean>

然后远程调用一波

 测试结果:

增加:

查询

改:

删除:

明天的计划:

1.部署两台Service,在WEB中随机访问任意一台Service。

2.部署两台WEB,通过Nginx配置两台WEB随机访问,两台WEB可以随机访问两台Service。

遇到的问题:

服务器有多个 ip 引起的 rmi 连接问题, 解决方法:

①服务端添加代码: System.setProperty("java.rmi.server.hostname" , "自己外网IP" );

收获:

学会怎么把service部署到服务器上发布服务。


返回列表 返回列表
评论

    分享到