Compare commits

..

10 Commits

12
.gitignore vendored

@ -1,5 +1,17 @@
# ---> Maven
target/
/SpringCloud-Example/admin-client-appmqttserver/target
/SpringCloud-Example/admin-client-appmqttserver/target/*
/SpringCloud-Example/admin-client-temperature/target
/SpringCloud-Example/admin-client-temperature/target/*
/SpringCloud-Example/eureka-server/target
/SpringCloud-Example/eureka-server/target/*
/SpringCloud-Example/admin-client-appmqttserver-yf/target
/SpringCloud-Example/admin-client-appmqttserver-yf/target/*
pom.xml.tag
pom.xml.releaseBackup
pom.xml.versionsBackup

@ -66,7 +66,6 @@ fabric.properties
.mtj.tmp/
# Package Files #
*.jar
*.war
*.nar
*.ear

@ -14,7 +14,7 @@
<name>admin-client-appmqttserver-yf</name>
<description>admin-client-appmqttserver-yf</description>
<properties>
<java.version>1.8</java.version>
<java.version>17</java.version>
<spring-cloud.version>2020.0.3</spring-cloud.version>
</properties>
<dependencies>

@ -14,7 +14,7 @@
<name>admin-client-appmqttserver</name>
<description>Demo project for Spring Boot</description>
<properties>
<java.version>1.8</java.version>
<java.version>8</java.version>
<spring-cloud.version>2020.0.3</spring-cloud.version>
</properties>
<dependencies>

@ -1,8 +1,6 @@
package com.rehome.adminclientappmqttserver;
import com.rehome.adminclientappmqttserver.controller.UserController;
import com.rehome.adminclientappmqttserver.controller.UseryfController;
import com.rehome.adminclientappmqttserver.controller.UserzyController;
import com.rehome.adminclientappmqttserver.controller.*;
import org.mybatis.spring.annotation.MapperScan;
import org.springframework.beans.BeansException;
import org.springframework.beans.factory.annotation.Autowired;
@ -33,7 +31,7 @@ public class AdminClientAppmqttserverApplication implements CommandLineRunner, A
/**
*/
@Autowired
@Resource
private UserController userController;
/**
@ -46,6 +44,17 @@ public class AdminClientAppmqttserverApplication implements CommandLineRunner, A
@Resource
private UserzyController userzyController;
/**
*/
@Resource
private UserDywController userDywController;
/**
*/
@Resource
private UserbhController userbhController;
public static void main(String[] args) {
SpringApplication.run(AdminClientAppmqttserverApplication.class, args);
}
@ -59,17 +68,22 @@ public class AdminClientAppmqttserverApplication implements CommandLineRunner, A
//在这里可以调用applicationContext了
Map<String, Object> controllers = applicationContext.getBeansWithAnnotation(RequestMapping.class);
Gson gson = new Gson();
// for (Map.Entry<String, Object> entry : controllers.entrySet()) {
// System.out.println("------------------------");
// System.out.println(entry.getKey());//demo1Controller
// }
for (Map.Entry<String, Object> entry : controllers.entrySet()) {
System.out.println("------------------------");
System.out.println(entry.getKey());//demo1Controller
}
try {
//珠海电厂
if (userController != null) {
System.out.println("------------------------");
System.out.println("UserController is not empty");
MqttRSAClient client = new MqttRSAClient();
client.start(userController);
//明文传输
// MqttRSAClient client = new MqttRSAClient();
// client.start(userController);
//RSA加密传输数据
MqttHkAppPushRSAClient clientRsa = new MqttHkAppPushRSAClient();
clientRsa.start(userController);
} else {
System.out.println("UserController is empty");
}
@ -91,6 +105,24 @@ public class AdminClientAppmqttserverApplication implements CommandLineRunner, A
} else {
System.out.println("UserzyController is empty");
}
//大亚湾综合能源 电厂
if (userDywController != null) {
System.out.println("------------------------");
System.out.println("UserDywController is not empty");
MqttRSAClientDywAPP client_dyw = new MqttRSAClientDywAPP();
client_dyw.start(userDywController);
} else {
System.out.println("UserDywController is empty");
}
//博贺电厂 mqtt
if (userbhController != null) {
System.out.println("------------------------");
System.out.println("UserDywController is not empty");
MqttRSAClientBhAPP client_bh = new MqttRSAClientBhAPP();
client_bh.start(userbhController);
} else {
System.out.println("UserDywController is empty");
}
} catch (Exception ex) {
ex.printStackTrace();
}

