#java #mysql #spring #hibernate #maven
#java #mysql #весна #спящий режим #maven
Вопрос:
У меня есть приложение Spring Boot, которое мы устанавливаем на несколько небольших серверов для наших продуктов. Это всегда работало. Сегодня вечером мы установили его на один из наших серверов, и оно не запустилось.
Каждый сервер представляет собой образ из общего образа, поэтому ОС одинакова.
Когда мы запускаем файл .jar, мы получаем:
Oct 05, 2016 11:16:45 AM org.apache.catalina.core.StandardService startInternal
INFO: Starting service Tomcat
Oct 05, 2016 11:16:45 AM org.apache.catalina.core.StandardEngine startInternal
INFO: Starting Servlet Engine: Apache Tomcat/8.5.5
Oct 05, 2016 11:16:46 AM org.apache.catalina.core.ApplicationContext log
INFO: Initializing Spring embedded WebApplicationContext
Oct 05, 2016 11:17:03 AM org.apache.catalina.core.StandardService stopInternal
INFO: Stopping service Tomcat
Это наше application.properties, которое относится к спящему режиму
# Username and password
spring.datasource.username = parkuser
spring.datasource.password = xxxxxxxxxxxxxxxxxxxxxx
spring.datasource.url= jdbc:mysql://xxxxxxxxxxxxxxxxxxxxxxxxx:3306/SMARTPARK?useSSL=false
# Keep the connection alive if idle for a long time (needed in production)
spring.datasource.testWhileIdle = true
spring.datasource.validationQuery = SELECT 1
spring.jpa.show-sql = false
# Hibernate ddl auto (create, create-drop, update): with "update" the database
# schema will be automatically updated accordingly to java entities found in
# the project
spring.jpa.hibernate.ddl-auto = update
# Naming strategy
spring.jpa.hibernate.naming-strategy = org.hibernate.cfg.ImprovedNamingStrategy
# Allows Hibernate to generate SQL optimized for a particular DBMS
spring.jpa.properties.hibernate.dialect = org.hibernate.dialect.MySQLDialect
spring.jpa.properties.hibernate.current_session_context_class=org.springframework.orm.hibernate4.SpringSessionContext
В нашем pom.xml у нас есть
<parent>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-parent</artifactId>
<version>1.4.1.RELEASE</version>
</parent>
<dependencies>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter</artifactId>
<exclusions>
<exclusion>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-logging</artifactId>
</exclusion>
</exclusions>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-log4j</artifactId>
<version>1.3.8.RELEASE</version>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-data-jpa</artifactId>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-jdbc</artifactId>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-data-rest</artifactId>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-web</artifactId>
</dependency>
<dependency>
<groupId>mysql</groupId>
<artifactId>mysql-connector-java</artifactId>
</dependency>
Это наш StartServer.class
@SpringBootApplication
@EnableScheduling
public class StartServer extends SpringBootServletInitializer{
public static void main(String[] args){
SpringApplication.run(StartServer.class, args);
}
@Bean
public HibernateJpaSessionFactoryBean sessionFactory() {
return new HibernateJpaSessionFactoryBean();
}
}
Я не могу понять, почему один и тот же jar работает на устройстве и выдает эту ошибку в другом, и я не могу понять, в чем ошибка…
Комментарии:
1. Имеет ли этот сервер ту же версию Java, что и другие? В pom у вас есть зависимость mysql-connector, но я думаю, что он не может загрузить эту зависимость, поэтому он не может определить, к какой базе данных подключиться. Вероятно, такое поведение связано с версией java
2. каждый сервер создан из одного и того же образа…
3. есть ли проблема с разрешением на подключение к базе данных? имя пользователя / пароль или сеть? возможно, будет невозможно обнаружить несколько вещей, поскольку соединение не работает.
4. Вы поместили URL-адрес и имя класса драйвера в раздел spring.datasource? Можете ли вы поделиться этой частью application.properties
5. Отредактировал вопрос, чтобы добавить другие свойства
Ответ №1:
Я столкнулся с той же проблемой. Затем после очистки моего локального репозитория maven приложение было запущено и запущено. Очистите свой локальный репозиторий maven (из-за поврежденной зависимости) и повторите попытку!
Ответ №2:
Я не уверен на 100%, но я бы заменил это :
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter</artifactId>
....
</dependency>
С помощью этого:
<parent>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-parent</artifactId>
<version>1.4.1.RELEASE</version>
</parent>
<properties>
<java.version>1.8</java.version>
</properties>
<dependencies>
...
</dependencies>
См. Пример ниже :
<groupId>org.springframework</groupId>
<artifactId>gs-relational-data-access</artifactId>
<version>0.1.0</version>
<parent>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-parent</artifactId>
<version>1.4.1.RELEASE</version>
</parent>
<properties>
....
</properties>
<dependencies>
<dependency>
....
</dependency>
<dependency>
<groupId>mysql</groupId>
<artifactId>mysql-connector-java</artifactId>
<version>[5,]</version>
</dependency>
</dependencies>
или же просто сделайте это :
<dependency>
<groupId>mysql</groupId>
<artifactId>mysql-connector-java</artifactId>
<version>your version</version>
</dependency>
Комментарии:
1. Можете ли вы запустить простое приложение Spring boot на этом сервере? попробуйте одно из доступных приложений здесь: spring.io/guides
2. или запустите щедрость
Ответ №3:
Если в вашем проекте отсутствует файл application.properties, то вы также столкнетесь с такой проблемой. проверьте его доступность в вашем пути к классу.