Добавлен TomcatStarter
This commit is contained in:
20
.idea/compiler.xml
generated
20
.idea/compiler.xml
generated
@ -32,6 +32,26 @@
|
||||
</processorPath>
|
||||
<module name="sample.main" />
|
||||
</profile>
|
||||
<profile name="Gradle Imported" enabled="true">
|
||||
<outputRelativeToContentRoot value="true" />
|
||||
<processorPath useClasspath="false">
|
||||
<entry name="$USER_HOME$/.gradle/caches/modules-2/files-2.1/biz.redsoft.ncore/ncoreAnnotationProcessor/1.0.10/52f347369a8b6f7467f9be747d42f1386c632c2c/ncoreAnnotationProcessor-1.0.10.jar" />
|
||||
<entry name="$USER_HOME$/.gradle/caches/modules-2/files-2.1/com.google.auto.service/auto-service/1.0.1/c9779f7372192a96c957a3df1faeeabd07881085/auto-service-1.0.1.jar" />
|
||||
<entry name="$MAVEN_REPOSITORY$/com/fasterxml/jackson/core/jackson-databind/2.13.4/jackson-databind-2.13.4.jar" />
|
||||
<entry name="$MAVEN_REPOSITORY$/com/fasterxml/jackson/core/jackson-core/2.13.4/jackson-core-2.13.4.jar" />
|
||||
<entry name="$USER_HOME$/.gradle/caches/modules-2/files-2.1/com.google.auto.service/auto-service-annotations/1.0.1/ac86dacc0eb9285ea9d42eee6aad8629ca3a7432/auto-service-annotations-1.0.1.jar" />
|
||||
<entry name="$USER_HOME$/.gradle/caches/modules-2/files-2.1/com.google.auto/auto-common/1.2/ca270191fd7d2a7297da7c8f29184206df10c67d/auto-common-1.2.jar" />
|
||||
<entry name="$MAVEN_REPOSITORY$/com/google/guava/guava/31.0.1-jre/guava-31.0.1-jre.jar" />
|
||||
<entry name="$MAVEN_REPOSITORY$/com/fasterxml/jackson/core/jackson-annotations/2.13.4/jackson-annotations-2.13.4.jar" />
|
||||
<entry name="$MAVEN_REPOSITORY$/com/google/guava/failureaccess/1.0.1/failureaccess-1.0.1.jar" />
|
||||
<entry name="$MAVEN_REPOSITORY$/com/google/guava/listenablefuture/9999.0-empty-to-avoid-conflict-with-guava/listenablefuture-9999.0-empty-to-avoid-conflict-with-guava.jar" />
|
||||
<entry name="$MAVEN_REPOSITORY$/com/google/code/findbugs/jsr305/3.0.2/jsr305-3.0.2.jar" />
|
||||
<entry name="$MAVEN_REPOSITORY$/org/checkerframework/checker-qual/3.12.0/checker-qual-3.12.0.jar" />
|
||||
<entry name="$MAVEN_REPOSITORY$/com/google/errorprone/error_prone_annotations/2.7.1/error_prone_annotations-2.7.1.jar" />
|
||||
<entry name="$MAVEN_REPOSITORY$/com/google/j2objc/j2objc-annotations/1.3/j2objc-annotations-1.3.jar" />
|
||||
</processorPath>
|
||||
<module name="biz.redsoft.sample.sample.main" />
|
||||
</profile>
|
||||
</annotationProcessing>
|
||||
<bytecodeTargetLevel>
|
||||
<module name="biz.redsoft.sample-sample" target="1.8" />
|
||||
|
2
.idea/gradle.xml
generated
2
.idea/gradle.xml
generated
@ -4,8 +4,8 @@
|
||||
<component name="GradleSettings">
|
||||
<option name="linkedExternalProjectsSettings">
|
||||
<GradleProjectSettings>
|
||||
<option name="distributionType" value="DEFAULT_WRAPPED" />
|
||||
<option name="externalProjectPath" value="$PROJECT_DIR$" />
|
||||
<option name="gradleJvm" value="1.8" />
|
||||
<option name="modules">
|
||||
<set>
|
||||
<option value="$PROJECT_DIR$" />
|
||||
|
10
.idea/jarRepositories.xml
generated
10
.idea/jarRepositories.xml
generated
@ -26,5 +26,15 @@
|
||||
<option name="name" value="maven" />
|
||||
<option name="url" value="https://nexus.red-soft.ru/repository/public" />
|
||||
</remote-repository>
|
||||
<remote-repository>
|
||||
<option name="id" value="maven3" />
|
||||
<option name="name" value="maven3" />
|
||||
<option name="url" value="https://ncore-repo.red-soft.ru/repository/public" />
|
||||
</remote-repository>
|
||||
<remote-repository>
|
||||
<option name="id" value="MavenLocal" />
|
||||
<option name="name" value="MavenLocal" />
|
||||
<option name="url" value="file:$MAVEN_REPOSITORY$/" />
|
||||
</remote-repository>
|
||||
</component>
|
||||
</project>
|
3
.idea/modules.xml
generated
3
.idea/modules.xml
generated
@ -3,6 +3,9 @@
|
||||
<component name="ProjectModuleManager">
|
||||
<modules>
|
||||
<module fileurl="file://$PROJECT_DIR$/.idea/modules/biz.redsoft.sample-sample.iml" filepath="$PROJECT_DIR$/.idea/modules/biz.redsoft.sample-sample.iml" group="sample" />
|
||||
<module fileurl="file://$PROJECT_DIR$/.idea/modules/biz.redsoft.sample.sample.iml" filepath="$PROJECT_DIR$/.idea/modules/biz.redsoft.sample.sample.iml" />
|
||||
<module fileurl="file://$PROJECT_DIR$/.idea/modules/biz.redsoft.sample.sample.main.iml" filepath="$PROJECT_DIR$/.idea/modules/biz.redsoft.sample.sample.main.iml" />
|
||||
<module fileurl="file://$PROJECT_DIR$/.idea/modules/biz.redsoft.sample.sample.test.iml" filepath="$PROJECT_DIR$/.idea/modules/biz.redsoft.sample.sample.test.iml" />
|
||||
<module fileurl="file://$PROJECT_DIR$/.idea/modules/sample.main.iml" filepath="$PROJECT_DIR$/.idea/modules/sample.main.iml" />
|
||||
</modules>
|
||||
</component>
|
||||
|
@ -35,6 +35,8 @@ repositories {
|
||||
dependencies {
|
||||
implementation 'javax.servlet:javax.servlet-api:3.1.0'
|
||||
testCompileClasspath 'org.junit.jupiter:junit-jupiter:5.8.2'
|
||||
testImplementation 'org.apache.tomcat.embed:tomcat-embed-core:9.0.76'
|
||||
testImplementation 'org.apache.tomcat.embed:tomcat-embed-jasper:9.0.76'
|
||||
runtimeClasspath files(ncoreGenerateControlDataJar)
|
||||
runtimeClasspath files(genJar)
|
||||
annotationProcessor 'biz.redsoft.ncore:ncoreAnnotationProcessor:1.0.+'
|
||||
|
@ -1,45 +0,0 @@
|
||||
/*
|
||||
* Copyright (C) 2023 Red Soft Corporation.
|
||||
*
|
||||
* This file is part of Red nCore.
|
||||
*
|
||||
* Red nCore is free software; you can redistribute it and/or modify
|
||||
* it under the terms of the GNU General Public License as published by
|
||||
* the Free Software Foundation; either version 2, or (at your option)
|
||||
* any later version.
|
||||
*
|
||||
* Red nCore is distributed in the hope that it will be useful, but
|
||||
* WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
|
||||
* General Public License for more details.
|
||||
*
|
||||
* You should have received a copy of the GNU General Public License
|
||||
* along with Red nCore; see the file COPYING. If not, write to the
|
||||
* Red Soft Corporation, 117105, Russia, Moscow, Nagornyy proyezd, 5.
|
||||
*
|
||||
* Linking this library statically or dynamically with other modules is
|
||||
* making a combined work based on this library. Thus, the terms and
|
||||
* conditions of the GNU General Public License cover the whole
|
||||
* combination.
|
||||
*
|
||||
* As a special exception, the copyright holders of this library give you
|
||||
* permission to link this library with independent modules to produce an
|
||||
* executable, regardless of the license terms of these independent
|
||||
* modules, and to copy and distribute the resulting executable under
|
||||
* terms of your choice, provided that you also meet, for each linked
|
||||
* independent module, the terms and conditions of the license of that
|
||||
* module. An independent module is a module which is not derived from
|
||||
* or based on this library. If you modify this library, you may extend
|
||||
* this exception to your version of the library, but you are not
|
||||
* obligated to do so. If you do not wish to do so, delete this
|
||||
* exception statement from your version.
|
||||
*/
|
||||
|
||||
package biz.redsoft.sample;
|
||||
|
||||
public class MainForm extends biz.redsoft.ncore.client.MainForm {
|
||||
|
||||
public static void main(String[] args) throws Throwable {
|
||||
biz.redsoft.ncore.client.MainForm.main(args);
|
||||
}
|
||||
}
|
Binary file not shown.
After Width: | Height: | Size: 953 B |
Binary file not shown.
After Width: | Height: | Size: 1016 B |
122
src/test/java/biz/redsoft/sample/TomcatStarter.java
Normal file
122
src/test/java/biz/redsoft/sample/TomcatStarter.java
Normal file
@ -0,0 +1,122 @@
|
||||
/*
|
||||
* Copyright (C) 2017 Red Soft Corporation.
|
||||
*
|
||||
* This file is part of Red nCore.
|
||||
*
|
||||
* Red nCore is free software; you can redistribute it and/or modify
|
||||
* it under the terms of the GNU General Public License as published by
|
||||
* the Free Software Foundation; either version 2, or (at your option)
|
||||
* any later version.
|
||||
*
|
||||
* Red nCore is distributed in the hope that it will be useful, but
|
||||
* WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
|
||||
* General Public License for more details.
|
||||
*
|
||||
* You should have received a copy of the GNU General Public License
|
||||
* along with Red nCore; see the file COPYING. If not, write to the
|
||||
* Red Soft Corporation, 117105, Russia, Moscow, Nagornyy proyezd, 5.
|
||||
*
|
||||
* Linking this library statically or dynamically with other modules is
|
||||
* making a combined work based on this library. Thus, the terms and
|
||||
* conditions of the GNU General Public License cover the whole
|
||||
* combination.
|
||||
*
|
||||
* As a special exception, the copyright holders of this library give you
|
||||
* permission to link this library with independent modules to produce an
|
||||
* executable, regardless of the license terms of these independent
|
||||
* modules, and to copy and distribute the resulting executable under
|
||||
* terms of your choice, provided that you also meet, for each linked
|
||||
* independent module, the terms and conditions of the license of that
|
||||
* module. An independent module is a module which is not derived from
|
||||
* or based on this library. If you modify this library, you may extend
|
||||
* this exception to your version of the library, but you are not
|
||||
* obligated to do so. If you do not wish to do so, delete this
|
||||
* exception statement from your version.
|
||||
*/
|
||||
|
||||
package biz.redsoft.sample;
|
||||
|
||||
import java.io.File;
|
||||
import java.io.IOException;
|
||||
import java.io.OutputStream;
|
||||
import java.net.InetAddress;
|
||||
import java.net.Socket;
|
||||
|
||||
import javax.servlet.ServletException;
|
||||
|
||||
import org.apache.catalina.LifecycleException;
|
||||
import org.apache.catalina.Server;
|
||||
import org.apache.catalina.WebResourceRoot;
|
||||
import org.apache.catalina.core.StandardContext;
|
||||
import org.apache.catalina.startup.Tomcat;
|
||||
import org.apache.catalina.webresources.DirResourceSet;
|
||||
import org.apache.catalina.webresources.FileResourceSet;
|
||||
import org.apache.catalina.webresources.StandardRoot;
|
||||
import org.apache.tomcat.util.scan.StandardJarScanner;
|
||||
|
||||
/**
|
||||
* @author Victor Bellavin
|
||||
*/
|
||||
public class TomcatStarter {
|
||||
private String contextPath = "/ncore";
|
||||
private int port = 8080;
|
||||
|
||||
private int shutdownPort = 8020;
|
||||
private String shutdownCommand = "SHUTDOWN";
|
||||
|
||||
public void start() throws ServletException, LifecycleException {
|
||||
System.setProperty("catalina.home", new File(".").getAbsolutePath());
|
||||
final Tomcat tomcat = new Tomcat();
|
||||
tomcat.setPort(port);
|
||||
tomcat.setBaseDir(".");
|
||||
tomcat.getHost().setAppBase(".");
|
||||
tomcat.getConnector(); // initialize standard HTTP 1.1 connector
|
||||
tomcat.enableNaming();
|
||||
final Server server = tomcat.getServer();
|
||||
server.setPort(shutdownPort);
|
||||
server.setShutdown(shutdownCommand);
|
||||
final StandardContext webContext = (StandardContext) tomcat.addWebapp(contextPath, "src/main/webapp");
|
||||
webContext.setUseNaming(true);
|
||||
final WebResourceRoot resources = new StandardRoot(webContext);
|
||||
//aliases to resources
|
||||
final String base = ap("");
|
||||
resources.addPreResources(new DirResourceSet(resources, "/META-INF/resources", ap("src/main/resources"), "/META-INF/resources"));
|
||||
//resources.addPreResources(new DirResourceSet(resources, "/WEB-INF/classes/export_templates", base, "/export_templates"));
|
||||
if (new File(base, "ncore-properties-local.xml").exists())
|
||||
resources.addPreResources(new FileResourceSet(resources, "/WEB-INF/ncore-properties-local.xml", base, "/ncore-properties-local.xml"));
|
||||
//resources.addPreResources(new FileResourceSet(resources, "/WEB-INF/ncore-properties-local-openid.xml", base, "/ncore-properties-local-openid.xml"));
|
||||
resources.addPreResources(new FileResourceSet(resources, "/WEB-INF/logback.xml", base, "/logback.xml"));
|
||||
webContext.setResources(resources);
|
||||
// IDEA не всегда корректно формирует пути. Отключим проверку ресурсов.
|
||||
((StandardJarScanner)webContext.getJarScanner()).setScanClassPath(false);
|
||||
webContext.setWorkDir("build/tomcat/work");
|
||||
tomcat.start();
|
||||
server.await();
|
||||
tomcat.stop();
|
||||
}
|
||||
|
||||
private String ap(String s) {
|
||||
return new File(s).getAbsolutePath();
|
||||
}
|
||||
|
||||
public void stop() throws IOException {
|
||||
final InetAddress serverAddress = InetAddress.getByName("localhost");
|
||||
final Socket socket = new Socket(serverAddress, shutdownPort);
|
||||
try (OutputStream os = socket.getOutputStream()) {
|
||||
final byte[] buffer = shutdownCommand.getBytes();
|
||||
os.write(buffer, 0, buffer.length);
|
||||
os.flush();
|
||||
}
|
||||
}
|
||||
|
||||
public static void main(String[] args) throws ServletException, LifecycleException, IOException {
|
||||
if (args.length > 0) {
|
||||
String command = args[0];
|
||||
if ("start".equals(command))
|
||||
new TomcatStarter().start();
|
||||
else if ("stop".equals(command))
|
||||
new TomcatStarter().stop();
|
||||
}
|
||||
}
|
||||
}
|
Reference in New Issue
Block a user