81,092
社区成员
发帖
与我相关
我的任务
分享
2-Jul-2019 16:00:10.516 严重 [localhost-startStop-1] org.apache.catalina.core.StandardContext.startInternal Error during ServletContainerInitializer processing
javax.servlet.ServletException: Failed to instantiate WebApplicationInitializer class
at org.springframework.web.SpringServletContainerInitializer.onStartup(SpringServletContainerInitializer.java:155)
at org.apache.catalina.core.StandardContext.startInternal(StandardContext.java:5267)
at org.apache.catalina.util.LifecycleBase.start(LifecycleBase.java:150)
at org.apache.catalina.core.ContainerBase.addChildInternal(ContainerBase.java:754)
at org.apache.catalina.core.ContainerBase.addChild(ContainerBase.java:730)
at org.apache.catalina.core.StandardHost.addChild(StandardHost.java:734)
at org.apache.catalina.startup.HostConfig.deployDirectory(HostConfig.java:1140)
at org.apache.catalina.startup.HostConfig$DeployDirectory.run(HostConfig.java:1875)
at java.util.concurrent.Executors$RunnableAdapter.call(Unknown Source)
at java.util.concurrent.FutureTask.run(Unknown Source)
at java.util.concurrent.ThreadPoolExecutor.runWorker(Unknown Source)
at java.util.concurrent.ThreadPoolExecutor$Worker.run(Unknown Source)
at java.lang.Thread.run(Unknown Source)
Caused by: java.lang.InstantiationException: io.j99.app.measure.Application
at java.lang.Class.newInstance(Unknown Source)
at org.springframework.web.SpringServletContainerInitializer.onStartup(SpringServletContainerInitializer.java:152)
... 12 more
Caused by: java.lang.NoSuchMethodException: io.j99.app.measure.Application.<init>()
at java.lang.Class.getConstructor0(Unknown Source)
... 14 more
02-Jul-2019 16:00:10.516 严重 [localhost-startStop-1] org.apache.catalina.core.StandardContext.startInternal Context [/measure-0.0.1] startup failed due to previous errors
02-Jul-2019 16:00:10.562 警告 [localhost-startStop-1] org.apache.catalina.loader.WebappClassLoaderBase.clearReferencesThreads The web application [measure-0.0.1] appears to have started a thread named [Abandoned connection cleanup thread] but has failed to stop it. This is very likely to create a memory leak. Stack trace of thread:
02-Jul-2019 16:00:10.562 信息 [localhost-startStop-1] org.apache.catalina.startup.HostConfig.deployDirectory Deployment of web application directory [D:\Program Files\Apache Software Foundation\Tomcat 8.5\webapps\measure-0.0.1] has finished in [5,484] ms
02-Jul-2019 16:00:10.562 信息 [localhost-startStop-1] org.apache.catalina.startup.HostConfig.deployDirectory Deploying web application directory [D:\Program Files\Apache Software Foundation\Tomcat 8.5\webapps\ROOT]
02-Jul-2019 16:00:10.734 信息 [36] org.apache.catalina.loader.WebappClassLoaderBase.checkStateForResourceLoading Illegal access: this web application instance has been stopped already. Could not load []. The following stack trace is thrown for debugging purposes as well as to attempt to terminate the thread which caused the illegal access.
java.lang.IllegalStateException: Illegal access: this web application instance has been stopped already. Could not load []. The following stack trace is thrown for debugging purposes as well as to attempt to terminate the thread which caused the illegal access.
at org.apache.catalina.loader.WebappClassLoaderBase.checkStateForResourceLoading(WebappClassLoaderBase.java:1364)
at org.apache.catalina.loader.WebappClassLoaderBase.getResource(WebappClassLoaderBase.java:1021)
at com.mysql.cj.jdbc.AbandonedConnectionCleanupThread.checkContextClassLoaders(AbandonedConnectionCleanupThread.java:96)
at com.mysql.cj.jdbc.AbandonedConnectionCleanupThread.run(AbandonedConnectionCleanupThread.java:69)
at java.util.concurrent.ThreadPoolExecutor.runWorker(Unknown Source)
at java.util.concurrent.ThreadPoolExecutor$Worker.run(Unknown Source)
at java.lang.Thread.run(Unknown Source)
package io.j99.app.measure;
import com.fasterxml.jackson.databind.ObjectMapper;
import com.google.common.base.Predicate;
import com.tencent.xinge.XingeApp;
import io.j99.app.measure.db.*;
import io.j99.app.measure.db.model.*;
import io.j99.app.measure.db.model.Package;
import io.j99.app.measure.properties.*;
import io.j99.app.measure.properties.storage.LocalStorageProperties;
import io.j99.app.measure.properties.storage.QiniuStorageProperties;
import io.j99.app.measure.service.DeviceService;
import io.j99.app.measure.service.MessageService;
import io.j99.app.measure.storage.StorageService;
import io.j99.app.measure.utils.Md5;
import io.j99.app.measure.utils.RandomUtils;
import io.swagger.annotations.Api;
import org.json.JSONArray;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.boot.CommandLineRunner;
import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
import org.springframework.boot.builder.SpringApplicationBuilder;
import org.springframework.boot.context.properties.EnableConfigurationProperties;
import org.springframework.boot.web.support.SpringBootServletInitializer;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
import org.springframework.core.env.Environment;
import org.springframework.core.io.Resource;
import org.springframework.core.io.ResourceLoader;
import org.springframework.data.jpa.repository.config.EnableJpaRepositories;
import org.springframework.http.ResponseEntity;
import org.springframework.http.converter.HttpMessageConverter;
import org.springframework.scheduling.annotation.EnableScheduling;
import org.springframework.web.bind.annotation.RequestMethod;
import org.springframework.web.client.RestTemplate;
import springfox.documentation.builders.ApiInfoBuilder;
import springfox.documentation.builders.RequestHandlerSelectors;
import springfox.documentation.builders.ResponseMessageBuilder;
import springfox.documentation.schema.ModelRef;
import springfox.documentation.service.ApiInfo;
import springfox.documentation.service.ApiKey;
import springfox.documentation.service.Contact;
import springfox.documentation.service.ResponseMessage;
import springfox.documentation.spi.DocumentationType;
import springfox.documentation.spring.web.plugins.Docket;
import springfox.documentation.swagger.web.ApiKeyVehicle;
import springfox.documentation.swagger.web.SecurityConfiguration;
import springfox.documentation.swagger.web.UiConfiguration;
import springfox.documentation.swagger2.annotations.EnableSwagger2;
import javax.imageio.ImageIO;
import java.io.File;
import java.io.IOException;
import java.util.*;
import java.util.stream.Collectors;
import static com.google.common.base.Predicates.or;
import static com.google.common.collect.Lists.newArrayList;
import static springfox.documentation.builders.PathSelectors.regex;
@SpringBootApplication
@Configuration
//@ComponentScan("io.j99.app.measure")
@EnableSwagger2
@EnableConfigurationProperties({
QiniuStorageProperties.class,
LocalStorageProperties.class,
AlipayProperties.class,
AppConfigProperties.class,
XGProperties.class,
BaiduProperties.class,
WXProperties.class,
YunPianProperties.class})
@EnableJpaRepositories(repositoryFactoryBeanClass = CustomJpaRepositoryFactoryBean.class)
@EnableScheduling
public class Application extends SpringBootServletInitializer {
Logger logger = LoggerFactory.getLogger(Application.class);
@Autowired
private Environment environment;
@Autowired
private PackageRepository packageRepository;
@Autowired
private AdminRepository adminRepository;
@Autowired
private DeviceService deviceService;
@Autowired
private MessageService messageService;
@Autowired
private UserRepository userRepository;
@Autowired
private AccountRepository accountRepository;
@Autowired
private ResourceLoader resourceLoader;
@Autowired
private ObjectMapper objectMapper;
// @Autowired
private XGProperties xgProperties;
@Autowired
private ExpertRepository expertRepository;
@Autowired
public Application(XGProperties xgProperties) {
this.xgProperties = xgProperties;
}
@Bean
public RestTemplate restTemplate() {
RestTemplate restTemplate = new RestTemplate();
List<HttpMessageConverter<?>> converters = restTemplate.getMessageConverters();
restTemplate.setMessageConverters(converters);
return restTemplate;
}
@Bean
public XingeApp xingeApp() {
return new XingeApp(xgProperties.getId(), xgProperties.getSecret());
}
@Override
protected SpringApplicationBuilder configure(SpringApplicationBuilder application) {
return application.sources(Application.class);
}
public static void main(String[] args) {
SpringApplication.run(Application.class, args);
}
@Autowired
private AppConfigProperties appConfigProperties;
@Autowired
private ConfigRepository configRepository;
@Bean
CommandLineRunner init(StorageService storageService) {
return (args) -> {
ImageIO.scanForPlugins();
String profile = environment.getProperty("profile");
if (!"prod".equalsIgnoreCase(profile)) {
// loadTestDevice();
// initTestErrorCode();
// initTestExport();
logger.info(appConfigProperties.toString());
}
logger.info("Profile name: " + profile);
logger.info("Database Url: " + environment.getProperty("spring.datasource.url"));
logger.info("Redis Host: " + environment.getProperty("spring.redis.host"));
if (adminRepository.count() <= 0) {
Admin admin = new Admin();
admin.setName("admin");
String password;
if (!"prod".equalsIgnoreCase(profile)) {
password = "111111";
} else {
password = UUID.randomUUID().toString().replaceAll("-", "");
}
admin.setPassword(password);
admin.setInitPasswrd(true);
String salt = RandomUtils.randText(4).toUpperCase();
String encode = Md5.encode(admin.getPassword() + salt);
admin.setPassword(salt + encode);
adminRepository.save(admin);
logger.info("==================================================");
logger.info("Init Admin Account:" + admin.getName());
logger.info("Init Admin Password:" + password);
logger.info("==================================================");
}
if (packageRepository.count() <= 0) {
Iterable<Package> packages = packageRepository.save(newArrayList(
new Package(PackageType.POINT, 10, "10个", 10f),
new Package(PackageType.POINT, 100, "100个", 9.99f),
new Package(PackageType.POINT, 1000, "1000个", 99.98f),
new Package(PackageType.MEASURE, 1, "包月套餐", 0.01f),
new Package(PackageType.MEASURE, 3, "季度套餐", 0.01f),
new Package(PackageType.MEASURE, 6, "半年套餐", 0.01f),
new Package(PackageType.MEASURE, 12, "包年套餐", 0.01f),
new Package(PackageType.MEASURE, 999, "永久套餐", 0.01f).setPermanent(true)
));
for (Package pck : packages) {
logger.info("init add package: " + pck.toString());
}
}
List<String> asEmail = appConfigProperties.getAsEmail();
List<String> csEmail = appConfigProperties.getCsEmail();
List<String> asPhone = appConfigProperties.getAsPhone();
List<String> csPhone = appConfigProperties.getCsPhone();
String integralDesc = appConfigProperties.getIntegralDesc();
String demoAddr = appConfigProperties.getDemoAddr();
String inviteUrl = appConfigProperties.getInviteUrl();
String shopUrl = appConfigProperties.getShopUrl();
if (configRepository.findByName("asEmail") == null) {
Config entity = new Config();
entity.setName("asEmail");
entity.setContent(new JSONArray(asEmail).toString());
configRepository.save(entity);
}
if (configRepository.findByName("csEmail") == null) {
Config entity = new Config();
entity.setName("csEmail");
entity.setContent(new JSONArray(csEmail).toString());
configRepository.save(entity);
}
if (configRepository.findByName("asPhone") == null) {
Config entity = new Config();
entity.setName("asPhone");
entity.setContent(new JSONArray(asPhone).toString());
configRepository.save(entity);
}
if (configRepository.findByName("csPhone") == null) {
Config entity = new Config();
entity.setName("csPhone");
entity.setContent(new JSONArray(csPhone).toString());
configRepository.save(entity);
}
if (configRepository.findByName("integralDesc") == null) {
Config entity = new Config();
entity.setName("integralDesc");
entity.setContent(integralDesc);
configRepository.save(entity);
}
if (configRepository.findByName("demoAddr") == null) {
Config entity =
apply plugin: 'java'
apply plugin: 'org.springframework.boot'
//apply plugin: 'spring-boot'
//apply plugin: 'watch'
apply plugin: 'war'
war {
baseName = 'measure'
version = '0.0.1'
}
/*apply plugin: 'idea'
idea {
module {
inheritOutputDirs = false
outputDir = file("$buildDir/classes/main/")
}
}*/
repositories {
maven { url "http://maven.aliyun.com/nexus/content/repositories/public/" }
maven { url "http://repo.spring.io/libs-snapshot" }
}
tasks.withType(JavaCompile) {
options.encoding = 'UTF-8'
}
sourceCompatibility = 1.8
targetCompatibility = 1.8
springBoot {
executable = true
}
configurations {
// providedRuntime
dev
}
/*jar {
mainClass = "io.j99.app.measure.Application"
}*/
dependencies {
compile("commons-logging:commons-logging:1.2")
compile("javax.servlet:javax.servlet-api:4.0.1")
//
compile group: 'org.apache.tomcat.embed', name: 'tomcat-embed-jasper', version: '9.0.8'
compile("org.springframework.boot:spring-boot-devtools")
//
compile group: 'org.springframework.boot', name: 'spring-boot-dependencies', version: '2.2.0.M4'
compile group: 'org.springframework.boot', name: 'spring-boot-maven-plugin', version: '2.2.0.M4'
///
compile ("org.springframework.boot:spring-boot-dependencies")
compile ("org.springframework.boot:spring-boot-maven-plugin")
///
////
compile group: 'cn.org.faster', name: 'spring-boot-starter-parent', version: '1.1.1.RELEASE'
compile ("org.springframework.boot:spring-boot-starter-tomcat")
compile ("org.springframework.boot:spring-boot-starter-web")
compile ("org.springframework.boot:spring-boot-devtools")
//
compile "org.springframework.boot:spring-boot-configuration-processor"
compile("mysql:mysql-connector-java:8.0.12")
///
compile fileTree(dir: 'libs', include: ['*.jar'])
// dev("org.springframework.boot:spring-boot-devtools")
testCompile("org.springframework.boot:spring-boot-starter-test")
compile "io.springfox:springfox-swagger2:2.5.0"
compile("org.springframework.session:spring-session")
compile("org.simpleframework:simple-xml:2.7")
compile("org.springframework.boot:spring-boot-starter-thymeleaf")
compile("org.springframework.boot:spring-boot-starter-data-redis")
compile("org.springframework.boot:spring-boot-starter-data-rest")
compile 'io.jsonwebtoken:jjwt:0.6.0'
// compile("org.springframework.boot:spring-boot-starter-data-mongodb")
compile("org.springframework.boot:spring-boot-starter-jdbc")
compile("org.springframework.boot:spring-boot-starter-data-jpa")
compile("org.springframework.boot:spring-boot-starter-actuator")
// compile("mysql:mysql-connector-java")
compile("com.fasterxml.jackson.datatype:jackson-datatype-jsr310:2.6.0")
compile 'com.squareup.retrofit2:retrofit:2.1.0'
compile 'com.squareup.retrofit2:converter-jackson:2.1.0'
compile 'com.squareup.retrofit2:adapter-rxjava:2.1.0'
compile 'com.squareup.okhttp3:logging-interceptor:3.1.2'
compile 'com.squareup.okhttp3:okhttp:3.1.2'
compile("org.springframework.boot:spring-boot-starter-web")
compile('commons-net:commons-net:3.5')
compile('com.googlecode.log4jdbc:log4jdbc:1.2')
// https://mvnrepository.com/artifact/org.apache.poi/poi
compile group: 'org.apache.poi', name: 'poi', version: '3.15'
compile group: 'org.apache.poi', name: 'poi-ooxml', version: '3.15'
// https://mvnrepository.com/artifact/commons-lang/commons-lang
compile group: 'commons-lang', name: 'commons-lang', version: '2.6'
compile 'com.qiniu:qiniu-java-sdk:7.2.2'
// https://mvnrepository.com/artifact/org.apache.ant/ant
compile group: 'org.apache.ant', name: 'ant', version: '1.10.1'
}
bootRun {
// addResources = true
classpath = sourceSets.main.runtimeClasspath + configurations.dev
}