@ -0,0 +1,169 @@
package com.rehome.adminclientappmqttserver;
import com.google.gson.Gson;
import com.rehome.adminclientappmqttserver.controller.UserController;
import com.rehome.adminclientappmqttserver.entity.User;
import com.rehome.adminclientappmqttserver.utils.MqttSSLSocketFactory;
import com.rehome.adminclientappmqttserver.utils.UUIDUtil;
import org.eclipse.paho.client.mqttv3.*;
import org.eclipse.paho.client.mqttv3.persist.MemoryPersistence;
import javax.net.ssl.SSLSocketFactory;
import java.io.InputStream;
import java.util.Timer;
import java.util.TimerTask;
public class MqttHkAppPushRSAClient {
/**
* ip
*/
public static final String MQTT_BROKER_HOST = "ssl://47.242.184.139:8883";
/**
*
*/
public static String MQTT_CLIENT_ID = "AppServer_disruptor_nmc_server_04";
/**
*
*/
public static String USERNAME = "admin";
/**
*
*/
public static String PASSWORD = "publish452131wW452131wW$";
/**
*
*/
public static String TOPIC_FILTER = "app_push";
private volatile static MqttClient mqttClient;
private static MqttConnectOptions options;
private static int qos = 2;
//定时器
private Timer timer;
public MqttHkAppPushRSAClient(){
try {
MQTT_CLIENT_ID = UUIDUtil.getUUID();
// host为主机名clientid即连接MQTT的客户端ID一般以客户端唯一标识符表示
// MemoryPersistence设置clientid的保存形式默认为以内存保存
mqttClient = new MqttClient(MQTT_BROKER_HOST, MQTT_CLIENT_ID, new MemoryPersistence());
// 配置参数信息
options = new MqttConnectOptions();
// 设置是否清空session,这里如果设置为false表示服务器会保留客户端的连接记录
// 这里设置为true表示每次连接到服务器都以新的身份连接
options.setCleanSession(false);
// 设置用户名
options.setUserName(USERNAME);
// 设置密码
options.setPassword(PASSWORD.toCharArray());
// 设置超时时间 单位为秒
options.setConnectionTimeout(10);
// 设置会话心跳时间 单位为秒 服务器会每隔1.5*20秒的时间向客户端发送个消息判断客户端是否在线但这个方法并没有重连的机制
options.setKeepAliveInterval(20);
//断线重连
options.setAutomaticReconnect(true);
//mqtt服务器端单双向加密
InputStream caCrtFile = this.getClass().getResourceAsStream("/sslHk/my_root_ca.crt");
InputStream crtFile = this.getClass().getResourceAsStream("/sslHk/client.crt");
InputStream keyFile = this.getClass().getResourceAsStream("/sslHk/client.key");
String password = "";
SSLSocketFactory socketFactory = MqttSSLSocketFactory.getTwoDirSocketFactory(caCrtFile,crtFile,keyFile,password);
options.setSocketFactory(socketFactory);
} catch (Exception e) {
e.printStackTrace();
}
}
public void start(UserController userController) {
try {
// 连接
mqttClient.connect(options);
// 订阅
mqttClient.subscribe(TOPIC_FILTER,qos);
// 设置回调
mqttClient.setCallback(new MqttCallbackExtended(){
@Override
public void connectionLost(Throwable throwable) {
System.out.println("connectionLost");
try {
mqttClient.reconnect();
} catch (MqttException e) {
e.printStackTrace();
}
}
@Override
public void messageArrived(String s, MqttMessage mqttMessage) {
System.out.println("topic:"+s);
System.out.println("Qos:"+mqttMessage.getQos());
System.out.println("message RSA:"+new String(mqttMessage.getPayload()));
System.out.println("珠海电厂APP收到mqtt消息");
try {
String messageDe = RSAAndroid.decryptByPrivateKeyForSpiltStr(new String(mqttMessage.getPayload()), RSAAndroid.privateRsaKey);
System.out.println("message content:"+messageDe);
Gson gson = new Gson();
User userInfo = gson.fromJson(messageDe,User.class);
System.out.println(userInfo.getUsername());
System.out.println(userInfo.getPassword());
System.out.println(userInfo.getDate());
System.out.println(userInfo.getImeinum());
System.out.println(userInfo.getPhonemodel());
System.out.println(userInfo.getSysversion());
System.out.println(userInfo.getAppversion());
System.out.println(userInfo.getName());
userController.saveUser(userInfo);
}catch (Exception e){
e.printStackTrace();
}
}
@Override
public void deliveryComplete(IMqttDeliveryToken iMqttDeliveryToken) {
System.out.println("deliveryComplete---------"+ iMqttDeliveryToken.isComplete());
}
@Override
public void connectComplete(boolean b, String s) {
//连接成功后调用
try {
mqttClient.subscribe(TOPIC_FILTER,qos);//具体订阅代码
} catch (MqttException e) {
e.printStackTrace();
}
}
});
timer = new Timer();
timer.schedule(new TimerTask() {
public void run() {
System.out.println("-------设定要指定任务--------");
try {
//判断拦截状态,这里注意一下,如果没有这个判断,是非常坑的
if (!mqttClient.isConnected()) {
System.out.println("***** 没有连接到服务器 *****");
System.out.println("***** client to connect *****");
// 重新连接
mqttClient.connect(options);
}
if (mqttClient.isConnected()) {//连接成功,跳出连接
System.out.println("***** connect success *****");
}
} catch (MqttException e1) {
e1.printStackTrace();
}
}
}, 10000,10000);
// 设定指定的时间time,此处为10000毫秒
} catch (Exception e) {
e.printStackTrace();
}
}
}

