发表于: 2020-09-08 16:26:26
1 1460
今天完成的事:
将原有学员系统中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部署到服务器上发布服务。
评论