aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--doc/PDFAS5_Release_Notes.md2
-rw-r--r--pdf-as-web-db/build.gradle155
-rw-r--r--pdf-as-web/src/main/configuration/pdf-as-web.properties6
3 files changed, 137 insertions, 26 deletions
diff --git a/doc/PDFAS5_Release_Notes.md b/doc/PDFAS5_Release_Notes.md
index ad4881ac..6acefd15 100644
--- a/doc/PDFAS5_Release_Notes.md
+++ b/doc/PDFAS5_Release_Notes.md
@@ -48,3 +48,5 @@ Der Security-Layer-Einsprungpunkt der ID Austria (`bku.mobile.url`) hat sich geÃ
Zum verbesserten Monitoring von PDF-AS-Web wird der Spring Boot Admin Client mit ausgeliefert, um eine Integration in einen Monitoring-Server zu ermöglichen. Im Standardzustand ist dieser deaktiviert. Um ihn zu aktivieren, sollten `spring.boot.admin.client.enabled` und `spring.boot.admin.client.url` entsprechend gesetzt werden.
Der Parameter `web.upload.RequestsizeMax` wurde zur besseren Konsistenz zu `web.upload.requestsizeMax` umbenannt.
+
+Das Releasepacket wurde um einen separaten PDF-AS-Web Build `pdf-as-web-db-*` ergänzt welcher das im Handbuch beschriebene Datenbank-Backend für die SOAP Schnittstelle bereits inkludiert.
diff --git a/pdf-as-web-db/build.gradle b/pdf-as-web-db/build.gradle
index c3e23701..5ba12625 100644
--- a/pdf-as-web-db/build.gradle
+++ b/pdf-as-web-db/build.gradle
@@ -1,39 +1,148 @@
plugins {
- id 'java-library'
- id 'eclipse'
- id 'distribution'
+ id 'java-library'
+ id 'eclipse'
+ id 'distribution'
+}
+
+configurations {
+ tomcatDist
+}
+
+dependencies {
+ tomcatDist "org.apache.tomcat:tomcat:${tomcatVersion}@zip"
}
jar {
- manifest {
- attributes 'Implementation-Title': 'PDF-AS-5 Web Extension Library', 'JARMANIFEST': 'PDF-AS-LIB'
- }
+ manifest {
+ attributes 'Implementation-Title': 'PDF-AS-5 Web Extension Library', 'JARMANIFEST': 'PDF-AS-LIB'
+ }
}
repositories {
- mavenLocal()
- mavenCentral()
+ mavenLocal()
+ mavenCentral()
}
dependencies {
- implementation project (':pdf-as-web')
- implementation project (':pdf-as-web-status')
- implementation project (':pdf-as-web-statistic-api')
- api "org.hibernate:hibernate-core:6.6.44.Final"
- implementation group: 'ch.qos.logback', name: 'logback-classic', version: logbackVersion
- implementation group: 'org.slf4j', name: 'slf4j-api', version: slf4jVersion
+ implementation project (':pdf-as-web')
+ implementation project (':pdf-as-web-status')
+ implementation project (':pdf-as-web-statistic-api')
+ api "org.hibernate:hibernate-core:6.6.44.Final"
+ implementation group: 'ch.qos.logback', name: 'logback-classic', version: logbackVersion
+ implementation group: 'org.slf4j', name: 'slf4j-api', version: slf4jVersion
+ runtimeOnly 'org.mariadb.jdbc:mariadb-java-client:3.5.6'
+
+ testRuntimeOnly 'com.h2database:h2:2.4.240'
+}
+
+/*
+ * Release-Bundle analog zu :pdf-as-web, erweitert um die DB-Extension.
+ */
+def tomcatVer = tomcatVersion
+def tomcatDir = layout.buildDirectory.dir("tomcat-bundling")
+def tomcatHome = tomcatDir.map { it.dir("apache-tomcat-${tomcatVer}") }
+def releasesDirectory = layout.projectDirectory.dir("releases/${project.version}")
+def webProject = project(':pdf-as-web')
+def dbExtensionJar = tasks.named('jar', Jar)
+def dbExtensionRuntimeClasspath = configurations.named('runtimeClasspath')
+
+tasks.register('extractTomcat', Sync) {
+ from({
+ zipTree(configurations.tomcatDist.singleFile)
+ })
+ into(tomcatDir)
+}
+
+tasks.register('cleanWebAppsInTomcat', Delete) {
+ dependsOn('extractTomcat')
+ delete(tomcatHome.map { it.dir("webapps") })
+}
+
+tasks.register('putTemplateIntoTomcat', Copy) {
+ dependsOn('cleanWebAppsInTomcat')
+ from(webProject.layout.projectDirectory.dir("src/main/assembly/tomcat"))
+ into(tomcatHome)
+}
+
+tasks.register('putConfigIntoTomcat', Copy) {
+ dependsOn(':pdf-as-lib:processResources', 'putTemplateIntoTomcat')
+ from(zipTree(project(':pdf-as-lib').layout.buildDirectory.file('resources/main/config/config.zip')))
+ into(tomcatHome.map { it.dir("conf/pdf-as") })
+}
+
+tasks.register('putWebConfigIntoTomcat', Copy) {
+ dependsOn('putConfigIntoTomcat')
+ from(webProject.layout.projectDirectory.dir("src/main/configuration"))
+ into(tomcatHome.map { it.dir("conf/pdf-as") })
+}
+
+tasks.register('putDbExtensionIntoWebApp', Zip) {
+ dependsOn(dbExtensionJar, ':pdf-as-web:bootWar')
+ from(zipTree(webProject.tasks.named('bootWar').flatMap { it.archiveFile }))
+ from(dbExtensionJar.flatMap { it.archiveFile }) {
+ into 'WEB-INF/lib'
+ }
+ from(dbExtensionRuntimeClasspath) {
+ into 'WEB-INF/lib'
+ }
+ archiveFileName = "pdf-as-web-db-${project.version}.war"
+ destinationDirectory = layout.buildDirectory.dir('db-enhanced-webapp')
+ duplicatesStrategy = DuplicatesStrategy.EXCLUDE
+}
+
+/*
+ * DB-Extension weiterhin auch separat als Lib-Verzeichnis ablegen.
+ * Das entspricht dem bisherigen Extension-Artefakt: eigenes JAR + Runtime-Dependencies.
+ */
+tasks.register('putDbExtensionLibs', Copy) {
+ dependsOn(dbExtensionJar)
+ from(dbExtensionJar.flatMap { it.archiveFile })
+ from(dbExtensionRuntimeClasspath)
+ into(releasesDirectory.dir("pdf-as-web-db-extension-${project.version}/lib"))
+ duplicatesStrategy = DuplicatesStrategy.EXCLUDE
+}
- testRuntimeOnly 'com.h2database:h2:2.4.240'
+tasks.register('injectPdfAsWebApp', Copy) {
+ dependsOn('putDbExtensionIntoWebApp', 'extractTomcat')
+ from(tasks.named('putDbExtensionIntoWebApp', Zip).flatMap { it.archiveFile }) {
+ rename { 'pdf-as-web.war' }
+ }
+ into(tomcatHome.map { it.dir("webapps") })
+}
+
+tasks.register('buildTomcatZip', Zip) {
+ dependsOn('injectPdfAsWebApp')
+ from(tomcatDir)
+ archiveFileName = "apache-tomcat-${tomcatVer}-pdf-as-web-db-${project.version}.zip"
+ destinationDirectory = layout.buildDirectory
+}
+
+tasks.register('buildTomcatTar', Tar) {
+ dependsOn('injectPdfAsWebApp')
+ from(tomcatDir)
+ archiveFileName = "apache-tomcat-${tomcatVer}-pdf-as-web-db-${project.version}.tar"
+ destinationDirectory = layout.buildDirectory
+ compression = Compression.NONE
+}
+
+tasks.register('releaseConfig', Copy) {
+ from(webProject.layout.projectDirectory.file('src/main/configuration/pdf-as-web.properties'))
+ into(releasesDirectory.dir("cfg"))
}
tasks.register('releases', Copy) {
- from jar.outputs
- from distZip.outputs
- from distTar.outputs
- into rootDir.toString() + "/releases/" + version
+ dependsOn(dbExtensionJar, 'sourcesJar', 'distZip', 'distTar', 'releaseConfig', 'putDbExtensionLibs', 'buildTomcatZip', 'buildTomcatTar')
+
+ from(dbExtensionJar.flatMap { it.archiveFile })
+ from(tasks.named('sourcesJar').flatMap { it.archiveFile })
+ from(tasks.named('distZip').flatMap { it.archiveFile })
+ from(tasks.named('distTar').flatMap { it.archiveFile })
+ from(tasks.named('putDbExtensionIntoWebApp', Zip).flatMap { it.archiveFile })
+ from(tasks.named('buildTomcatZip').flatMap { it.archiveFile })
+ from(tasks.named('buildTomcatTar').flatMap { it.archiveFile })
+ into(releasesDirectory)
}
-releases.dependsOn jar
-releases.dependsOn sourcesJar
-releases.dependsOn distZip
-releases.dependsOn distTar
+tasks.named('clean', Delete) {
+ delete(releasesDirectory)
+}
diff --git a/pdf-as-web/src/main/configuration/pdf-as-web.properties b/pdf-as-web/src/main/configuration/pdf-as-web.properties
index fea5e276..a33792c7 100644
--- a/pdf-as-web/src/main/configuration/pdf-as-web.properties
+++ b/pdf-as-web/src/main/configuration/pdf-as-web.properties
@@ -83,10 +83,10 @@ request.store=at.gv.egiz.pdfas.web.store.InMemoryRequestStore
#request.db.timeout=600
#Hibernate Properties for DB Store
+#hibernate.props.hibernate.dialect=org.hibernate.dialect.MariaDBDialect
+#hibernate.props.hibernate.connection.driver_class=org.mariadb.jdbc.Driver
+#hibernate.props.hibernate.connection.url=jdbc:mariadb://localhost:3306/pdfas
-#hibernate.props.hibernate.dialect=org.hibernate.dialect.MySQLDialect
-#hibernate.props.hibernate.connection.driver_class=com.mysql.jdbc.Driver
-#hibernate.props.hibernate.connection.url=jdbc:mysql://localhost/pdfasweb
#hibernate.props.hibernate.connection.username=pdfasweb
#hibernate.props.hibernate.connection.password=pdfasweb
#hibernate.props.hibernate.connection.pool_size=5