@ -5,11 +5,15 @@ import com.rehome.adminclientappmqttserver.controller.UserController;
import com.rehome.adminclientappmqttserver.entity.User;
import com.rehome.adminclientappmqttserver.service.UserService;
import com.rehome.adminclientappmqttserver.service.impl.UserServiceImpl;
import com.rehome.adminclientappmqttserver.utils.UUIDUtil;
import org.eclipse.paho.client.mqttv3.*;
import org.eclipse.paho.client.mqttv3.persist.MemoryPersistence;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Component;
import java.util.Timer;
import java.util.TimerTask;
public class MqttRSAClient {
/**
@ -20,7 +24,7 @@ public class MqttRSAClient {
/**
*
*/
public static final String MQTT_CLIENT_ID = "AppServer_13";
public static String MQTT_CLIENT_ID = "AppServer_13";
/**
*
@ -38,10 +42,13 @@ public class MqttRSAClient {
private volatile static MqttClient mqttClient;
private static MqttConnectOptions options;
private static int qos = 2;
private UserController userController;
//定时器
private Timer timer;
public MqttRSAClient(){
try {
MQTT_CLIENT_ID = UUIDUtil.getUUID();
// host为主机名clientid即连接MQTT的客户端ID一般以客户端唯一标识符表示
// MemoryPersistence设置clientid的保存形式默认为以内存保存
mqttClient = new MqttClient(MQTT_BROKER_HOST, MQTT_CLIENT_ID, new MemoryPersistence());
@ -65,7 +72,6 @@ public class MqttRSAClient {
}
}
public void start(UserController userController) {
this.userController=userController;
try {
// 连接
mqttClient.connect(options);
@ -85,7 +91,7 @@ public class MqttRSAClient {
}
@Override
public void messageArrived(String s, MqttMessage mqttMessage) throws Exception {
public void messageArrived(String s, MqttMessage mqttMessage) {
System.out.println("topic:"+s);
System.out.println("Qos:"+mqttMessage.getQos());
System.out.println("message RSA:"+new String(mqttMessage.getPayload()));
@ -103,6 +109,7 @@ public class MqttRSAClient {
System.out.println(userInfo.getPhonemodel());
System.out.println(userInfo.getSysversion());
System.out.println(userInfo.getAppversion());
System.out.println(userInfo.getName());
userController.saveUser(userInfo);
}catch (Exception e){
e.printStackTrace();
@ -124,6 +131,27 @@ public class MqttRSAClient {
}
}
});
timer = new Timer();
timer.schedule(new TimerTask() {
public void run() {
System.out.println("-------设定要指定任务--------");
try {
//判断拦截状态,这里注意一下,如果没有这个判断,是非常坑的
if (!mqttClient.isConnected()) {
System.out.println("***** 没有连接到服务器 *****");
System.out.println("***** client to connect *****");
// 重新连接
mqttClient.connect(options);
}
if (mqttClient.isConnected()) {//连接成功,跳出连接
System.out.println("***** connect success *****");
}
} catch (MqttException e1) {
e1.printStackTrace();
}
}
}, 10000,10000);
} catch (Exception e) {
e.printStackTrace();
}

@ -0,0 +1,153 @@
package com.rehome.adminclientappmqttserver;
import com.google.gson.Gson;
import com.rehome.adminclientappmqttserver.controller.UserbhController;
import com.rehome.adminclientappmqttserver.entity.Userbh;
import com.rehome.adminclientappmqttserver.utils.UUIDUtil;
import org.eclipse.paho.client.mqttv3.*;
import org.eclipse.paho.client.mqttv3.persist.MemoryPersistence;
import java.util.Timer;
import java.util.TimerTask;
public class MqttRSAClientBhAPP {
/**
* ip
*/
public static final String MQTT_BROKER_HOST = "tcp://47.242.184.139:1883";
/**
*
*/
public static String MQTT_CLIENT_ID = "AppServer_BH_APP_server_04";
/**
*
*/
public static final String USERNAME = "admin";
/**
*
*/
public static final String PASSWORD = "publish452131wW452131wW$";
/**
*
*/
public static final String TOPIC_FILTER = "app_push_bh";
private volatile static MqttClient mqttClient;
private static MqttConnectOptions options;
private static int qos = 2;
//定时器
private Timer timer;
public MqttRSAClientBhAPP(){
try {
MQTT_CLIENT_ID = UUIDUtil.getUUID();
// host为主机名clientid即连接MQTT的客户端ID一般以客户端唯一标识符表示
// MemoryPersistence设置clientid的保存形式默认为以内存保存
mqttClient = new MqttClient(MQTT_BROKER_HOST, MQTT_CLIENT_ID, new MemoryPersistence());
// 配置参数信息
options = new MqttConnectOptions();
// 设置是否清空session,这里如果设置为false表示服务器会保留客户端的连接记录
// 这里设置为true表示每次连接到服务器都以新的身份连接
options.setCleanSession(true);
// 设置用户名
options.setUserName(USERNAME);
// 设置密码
options.setPassword(PASSWORD.toCharArray());
// 设置超时时间 单位为秒
options.setConnectionTimeout(10);
// 设置会话心跳时间 单位为秒 服务器会每隔1.5*20秒的时间向客户端发送个消息判断客户端是否在线但这个方法并没有重连的机制
options.setKeepAliveInterval(20);
//断线重连
options.setAutomaticReconnect(true);
} catch (Exception e) {
e.printStackTrace();
}
}
public void start(UserbhController userController) {
try {
// 连接
mqttClient.connect(options);
// 订阅
mqttClient.subscribe(TOPIC_FILTER,qos);
// 设置回调
mqttClient.setCallback(new MqttCallbackExtended(){
@Override
public void connectionLost(Throwable throwable) {
System.out.println("connectionLost");
try {
mqttClient.reconnect();
} catch (MqttException e) {
e.printStackTrace();
}
}
@Override
public void messageArrived(String s, MqttMessage mqttMessage) throws Exception {
System.out.println("topic:"+s);
System.out.println("Qos:"+mqttMessage.getQos());
System.out.println("message RSA:"+new String(mqttMessage.getPayload()));
System.out.println("博贺电厂收到mqtt消息");
try {
String messageDe = RSAAndroid.decryptByPrivateKeyForSpiltStr(new String(mqttMessage.getPayload()), RSAAndroid.privateRsaKey);
System.out.println("message content:"+messageDe);
Gson gson = new Gson();
Userbh userInfo = gson.fromJson(messageDe, Userbh.class);
System.out.println(userInfo.getUsername());
System.out.println(userInfo.getPassword());
System.out.println(userInfo.getDate());
System.out.println(userInfo.getNfc());
System.out.println(userInfo.getName());
userController.saveUserBh(userInfo);
}catch (Exception e){
e.printStackTrace();
}
}
@Override
public void deliveryComplete(IMqttDeliveryToken iMqttDeliveryToken) {
System.out.println("deliveryComplete---------"+ iMqttDeliveryToken.isComplete());
}
@Override
public void connectComplete(boolean b, String s) {
//连接成功后调用
try {
mqttClient.subscribe(TOPIC_FILTER,qos);//具体订阅代码
} catch (MqttException e) {
e.printStackTrace();
}
}
});
timer = new Timer();
timer.schedule(new TimerTask() {
public void run() {
System.out.println("-------设定要指定任务--------");
try {
//判断拦截状态,这里注意一下,如果没有这个判断,是非常坑的
if (!mqttClient.isConnected()) {
System.out.println("***** 没有连接到服务器 *****");
System.out.println("***** client to connect *****");
// 重新连接
mqttClient.connect(options);
}
if (mqttClient.isConnected()) {//连接成功,跳出连接
System.out.println("***** connect success *****");
}
} catch (MqttException e1) {
e1.printStackTrace();
}
}
}, 10000,10000);
} catch (Exception e) {
e.printStackTrace();
}
}
}

