merge 1.10
This commit is contained in:
3
.gitignore
vendored
3
.gitignore
vendored
@ -6,4 +6,5 @@ gen
|
||||
.idea/workspace.xml
|
||||
.idea/misc.xml
|
||||
ncore-properties-local.xml
|
||||
*.iml
|
||||
*.iml
|
||||
/out
|
54
.idea/codeStyles/Project.xml
generated
Normal file
54
.idea/codeStyles/Project.xml
generated
Normal file
@ -0,0 +1,54 @@
|
||||
<component name="ProjectCodeStyleConfiguration">
|
||||
<code_scheme name="Project" version="173">
|
||||
<option name="FORMATTER_TAGS_ENABLED" value="true" />
|
||||
<JavaCodeStyleSettings>
|
||||
<option name="CLASS_COUNT_TO_USE_IMPORT_ON_DEMAND" value="999" />
|
||||
<option name="NAMES_COUNT_TO_USE_IMPORT_ON_DEMAND" value="999" />
|
||||
<option name="PACKAGES_TO_USE_IMPORT_ON_DEMAND">
|
||||
<value />
|
||||
</option>
|
||||
<option name="IMPORT_LAYOUT_TABLE">
|
||||
<value>
|
||||
<package name="biz.redsoft" withSubpackages="true" static="false" />
|
||||
<package name="biz.red_soft" withSubpackages="true" static="false" />
|
||||
<emptyLine />
|
||||
<package name="java" withSubpackages="true" static="false" />
|
||||
<emptyLine />
|
||||
<package name="javax" withSubpackages="true" static="false" />
|
||||
<emptyLine />
|
||||
<package name="org" withSubpackages="true" static="false" />
|
||||
<emptyLine />
|
||||
<package name="" withSubpackages="true" static="false" />
|
||||
<emptyLine />
|
||||
<package name="" withSubpackages="true" static="true" />
|
||||
</value>
|
||||
</option>
|
||||
</JavaCodeStyleSettings>
|
||||
<codeStyleSettings language="JAVA">
|
||||
<option name="KEEP_CONTROL_STATEMENT_IN_ONE_LINE" value="false" />
|
||||
<option name="ALIGN_MULTILINE_PARAMETERS" value="false" />
|
||||
<option name="CALL_PARAMETERS_WRAP" value="1" />
|
||||
<option name="METHOD_PARAMETERS_WRAP" value="1" />
|
||||
<option name="EXTENDS_LIST_WRAP" value="1" />
|
||||
<option name="THROWS_LIST_WRAP" value="1" />
|
||||
<option name="THROWS_KEYWORD_WRAP" value="1" />
|
||||
<option name="METHOD_CALL_CHAIN_WRAP" value="1" />
|
||||
<option name="BINARY_OPERATION_WRAP" value="1" />
|
||||
<option name="TERNARY_OPERATION_WRAP" value="1" />
|
||||
<option name="ARRAY_INITIALIZER_WRAP" value="1" />
|
||||
<option name="ASSERT_STATEMENT_WRAP" value="1" />
|
||||
<option name="VARIABLE_ANNOTATION_WRAP" value="2" />
|
||||
<option name="ENUM_CONSTANTS_WRAP" value="2" />
|
||||
<indentOptions>
|
||||
<option name="INDENT_SIZE" value="2" />
|
||||
<option name="CONTINUATION_INDENT_SIZE" value="4" />
|
||||
</indentOptions>
|
||||
</codeStyleSettings>
|
||||
<codeStyleSettings language="XML">
|
||||
<indentOptions>
|
||||
<option name="INDENT_SIZE" value="2" />
|
||||
<option name="CONTINUATION_INDENT_SIZE" value="4" />
|
||||
</indentOptions>
|
||||
</codeStyleSettings>
|
||||
</code_scheme>
|
||||
</component>
|
6
.idea/codeStyles/codeStyleConfig.xml
generated
Normal file
6
.idea/codeStyles/codeStyleConfig.xml
generated
Normal file
@ -0,0 +1,6 @@
|
||||
<component name="ProjectCodeStyleConfiguration">
|
||||
<state>
|
||||
<option name="USE_PER_PROJECT_SETTINGS" value="true" />
|
||||
<option name="PREFERRED_PROJECT_CODE_STYLE" value="Red" />
|
||||
</state>
|
||||
</component>
|
48
.idea/compiler.xml
generated
48
.idea/compiler.xml
generated
@ -11,8 +11,56 @@
|
||||
<entry name="!?*.kt" />
|
||||
<entry name="!?*.clj" />
|
||||
</wildcardResourcePatterns>
|
||||
<annotationProcessing>
|
||||
<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>
|
||||
<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="$USER_HOME$/.gradle/caches/modules-2/files-2.1/com.fasterxml.jackson.core/jackson-core/2.13.4/cf934c681294b97ef6d80082faeefbe1edadf56/jackson-core-2.13.4.jar" />
|
||||
<entry name="$USER_HOME$/.gradle/caches/modules-2/files-2.1/com.fasterxml.jackson.core/jackson-annotations/2.13.4/858c6cc78e1f08a885b1613e1d817c829df70a6e/jackson-annotations-2.13.4.jar" />
|
||||
<entry name="$USER_HOME$/.gradle/caches/modules-2/files-2.1/com.fasterxml.jackson.core/jackson-databind/2.13.4/98b0edfa8e4084078f10b7b356c300ded4a71491/jackson-databind-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="$USER_HOME$/.gradle/caches/modules-2/files-2.1/com.google.guava/guava/31.0.1-jre/119ea2b2bc205b138974d351777b20f02b92704b/guava-31.0.1-jre.jar" />
|
||||
<entry name="$USER_HOME$/.gradle/caches/modules-2/files-2.1/com.google.guava/failureaccess/1.0.1/1dcf1de382a0bf95a3d8b0849546c88bac1292c9/failureaccess-1.0.1.jar" />
|
||||
<entry name="$USER_HOME$/.gradle/caches/modules-2/files-2.1/com.google.guava/listenablefuture/9999.0-empty-to-avoid-conflict-with-guava/b421526c5f297295adef1c886e5246c39d4ac629/listenablefuture-9999.0-empty-to-avoid-conflict-with-guava.jar" />
|
||||
<entry name="$USER_HOME$/.gradle/caches/modules-2/files-2.1/com.google.code.findbugs/jsr305/3.0.2/25ea2e8b0c338a877313bd4672d3fe056ea78f0d/jsr305-3.0.2.jar" />
|
||||
<entry name="$USER_HOME$/.gradle/caches/modules-2/files-2.1/org.checkerframework/checker-qual/3.12.0/d5692f0526415fcc6de94bb5bfbd3afd9dd3b3e5/checker-qual-3.12.0.jar" />
|
||||
<entry name="$USER_HOME$/.gradle/caches/modules-2/files-2.1/com.google.errorprone/error_prone_annotations/2.7.1/458d9042f7aa6fa9a634df902b37f544e15aacac/error_prone_annotations-2.7.1.jar" />
|
||||
<entry name="$USER_HOME$/.gradle/caches/modules-2/files-2.1/com.google.j2objc/j2objc-annotations/1.3/ba035118bc8bac37d7eff77700720999acd9986d/j2objc-annotations-1.3.jar" />
|
||||
</processorPath>
|
||||
<module name="ncore-sample.sample.main" />
|
||||
</profile>
|
||||
</annotationProcessing>
|
||||
<bytecodeTargetLevel>
|
||||
<module name="biz.redsoft.sample-sample" target="1.8" />
|
||||
<module name="biz.redsoft.sample.sample" target="1.8" />
|
||||
<module name="biz.redsoft.sample.sample.main" target="1.8" />
|
||||
<module name="biz.redsoft.sample.sample.test" target="1.8" />
|
||||
<module name="ncore-sample.sample.main" target="1.8" />
|
||||
<module name="sample" target="1.8" />
|
||||
<module name="sample.test" target="1.8" />
|
||||
</bytecodeTargetLevel>
|
||||
</component>
|
||||
</project>
|
15
.idea/jarRepositories.xml
generated
15
.idea/jarRepositories.xml
generated
@ -21,5 +21,20 @@
|
||||
<option name="name" value="maven" />
|
||||
<option name="url" value="http://nexus.red-soft.biz/repository/public" />
|
||||
</remote-repository>
|
||||
<remote-repository>
|
||||
<option name="id" value="maven" />
|
||||
<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>
|
7
.idea/modules.xml
generated
7
.idea/modules.xml
generated
@ -3,7 +3,12 @@
|
||||
<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$/sample.iml" filepath="$PROJECT_DIR$/sample.iml" />
|
||||
<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/2142120877/ncore-sample.sample.main.iml" filepath="$PROJECT_DIR$/.idea/modules/2142120877/ncore-sample.sample.main.iml" />
|
||||
<module fileurl="file://$PROJECT_DIR$/.idea/modules/2142120877/sample.iml" filepath="$PROJECT_DIR$/.idea/modules/2142120877/sample.iml" />
|
||||
<module fileurl="file://$PROJECT_DIR$/.idea/modules/2142120877/sample.test.iml" filepath="$PROJECT_DIR$/.idea/modules/2142120877/sample.test.iml" />
|
||||
</modules>
|
||||
</component>
|
||||
</project>
|
2
.idea/runConfigurations/MainForm.xml
generated
2
.idea/runConfigurations/MainForm.xml
generated
@ -3,7 +3,7 @@
|
||||
<option name="ALTERNATIVE_JRE_PATH" value="1.8 (2)" />
|
||||
<option name="ALTERNATIVE_JRE_PATH_ENABLED" value="true" />
|
||||
<option name="MAIN_CLASS_NAME" value="biz.redsoft.ncore.client.MainForm" />
|
||||
<module name="biz.redsoft.sample-sample" />
|
||||
<module name="sample.main" />
|
||||
<option name="PROGRAM_PARAMETERS" value="-config ncore-properties.xml -config ncore-properties-local.xml" />
|
||||
<option name="VM_PARAMETERS" value="-Dlog.console.encoding=UTF-8" />
|
||||
<method v="2">
|
||||
|
@ -5,7 +5,7 @@
|
||||
|
||||
Для данного проекта можно использовать базу ядра.
|
||||
|
||||
Таски запускаются с помощью gradle wrapper. Версия Gradle - 4.10.3.
|
||||
Таски запускаются с помощью gradle wrapper. Версия Gradle - 7.5.1.
|
||||
|
||||
Nix
|
||||
```bash
|
||||
|
15
build.gradle
15
build.gradle
@ -5,11 +5,9 @@ plugins {
|
||||
id 'application'
|
||||
id 'java-library'
|
||||
id 'war'
|
||||
id 'gradle-ncore' version("$pluginVersion")
|
||||
id 'gradle-ncore' version('3.0.59')
|
||||
}
|
||||
|
||||
apply from: "dependencies.gradle"
|
||||
|
||||
targetCompatibility = 1.8
|
||||
|
||||
ncore {
|
||||
@ -17,6 +15,7 @@ ncore {
|
||||
sourceEncoding = 'UTF-8'
|
||||
}
|
||||
|
||||
|
||||
repositories {
|
||||
maven {
|
||||
url 'https://ncore-repo.red-soft.ru/repository/ncore'
|
||||
@ -39,6 +38,8 @@ dependencies {
|
||||
}
|
||||
|
||||
|
||||
group = 'biz.redsoft.sample'
|
||||
|
||||
// writing build process to a log file
|
||||
// --------------------- BUILD LOG SETTINGS ----------------------
|
||||
def tstamp = new Date().format('yyyy-MM-dd_HH-mm-ss')
|
||||
@ -129,8 +130,10 @@ startScripts {
|
||||
}
|
||||
|
||||
distTar {
|
||||
duplicatesStrategy = DuplicatesStrategy.WARN
|
||||
duplicatesStrategy = DuplicatesStrategy.EXCLUDE
|
||||
}
|
||||
distZip {
|
||||
duplicatesStrategy = DuplicatesStrategy.WARN
|
||||
}
|
||||
duplicatesStrategy = DuplicatesStrategy.EXCLUDE
|
||||
}
|
||||
ncoreRestoreDB.writeToWebProps = false
|
||||
ncoreRestoreDB.generateUniqueDBPath = false
|
BIN
db/ncore.zip
BIN
db/ncore.zip
Binary file not shown.
@ -1,12 +1,9 @@
|
||||
repositories {
|
||||
mavenLocal()
|
||||
maven {
|
||||
url 'https://ncore-repo.red-soft.ru/repository/public'
|
||||
if (project.credentials.user != null && project.credentials.password != null) {
|
||||
credentials {
|
||||
username project.credentials.user
|
||||
password project.credentials.password
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
dependencies {
|
||||
implementation("biz.redsoft.ncore:ncore:1.10.275.0")
|
||||
updates("biz.redsoft.ncore:ncore:1.10.275.0:updates")
|
||||
codemaker("biz.redsoft.ncore:ncore:1.10.275.0")
|
||||
implementation("biz.redsoft.ncore:ncore-util:1.10.275.0")
|
||||
implementation("biz.redsoft.ncore:ncore-cryptoapisec:1.10.275.0")
|
||||
implementation("biz.redsoft.ncore:ncore-jna:1.10.275.0")
|
||||
codemaker("biz.redsoft.ncore:ncore-gen:1.10.275.0")
|
||||
}
|
@ -1,2 +1,4 @@
|
||||
biz.redsoft.ncore.version=1.9.19.251
|
||||
pluginVersion=3.0.82
|
||||
biz.redsoft.ncore.version=1.10.275.0
|
||||
org.gradle.jvmargs=-Xmx4g -XX:MaxPermSize=2048m -XX:+HeapDumpOnOutOfMemoryError
|
||||
org.gradle.daemon=false
|
||||
org.gradle.configureondemand=true
|
@ -2,8 +2,10 @@
|
||||
<!DOCTYPE properties SYSTEM "http://java.sun.com/dtd/properties.dtd">
|
||||
<properties>
|
||||
<entry key="ncore.developer.mode">true</entry>
|
||||
<!-- <entry key="ncore.db.url">jdbc:firebirdsql:localhost:ncore-sample-dev?lc_ctype=WIN1251</entry> -->
|
||||
<!-- <entry key="ncore.db.url">jdbc:firebirdsql:localhost:ncore-sample-dev?lc_ctype=WIN1251</entry> -->
|
||||
<!-- Для автоматизированного рестора базы данных запустить gradlew nRDB-->
|
||||
<!-- На линуксе файл должен быть доступен группе firbird/reddatabase!!! -->
|
||||
<entry key="ncore.db.backup.path">db/ncore.zip</entry>
|
||||
<entry key="ncore.db.restore.path">~/sample-db/ncore-sample.fdb</entry>
|
||||
<!-- На линуксе файл должен быть доступен группе firbird/reddatabase!!! -->
|
||||
<entry key="ncore.db.restore.path">/db/ncore-sample.fdb</entry>
|
||||
</properties>
|
||||
|
@ -1,5 +1,6 @@
|
||||
pluginManagement{
|
||||
repositories {
|
||||
mavenLocal()
|
||||
maven { url 'https://ncore-repo.red-soft.ru/repository/public' }
|
||||
}
|
||||
}
|
||||
|
Binary file not shown.
After Width: | Height: | Size: 953 B |
Binary file not shown.
After Width: | Height: | Size: 1016 B |
@ -22,11 +22,12 @@
|
||||
</context-param>
|
||||
<servlet>
|
||||
<servlet-name>ncore</servlet-name>
|
||||
<servlet-class>biz.redsoft.ncore.server.NcoreApplicationServlet</servlet-class>
|
||||
<!-- <servlet-class>biz.redsoft.ncore_vaadin.server.NcoreApplicationServlet</servlet-class> -->
|
||||
<!-- <servlet-class>biz.redsoft.ncore_vaadinflow.server.NcoreApplicationServlet</servlet-class> -->
|
||||
<init-param>
|
||||
<description>Vaadin application class to start</description>
|
||||
<param-name>UI</param-name>
|
||||
<param-value>biz.redsoft.ncore.client.vaadin.WebApplication</param-value>
|
||||
<param-value>biz.redsoft.ncore_vaadin.client.vaadin.WebApplication</param-value>
|
||||
</init-param>
|
||||
<init-param>
|
||||
<description>Application widgetset</description>
|
||||
@ -50,6 +51,7 @@
|
||||
<listener-class>biz.redsoft.ncore.dx.init.DxInitializationListener</listener-class>
|
||||
</listener>
|
||||
<listener>
|
||||
<listener-class>biz.redsoft.ncore.client.vaadin.VaadinSessionListener</listener-class>
|
||||
<!-- <listener-class>biz.redsoft.ncore_vaadin.client.vaadin.VaadinSessionListener</listener-class> -->
|
||||
<!-- <listener-class>biz.redsoft.ncore_vaadinflow.client.vaadin.VaadinSessionListener</listener-class> -->
|
||||
</listener>
|
||||
</web-app>
|
||||
|
120
src/test/java/biz/redsoft/sample/TomcatStarter.java
Normal file
120
src/test/java/biz/redsoft/sample/TomcatStarter.java
Normal file
@ -0,0 +1,120 @@
|
||||
/*
|
||||
* 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;
|
||||
|
||||
|
||||
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