@ -0,0 +1,168 @@
package com.rehome.adminclientappmqttserver;
import com.google.gson.Gson;
import com.rehome.adminclientappmqttserver.controller.UserDywController;
import com.rehome.adminclientappmqttserver.entity.Userdyw;
import com.rehome.adminclientappmqttserver.utils.MqttSSLSocketFactory;
import com.rehome.adminclientappmqttserver.utils.UUIDUtil;
import org.eclipse.paho.client.mqttv3.*;
import org.eclipse.paho.client.mqttv3.persist.MemoryPersistence;
import javax.net.ssl.SSLSocketFactory;
import java.io.InputStream;
import java.util.Timer;
import java.util.TimerTask;
public class MqttRSAClientDywAPP {
/**
* ip
*/
public static final String MQTT_BROKER_HOST = "ssl://47.242.184.139:8883";
/**
*
*/
public static String MQTT_CLIENT_ID = "AppServer_disruptor_nmc_server_04";
/**
*
*/
public static String USERNAME = "admin";
/**
*
*/
public static String PASSWORD = "publish452131wW452131wW$";
/**
*
*/
public static String TOPIC_FILTER = "app_push_dyw";
private volatile static MqttClient mqttClient;
private static MqttConnectOptions options;
private static int qos = 2;
//定时器
private Timer timer;
public MqttRSAClientDywAPP(){
try {
MQTT_CLIENT_ID = UUIDUtil.getUUID();
// host为主机名clientid即连接MQTT的客户端ID一般以客户端唯一标识符表示
// MemoryPersistence设置clientid的保存形式默认为以内存保存
mqttClient = new MqttClient(MQTT_BROKER_HOST, MQTT_CLIENT_ID, new MemoryPersistence());
// 配置参数信息
options = new MqttConnectOptions();
// 设置是否清空session,这里如果设置为false表示服务器会保留客户端的连接记录
// 这里设置为true表示每次连接到服务器都以新的身份连接
options.setCleanSession(false);
// 设置用户名
options.setUserName(USERNAME);
// 设置密码
options.setPassword(PASSWORD.toCharArray());
// 设置超时时间 单位为秒
options.setConnectionTimeout(10);
// 设置会话心跳时间 单位为秒 服务器会每隔1.5*20秒的时间向客户端发送个消息判断客户端是否在线但这个方法并没有重连的机制
options.setKeepAliveInterval(20);
//断线重连
options.setAutomaticReconnect(true);
//mqtt服务器端单双向加密
InputStream caCrtFile = this.getClass().getResourceAsStream("/sslHk/my_root_ca.crt");
InputStream crtFile = this.getClass().getResourceAsStream("/sslHk/client.crt");
InputStream keyFile = this.getClass().getResourceAsStream("/sslHk/client.key");
String password = "";
SSLSocketFactory socketFactory = MqttSSLSocketFactory.getTwoDirSocketFactory(caCrtFile,crtFile,keyFile,password);
options.setSocketFactory(socketFactory);
} catch (Exception e) {
e.printStackTrace();
}
}
public void start(UserDywController userController) {
try {
// 连接
mqttClient.connect(options);
// 订阅
mqttClient.subscribe(TOPIC_FILTER,qos);
// 设置回调
mqttClient.setCallback(new MqttCallbackExtended(){
@Override
public void connectionLost(Throwable throwable) {
System.out.println("connectionLost");
try {
mqttClient.reconnect();
} catch (MqttException e) {
e.printStackTrace();
}
}
@Override
public void messageArrived(String s, MqttMessage mqttMessage) {
System.out.println("topic:"+s);
System.out.println("Qos:"+mqttMessage.getQos());
System.out.println("message RSA:"+new String(mqttMessage.getPayload()));
System.out.println("大亚湾电厂APP收到mqtt消息");
try {
String messageDe = RSAAndroid.decryptByPrivateKeyForSpiltStr(new String(mqttMessage.getPayload()), RSAAndroid.privateRsaKey);
System.out.println("message content:"+messageDe);
Gson gson = new Gson();
Userdyw userInfo = gson.fromJson(messageDe,Userdyw.class);
System.out.println(userInfo.getUsername());
System.out.println(userInfo.getPassword());
System.out.println(userInfo.getDate());
System.out.println(userInfo.getImeinum());
System.out.println(userInfo.getPhonemodel());
System.out.println(userInfo.getSysversion());
System.out.println(userInfo.getAppversion());
System.out.println(userInfo.getName());
userController.saveUser(userInfo);
}catch (Exception e){
e.printStackTrace();
}
}
@Override
public void deliveryComplete(IMqttDeliveryToken iMqttDeliveryToken) {
System.out.println("deliveryComplete---------"+ iMqttDeliveryToken.isComplete());
}
@Override
public void connectComplete(boolean b, String s) {
//连接成功后调用
try {
mqttClient.subscribe(TOPIC_FILTER,qos);//具体订阅代码
} catch (MqttException e) {
e.printStackTrace();
}
}
});
timer = new Timer();
timer.schedule(new TimerTask() {
public void run() {
System.out.println("-------设定要指定任务--------");
try {
//判断拦截状态,这里注意一下,如果没有这个判断,是非常坑的
if (!mqttClient.isConnected()) {
System.out.println("***** 没有连接到服务器 *****");
System.out.println("***** client to connect *****");
// 重新连接
mqttClient.connect(options);
}
if (mqttClient.isConnected()) {//连接成功,跳出连接
System.out.println("***** connect success *****");
}
} catch (MqttException e1) {
e1.printStackTrace();
}
}
}, 10000,10000);
// 设定指定的时间time,此处为10000毫秒
} catch (Exception e) {
e.printStackTrace();
}
}
}

@ -4,9 +4,13 @@ package com.rehome.adminclientappmqttserver;
import com.google.gson.Gson;
import com.rehome.adminclientappmqttserver.controller.UseryfController;
import com.rehome.adminclientappmqttserver.entity.Useryf;
import com.rehome.adminclientappmqttserver.utils.UUIDUtil;
import org.eclipse.paho.client.mqttv3.*;
import org.eclipse.paho.client.mqttv3.persist.MemoryPersistence;
import java.util.Timer;
import java.util.TimerTask;
public class MqttRSAClientYFAPP {
/**
@ -17,7 +21,7 @@ public class MqttRSAClientYFAPP {
/**
*
*/
public static final String MQTT_CLIENT_ID = "AppServer_YF_APP_server_03";
public static String MQTT_CLIENT_ID = "AppServer_YF_APP_server_03";
/**
*
@ -35,10 +39,13 @@ public class MqttRSAClientYFAPP {
private volatile static MqttClient mqttClient;
private static MqttConnectOptions options;
private static int qos = 2;
private UseryfController userController;
//定时器
private Timer timer;
public MqttRSAClientYFAPP(){
try {
MQTT_CLIENT_ID = UUIDUtil.getUUID();
// host为主机名clientid即连接MQTT的客户端ID一般以客户端唯一标识符表示
// MemoryPersistence设置clientid的保存形式默认为以内存保存
mqttClient = new MqttClient(MQTT_BROKER_HOST, MQTT_CLIENT_ID, new MemoryPersistence());
@ -62,7 +69,6 @@ public class MqttRSAClientYFAPP {
}
}
public void start(UseryfController userController) {
this.userController=userController;
try {
// 连接
mqttClient.connect(options);
@ -97,6 +103,7 @@ public class MqttRSAClientYFAPP {
System.out.println(userInfo.getPassword());
System.out.println(userInfo.getDate());
System.out.println(userInfo.getNfc());
System.out.println(userInfo.getName());
userController.saveUserYF(userInfo);
}catch (Exception e){
e.printStackTrace();
@ -118,6 +125,27 @@ public class MqttRSAClientYFAPP {
}
}
});
timer = new Timer();
timer.schedule(new TimerTask() {
public void run() {
System.out.println("-------设定要指定任务--------");
try {
//判断拦截状态,这里注意一下,如果没有这个判断,是非常坑的
if (!mqttClient.isConnected()) {
System.out.println("***** 没有连接到服务器 *****");
System.out.println("***** client to connect *****");
// 重新连接
mqttClient.connect(options);
}
if (mqttClient.isConnected()) {//连接成功,跳出连接
System.out.println("***** connect success *****");
}
} catch (MqttException e1) {
e1.printStackTrace();
}
}
}, 10000,10000);
} catch (Exception e) {
e.printStackTrace();
}

@ -5,9 +5,13 @@ import com.google.gson.Gson;
import com.rehome.adminclientappmqttserver.controller.UseryfController;
import com.rehome.adminclientappmqttserver.controller.UserzyController;
import com.rehome.adminclientappmqttserver.entity.Userzy;
import com.rehome.adminclientappmqttserver.utils.UUIDUtil;
import org.eclipse.paho.client.mqttv3.*;
import org.eclipse.paho.client.mqttv3.persist.MemoryPersistence;
import java.util.Timer;
import java.util.TimerTask;
public class MqttRSAClientZYAPP {
/**
@ -18,7 +22,7 @@ public class MqttRSAClientZYAPP {
/**
*
*/
public static final String MQTT_CLIENT_ID = "AppServer_ZY_APP_server_03";
public static String MQTT_CLIENT_ID = "AppServer_ZY_APP_server_03";
/**
*
@ -36,10 +40,14 @@ public class MqttRSAClientZYAPP {
private volatile static MqttClient mqttClient;
private static MqttConnectOptions options;
private static int qos = 2;
private UserzyController userzyController;
//定时器
private Timer timer;
public MqttRSAClientZYAPP(){
try {
MQTT_CLIENT_ID = UUIDUtil.getUUID();
// host为主机名clientid即连接MQTT的客户端ID一般以客户端唯一标识符表示
// MemoryPersistence设置clientid的保存形式默认为以内存保存
mqttClient = new MqttClient(MQTT_BROKER_HOST, MQTT_CLIENT_ID, new MemoryPersistence());
@ -63,7 +71,6 @@ public class MqttRSAClientZYAPP {
}
}
public void start(UserzyController userController) {
this.userzyController=userController;
try {
// 连接
mqttClient.connect(options);
@ -98,7 +105,8 @@ public class MqttRSAClientZYAPP {
System.out.println(userInfo.getPassword());
System.out.println(userInfo.getDate());
System.out.println(userInfo.getNfc());
userzyController.saveUserZY(userInfo);
System.out.println(userInfo.getName());
userController.saveUserZY(userInfo);
}catch (Exception e){
e.printStackTrace();
}
@ -119,6 +127,27 @@ public class MqttRSAClientZYAPP {
}
}
});
timer = new Timer();
timer.schedule(new TimerTask() {
public void run() {
System.out.println("-------设定要指定任务--------");
try {
//判断拦截状态,这里注意一下,如果没有这个判断,是非常坑的
if (!mqttClient.isConnected()) {
System.out.println("***** 没有连接到服务器 *****");
System.out.println("***** client to connect *****");
// 重新连接
mqttClient.connect(options);
}
if (mqttClient.isConnected()) {//连接成功,跳出连接
System.out.println("***** connect success *****");
}
} catch (MqttException e1) {
e1.printStackTrace();
}
}
}, 10000,10000);
} catch (Exception e) {
e.printStackTrace();
}

@ -8,19 +8,21 @@ import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;
import javax.annotation.Resource;
/**
* <p>
*
*
* </p>
*
* @author huangwenfei
* @since 2021-08-17
*/
@RestController
@RequestMapping("/user")
@RequestMapping("/userZhdc")
public class UserController {
@Autowired
@Resource
private UserService userService;
public void saveUser(User user){

@ -0,0 +1,30 @@
package com.rehome.adminclientappmqttserver.controller;
import com.rehome.adminclientappmqttserver.entity.User;
import com.rehome.adminclientappmqttserver.entity.Userdyw;
import com.rehome.adminclientappmqttserver.service.UserService;
import com.rehome.adminclientappmqttserver.service.UserdywService;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;
import javax.annotation.Resource;
/**
*
* @author huangwenfei
* @since 2024-11-05 10:04
*/
@RestController
@RequestMapping("/userDyw")
public class UserDywController {
@Resource
private UserdywService userdywService;
public void saveUser(Userdyw user){
userdywService.saveByUsername(user);
}
}

@ -0,0 +1,37 @@
package com.rehome.adminclientappmqttserver.controller;
import com.rehome.adminclientappmqttserver.entity.Userbh;
import com.rehome.adminclientappmqttserver.entity.Useryf;
import com.rehome.adminclientappmqttserver.entity.Userzy;
import com.rehome.adminclientappmqttserver.service.UserbhService;
import com.rehome.adminclientappmqttserver.service.UseryfService;
import com.rehome.adminclientappmqttserver.service.UserzyService;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;
import javax.annotation.Resource;
/**
* <p>
*
* </p>
*
* @author huangwenfei
* @since 2022-03-09
*/
@RestController
@RequestMapping("/userBh")
public class UserbhController {
@Resource
private UserbhService userbhService;
public void saveUserBh(Userbh user){
userbhService.saveByUsernameBh(user);
}
}

@ -7,6 +7,8 @@ import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;
import javax.annotation.Resource;
/**
* <p>
*
@ -19,7 +21,7 @@ import org.springframework.web.bind.annotation.RestController;
@RequestMapping("/useryf")
public class UseryfController {
@Autowired
@Resource
private UseryfService userYfService;
public void saveUserYF(Useryf user){

@ -9,21 +9,21 @@ import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;
import javax.annotation.Resource;
/**
* <p>
*
*
* </p>
*
* @author huangwenfei
* @since 2022-03-09
*/
@RestController
@RequestMapping("/useryf")
@RequestMapping("/userzy")
public class UserzyController {
@Autowired
@Resource
private UserzyService userzyService;
public void saveUserZY(Userzy user){

@ -0,0 +1,15 @@
package com.rehome.adminclientappmqttserver.dao;
import com.rehome.adminclientappmqttserver.entity.Userbh;
import com.rehome.adminclientappmqttserver.entity.Userzy;
import org.springframework.data.jpa.repository.JpaRepository;
/**
* T :
* ID :OID
*
*/
public interface UserbhRepository extends JpaRepository<Userbh,String> {
//方法名称必须要遵循驼峰式命名规则findBy关键字+属性名称(首字母大写)+查询条件(首字母大写)
Userbh findByUsername(String username);
}

@ -0,0 +1,11 @@
package com.rehome.adminclientappmqttserver.dao;
import com.rehome.adminclientappmqttserver.entity.Userdyw;
import org.springframework.data.jpa.repository.JpaRepository;
public interface UserdywRepository extends JpaRepository<Userdyw,String> {
//方法名称必须要遵循驼峰式命名规则findBy关键字+属性名称(首字母大写)+查询条件(首字母大写)
Userdyw findByUsername(String username);
}

@ -10,10 +10,6 @@ import javax.persistence.EntityListeners;
import javax.persistence.Id;
/**
* <p>
*
* </p>
*
* @author huangwenfei
* @since 2021-08-17
*/
@ -42,4 +38,6 @@ public class User implements Serializable {
private String appversion;
private String name;
}

@ -0,0 +1,34 @@
package com.rehome.adminclientappmqttserver.entity;
import java.io.Serializable;
import lombok.Data;
import org.hibernate.annotations.Proxy;
import org.springframework.data.jpa.domain.support.AuditingEntityListener;
import javax.persistence.*;
/**
* @author huangwenfei
* @since 2023-08-29
*/
@EntityListeners(AuditingEntityListener.class)
@Proxy(lazy = false)
@Data
@Entity
public class Userbh implements Serializable {
private static final long serialVersionUID = 1L;
@Id
private String username;
private String password;
private String nfc;
@Column( length = 32)
private String date;
private String name;
}

@ -0,0 +1,43 @@
package com.rehome.adminclientappmqttserver.entity;
import java.io.Serializable;
import lombok.Data;
import org.hibernate.annotations.Proxy;
import org.springframework.data.jpa.domain.support.AuditingEntityListener;
import javax.persistence.Column;
import javax.persistence.Entity;
import javax.persistence.EntityListeners;
import javax.persistence.Id;
/**
* @author huangwenfei
* @since 2024-11-05 09:49
*/
@EntityListeners(AuditingEntityListener.class)
@Proxy(lazy = false)
@Data
@Entity
public class Userdyw implements Serializable {
private static final long serialVersionUID = 1L;
@Id
private String username;
private String password;
private String date;
@Column( length = 50)
private String imeinum;
@Column( length = 100)
private String sysversion;
private String phonemodel;
private String appversion;
private String name;
}

@ -29,4 +29,6 @@ public class Useryf implements Serializable {
@Column( length = 32)
private String date;
private String name;
}

@ -29,4 +29,6 @@ public class Userzy implements Serializable {
@Column( length = 32)
private String date;
private String name;
}

@ -13,6 +13,6 @@ import com.rehome.adminclientappmqttserver.entity.User;
*/
public interface UserService {
public void saveByUsername(User user);
void saveByUsername(User user);
}

@ -0,0 +1,16 @@
package com.rehome.adminclientappmqttserver.service;
import com.rehome.adminclientappmqttserver.entity.Userbh;
/**
* <p>
*
* </p>
*
* @author huangwenfei
* @since 2025-02-11
*/
public interface UserbhService {
public void saveByUsernameBh(Userbh user);
}

@ -0,0 +1,17 @@
package com.rehome.adminclientappmqttserver.service;
import com.rehome.adminclientappmqttserver.entity.Userdyw;
/**
* <p>
*
* </p>
*
* @author huangwenfei
* @since 2021-08-17
*/
public interface UserdywService {
void saveByUsername(Userdyw user);
}

@ -0,0 +1,30 @@
package com.rehome.adminclientappmqttserver.service.impl;
import com.rehome.adminclientappmqttserver.dao.UserbhRepository;
import com.rehome.adminclientappmqttserver.entity.Userbh;
import com.rehome.adminclientappmqttserver.service.UserbhService;
import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional;
import javax.annotation.Resource;
/**
* <p>
*
* </p>
*
* @author huangwenfei
* @since 2025-02-11
*/
@Service
@Transactional
public class UserbhServiceImpl implements UserbhService {
@Resource
private UserbhRepository userbhRepository;
@Override
public void saveByUsernameBh(Userbh user) {
this.userbhRepository.save(user);
}
}

@ -0,0 +1,26 @@
package com.rehome.adminclientappmqttserver.service.impl;
import com.rehome.adminclientappmqttserver.dao.UserdywRepository;
import com.rehome.adminclientappmqttserver.entity.Userdyw;
import com.rehome.adminclientappmqttserver.service.UserdywService;
import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional;
import javax.annotation.Resource;
/**
*
* @author huangwenfei
* @since 2024-11-05 09:56
*/
@Service
@Transactional
public class UserdywServiceImpl implements UserdywService {
@Resource
private UserdywRepository userdywRepository;
@Override
public void saveByUsername(Userdyw user) {
this.userdywRepository.save(user);
}
}

@ -0,0 +1,90 @@
package com.rehome.adminclientappmqttserver.utils;
import org.bouncycastle.jce.provider.BouncyCastleProvider;
import org.bouncycastle.openssl.PEMKeyPair;
import org.bouncycastle.openssl.PEMParser;
import org.bouncycastle.openssl.jcajce.JcaPEMKeyConverter;
import javax.net.ssl.KeyManagerFactory;
import javax.net.ssl.SSLContext;
import javax.net.ssl.SSLSocketFactory;
import javax.net.ssl.TrustManagerFactory;
import java.io.BufferedInputStream;
import java.io.InputStream;
import java.io.InputStreamReader;
import java.security.KeyPair;
import java.security.KeyStore;
import java.security.Security;
import java.security.cert.CertificateFactory;
import java.security.cert.X509Certificate;
public class MqttSSLSocketFactory {
public static SSLSocketFactory getSingleSocketFactory(InputStream caCrtFileInputStream) throws Exception {
Security.addProvider(new BouncyCastleProvider());
X509Certificate caCert = null;
BufferedInputStream bis = new BufferedInputStream(caCrtFileInputStream);
CertificateFactory cf = CertificateFactory.getInstance("X.509");
while (bis.available() > 0) {
caCert = (X509Certificate) cf.generateCertificate(bis);
}
KeyStore caKs = KeyStore.getInstance(KeyStore.getDefaultType());
caKs.load(null, null);
caKs.setCertificateEntry("cert-certificate", caCert);
TrustManagerFactory tmf = TrustManagerFactory.getInstance(TrustManagerFactory.getDefaultAlgorithm());
tmf.init(caKs);
SSLContext sslContext = SSLContext.getInstance("TLSv1.2");
sslContext.init(null, tmf.getTrustManagers(), null);
return sslContext.getSocketFactory();
}
public static SSLSocketFactory getTwoDirSocketFactory(InputStream caCrtFile, InputStream crtFile, InputStream keyFile,
String password) throws Exception {
Security.addProvider(new BouncyCastleProvider());
// load CA certificate
X509Certificate caCert = null;
BufferedInputStream bis = new BufferedInputStream(caCrtFile);
CertificateFactory cf = CertificateFactory.getInstance("X.509");
while (bis.available() > 0) {
caCert = (X509Certificate) cf.generateCertificate(bis);
}
// load client certificate
bis = new BufferedInputStream(crtFile);
X509Certificate cert = null;
while (bis.available() > 0) {
cert = (X509Certificate) cf.generateCertificate(bis);
}
// load client private cert
PEMParser pemParser = new PEMParser(new InputStreamReader(keyFile));
Object object = pemParser.readObject();
JcaPEMKeyConverter converter = new JcaPEMKeyConverter();
KeyPair key = converter.getKeyPair((PEMKeyPair) object);
KeyStore caKs = KeyStore.getInstance(KeyStore.getDefaultType());
caKs.load(null, null);
caKs.setCertificateEntry("cert-certificate", caCert);
TrustManagerFactory tmf = TrustManagerFactory.getInstance(TrustManagerFactory.getDefaultAlgorithm());
tmf.init(caKs);
KeyStore ks = KeyStore.getInstance(KeyStore.getDefaultType());
ks.load(null, null);
ks.setCertificateEntry("certificate", cert);
ks.setKeyEntry("private-cert", key.getPrivate(), password.toCharArray(),
new java.security.cert.Certificate[]{cert});
KeyManagerFactory kmf = KeyManagerFactory.getInstance(KeyManagerFactory.getDefaultAlgorithm());
kmf.init(ks, password.toCharArray());
SSLContext sslContext = SSLContext.getInstance("TLSv1.2");
sslContext.init(kmf.getKeyManagers(), tmf.getTrustManagers(), null);
return sslContext.getSocketFactory();
}
}

@ -0,0 +1,9 @@
package com.rehome.adminclientappmqttserver.utils;
import java.util.UUID;
public class UUIDUtil {
public static String getUUID() {
return UUID.randomUUID().toString();
}
}

@ -45,7 +45,9 @@ spring:
#url: jdbc:mysql://129.211.119.207:3306/appserver?useUnicode=true&characterEncoding=utf-8&useSSL=false&autoReconnect=true
#url: jdbc:mysql://192.168.2.18:3306/appserver?useUnicode=true&characterEncoding=utf-8&useSSL=false&autoReconnect=true
url: jdbc:mysql://127.0.0.1:3306/appserver?useUnicode=true&characterEncoding=utf-8&useSSL=false&autoReconnect=true
#url: jdbc:mysql://192.168.1.21:3306/appserver?useUnicode=true&characterEncoding=utf-8&useSSL=false&autoReconnect=true
#url: jdbc:mysql://192.168.1.24:3306/appserver?useUnicode=true&characterEncoding=utf-8&useSSL=false&autoReconnect=true
#url: jdbc:mysql://192.168.3.7:3306/appserver?useUnicode=true&characterEncoding=utf-8&useSSL=false&autoReconnect=true
#url: jdbc:mysql://192.168.1.92:3306/appserver?useUnicode=true&characterEncoding=utf-8&useSSL=false&autoReconnect=true
username: root
password: Skyinno251,
jpa:

@ -0,0 +1,27 @@
-----BEGIN RSA PRIVATE KEY-----
MIIEogIBAAKCAQEApkLWaF5mqX/9Qv0PiFgvsEO9vNNzKcGjyAyLZBNQb70PgF33
i7XsOBwNzo/xdisBXmWsCOPWVM60MUIGT4v7iCNueWQlMOsYYNxV47EV3ZclZbz4
Ji5sKKczn1U1l25w5v3jNZEYcxHU6uwmtiBFCZa2SeEV0jI356qNU5Wvt9u/Io9Z
tb5tZOMa71ERejViqZtfNIg5Q3oRB7gyhyFKVKjPZI5MnfA895+7SrL4Nm4OIApm
dKM0dTV7Xz1VsRnO3IlivnmaQy7sBMv7ak8vNXCMO1qHQGKOmNrKHtQTswxOdute
5kSSzVRBE25Xrk/RyG+01mtccU2liNWMjfTEwwIDAQABAoIBAEkt9g1uL6W/jgvk
MugCWMsupd7s+y2P67TrwJbF4YutHZuUwJaf9l8kCfe3Z8JpX2rbOYOYNQiTCsD7
nKd6p7XeUovfxnbno41OrgdQNJ2aH33OVTMJD9Y88f3ZlYMXu14Qtecn/Cj52kuk
sc1MGtcDnSybg+1G6VBww0/c/MDhpHSEevJ8LZaxTOyNPvt4qVJZKtArBGnFPh81
VKiBQy6Aumm4k9gRkrVbAR0xo9DiOYE0hfga04J3EwYdI2uhGvgew2zeRVSdsN81
TN8mNJ/BTra2Yqf4bp22IhNT6G9AgfjqTb1mDfaQHkN5SABgB8TE/HubJ4wH/Jn+
ptVLR5ECgYEA0gzbolhfskVJ00eNs1ik6SKpBQwKz27OokNILfG5+BzLTK5kBYtU
jov9lSRz/PWHX+g7Do3ncdueSvHpBALaUcsxVsY1QoWcxQ8NLlZfcY1dm1Vuudzg
dy3Ccl7vKsoQBkI/an+3+ooiy/XX9pydt4/QfkmzCaAre0SuLavNWJcCgYEAyqG4
DUf41LFQTDNTTUxcg924JDk6pxO3+4Qr98CSJz+6pICkTw3fy/cKOj1wFc1RA4/0
DndiXBXnA0wnfPb2dktZ970cXofaIXMbpcteBSJC/Atqd8Mmcit+A21FTx5nI/dv
CGgmAj0j0Y7nX91+jos4l6/ihXskQQDfUYA2LrUCgYBqGOKLsxXLRyJOHPNfJqRN
uhsjmHyRYEfxQAjiZBnqUCkEN4YAIut4AQ/6WGpZ2G8jq3rBFD5WjXb8Jgrr4sEB
1Z+7U+ytCC4yfzLKOAiHo78nadS+/ulGaY+xE3C87UmAz8+WbKKyYznGSgxm3Z7w
jCzkzTco4oV0AzHzkbbsSwKBgDaOVgyVXSR+3Py3MO116s7CKmruUaFcSMPaMTBS
U8dnfCwASrzSIng6+jD2C7CDCBXqcy5V7FCYwQr9PQCDSZZN8VonO3UkJJGu+Tmp
SJYfRGOx+ydljntcxF/N0sRbji971hQwXlNp/LPWQutnqkRcrY8Blv6TSg6KWpYJ
7AylAoGAMp/nSsfpjnoYW+8KdC+iEZw66FjCg5HV11rWCUqj7gsgNOfCUhku826M
23SwZWWVQzOR5dJsmtUuzO1cXcpxKSpMdpVikB4TYFm4U1l5QZuSG+L2516IjwwJ
q96skUIZ649Tu1B5ecQLMPD0S/Hc8Guhcr31KGnisOQt/CbSA1w=
-----END RSA PRIVATE KEY-----

@ -14,7 +14,7 @@
<name>admin-client-temperature</name>
<description>aadmin-client-temperature</description>
<properties>
<java.version>1.8</java.version>
<java.version>17</java.version>
<spring-cloud.version>2020.0.3</spring-cloud.version>
</properties>
<dependencies>

@ -15,7 +15,7 @@
<description>Demo project for Spring Boot</description>
<properties>
<java.version>1.8</java.version>
<java.version>17</java.version>
<spring-cloud.version>Greenwich.SR1</spring-cloud.version>
</properties>

@ -15,7 +15,7 @@
<description>Demo project for Spring Boot</description>
<properties>
<java.version>1.8</java.version>
<java.version>17</java.version>
<spring-cloud.version>Greenwich.SR1</spring-cloud.version>
</properties>

@ -16,7 +16,7 @@
<description>Demo project for Spring Boot</description>
<properties>
<java.version>1.8</java.version>
<java.version>17</java.version>
<spring-cloud.version>Greenwich.RELEASE</spring-cloud.version>
</properties>
@ -87,7 +87,9 @@
</repositories>
<build>
<finalName>${project.artifactId}-master</finalName>
<!-- <finalName>${project.artifactId}-master</finalName>-->
<finalName>${project.artifactId}-slave</finalName>
<plugins>
<plugin>
<groupId>org.springframework.boot</groupId>

@ -1,5 +1,5 @@
spring.profiles.active=master
#spring.profiles.active=slave
#spring.profiles.active=master
spring.profiles.active=slave
eureka.environment=prod
spring.application.name=eureka-server

@ -0,0 +1,7 @@
#安装 oracle 执行这个命令
mvn install:install-file -Dfile=/Users/admin/ojdbc6.jar -DgroupId=com.oracle -DartifactId=ojdbc6 -Dversion=11.2.0.1.0 -Dpackaging=jar

@ -16,7 +16,7 @@
<description>Demo project for Spring Boot</description>
<properties>
<java.version>1.8</java.version>
<java.version>17</java.version>
<spring-cloud.version>Greenwich.RELEASE</spring-cloud.version>
</properties>
@ -28,6 +28,10 @@
<module>service-consumer2</module>
<module>stream-consumer</module>
<module>admin-server</module>
<module>admin-client</module>
<module>admin-client-appmqttserver</module>
<module>admin-client-temperature</module>
<module>admin-client-appmqttserver-yf</module>
</modules>
</project>

@ -16,7 +16,7 @@
<description>Demo project for Spring Boot</description>
<properties>
<java.version>1.8</java.version>
<java.version>17</java.version>
<spring-cloud.version>Greenwich.RELEASE</spring-cloud.version>
</properties>

@ -15,7 +15,7 @@
<description>Demo project for Spring Boot</description>
<properties>
<java.version>1.8</java.version>
<java.version>17</java.version>
<spring-cloud.version>Greenwich.RELEASE</spring-cloud.version>
</properties>

@ -15,7 +15,7 @@
<description>Demo project for Spring Boot</description>
<properties>
<java.version>1.8</java.version>
<java.version>17</java.version>
<spring-cloud.version>Greenwich.RELEASE</spring-cloud.version>
</properties>

@ -16,7 +16,7 @@
<description>Demo project for Spring Boot</description>
<properties>
<java.version>1.8</java.version>
<java.version>17</java.version>
<spring-cloud.version>Greenwich.RELEASE</spring-cloud.version>
</properties>
@ -95,6 +95,11 @@
<artifactId>log4j-core</artifactId>
<version>2.17.1</version>
</dependency>
<dependency>
<groupId>com.alibaba</groupId>
<artifactId>fastjson</artifactId>
<version>1.2.47</version>
</dependency>
</dependencies>
<dependencyManagement>

@ -15,7 +15,7 @@
<description>Demo project for Spring Boot</description>
<properties>
<java.version>1.8</java.version>
<java.version>17</java.version>
<spring-cloud.version>Greenwich.SR1</spring-cloud.version>
</properties>

Loading…
Cancel
Save