Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

perf: refactor soap-endpoints to not unnecessarily store large xml sessionkeys from the input message #141

Merged
merged 16 commits into from
Sep 13, 2023
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
63 changes: 63 additions & 0 deletions Dockerfile.java11
Original file line number Diff line number Diff line change
@@ -0,0 +1,63 @@
FROM tomcat:8-jre11-temurin-jammy AS base

ARG GID=1000
ARG UID=1000

# Secure files (CIS-DI-0008)
RUN chmod -R 751 /usr/bin /usr/sbin

# Create folder and user, and set file permissions
RUN set -eux && \
# Create default directory for configurations, properties and credential filesystem
mkdir -p /opt/frank/secrets && \
# Create tomcat user for stepping down from root
groupadd -g ${GID} tomcat && \
useradd -u ${UID} -g tomcat -s /usr/sbin/nologin -l tomcat && \
# Change permissions and ownership of files
chown -hR tomcat:tomcat ${CATALINA_HOME} && \
chown -hR tomcat:tomcat /opt/frank

# All previous actions are performed as root. Run following instructions and start container as tomcat.
USER tomcat

# Copy environment configuration
COPY --from=docker.io/wearefrank/frank-framework:7.9-20230905.223421 --chown=tomcat /usr/local/tomcat/conf/catalina.properties /usr/local/tomcat/conf/catalina.properties
COPY --from=docker.io/wearefrank/frank-framework:7.9-20230905.223421 --chown=tomcat /usr/local/tomcat/lib/ /usr/local/tomcat/lib/
COPY --from=docker.io/wearefrank/frank-framework:7.9-20230905.223421 --chown=tomcat /usr/local/tomcat/webapps/ROOT /usr/local/tomcat/webapps/ROOT

# TempFix TODO: Move this to the credentialprovider.properties
ENV credentialFactory.class=nl.nn.credentialprovider.PropertyFileCredentialFactory
ENV credentialFactory.map.properties=/opt/frank/resources/credentials.properties
ENV zaakbrug.zds.timezone=UTC

# Copy dependencies
COPY --chown=tomcat lib/server/ /usr/local/tomcat/lib/
COPY --chown=tomcat lib/webapp/ /usr/local/tomcat/webapps/ROOT/WEB-INF/lib/

# When deploying the "context.xml" should be copied to /usr/local/tomcat/conf/Catalina/localhost/ROOT.xml
COPY --chown=tomcat src/main/webapp/META-INF/context.xml /usr/local/tomcat/conf/Catalina/localhost/ROOT.xml

# Copy Frank!
COPY --chown=tomcat src/main/configurations/ /opt/frank/configurations/
COPY --chown=tomcat src/main/resources/ /opt/frank/resources/
COPY --chown=tomcat src/test/testtool/ /opt/frank/testtool/

# Compile custom class
FROM eclipse-temurin:8-jdk-jammy AS build

COPY --from=base /usr/local/tomcat/lib/ /usr/local/tomcat/lib/
COPY --from=base /usr/local/tomcat/webapps/ROOT /usr/local/tomcat/webapps/ROOT

COPY src/main/java /tmp/java
RUN mkdir /tmp/classes \
&& javac \
/tmp/java/nl/nn/adapterframework/parameters/Parameter.java \
-classpath "/usr/local/tomcat/webapps/ROOT/WEB-INF/lib/*:/usr/local/tomcat/lib/*" \
-verbose -d /tmp/classes

FROM base AS final

COPY --from=build --chown=tomcat /tmp/classes/ /usr/local/tomcat/webapps/ROOT/WEB-INF/classes

HEALTHCHECK --interval=15s --timeout=5s --start-period=30s --retries=60 \
CMD curl --fail --silent http://localhost:8080/iaf/api/server/health || (curl --silent http://localhost:8080/iaf/api/server/health && exit 1)
14 changes: 14 additions & 0 deletions docker-compose.zaakbrug.dev.perf-tests.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,14 @@
version: '3.8'

services:
zaakbrug:
build:
context: .
dockerfile: ./Dockerfile.java11
environment:
- zaakbrug.zgw.zaken-api.timeout=120000
- zaakbrug.zgw.catalogi-api.timeout=120000
- zaakbrug.zgw.documenten-api.timeout=120000
- zaakbrug.zgw.besluiten-api.timeout=120000
- soap.bus.org.apache.cxf.stax.maxTextLength=1000000000
- CATALINA_OPTS=$CATALINA_OPTS -Xmx24g
4 changes: 3 additions & 1 deletion docker/open-zaak-nginx/default.conf
Original file line number Diff line number Diff line change
@@ -1,17 +1,19 @@
server {
listen 9001;
server_name open-zaak.nginx;
client_max_body_size 200m;
client_max_body_size 1000m;

location /private-media/ {
sendfile on;
proxy_buffering off;

internal;
alias /private-media/;
}

location / {
sendfile on;
proxy_buffering off;

proxy_pass http://open-zaak.dev:8000/;
proxy_set_header Host $host:$server_port;
Expand Down
91 changes: 91 additions & 0 deletions docs/zaakbrug-generic-object-xslt-examples.drawio

Large diffs are not rendered by default.

679 changes: 161 additions & 518 deletions e2e/SoapUI/zaakbrug-e2e-soapui-project.xml

Large diffs are not rendered by default.

Binary file modified e2e/SoapUI/zaakbrug-e2e-soapui-project.xml.zip
Binary file not shown.
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
<xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform" xmlns:StUF="http://www.egem.nl/StUF/StUF0301" xmlns:ZKN="http://www.egem.nl/StUF/sector/zkn/0310" version="2.0">
<xsl:output method="xml" version="1.0" encoding="UTF-8" indent="yes"/>
<xsl:param name="UnwrapMessageResult" as="node()?"/>
<xsl:param name="Stuurgegevens" as="node()?"/>

<xsl:template match="/">
<StUF:Bv02Bericht>
Expand Down
Original file line number Diff line number Diff line change
@@ -1,23 +1,23 @@
<xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform" xmlns:StUF="http://www.egem.nl/StUF/StUF0301" xmlns:ZKN="http://www.egem.nl/StUF/sector/zkn/0310" version="2.0">
<xsl:output method="xml" version="1.0" encoding="UTF-8" indent="yes"/>
<xsl:param name="UnwrapMessageResult" as="node()?" />
<xsl:param name="Stuurgegevens" as="node()?" />

<xsl:template match="/">
<StUF:Bv03Bericht>
<StUF:stuurgegevens>
<StUF:berichtcode>Bv03</StUF:berichtcode>
<StUF:zender>
<StUF:organisatie><xsl:value-of select="$UnwrapMessageResult/*/stuurgegevens/ontvanger/organisatie"/></StUF:organisatie>
<StUF:applicatie><xsl:value-of select="$UnwrapMessageResult/*/stuurgegevens/ontvanger/applicatie"/></StUF:applicatie>
<StUF:organisatie><xsl:value-of select="$Stuurgegevens/stuurgegevens/ontvanger/organisatie"/></StUF:organisatie>
<StUF:applicatie><xsl:value-of select="$Stuurgegevens/stuurgegevens/ontvanger/applicatie"/></StUF:applicatie>
</StUF:zender>
<StUF:ontvanger>
<StUF:organisatie><xsl:value-of select="$UnwrapMessageResult/*/stuurgegevens/zender/organisatie"/></StUF:organisatie>
<StUF:applicatie><xsl:value-of select="$UnwrapMessageResult/*/stuurgegevens/zender/applicatie"/></StUF:applicatie>
<StUF:gebruiker><xsl:value-of select="$UnwrapMessageResult/*/stuurgegevens/zender/gebruiker"/></StUF:gebruiker>
<StUF:organisatie><xsl:value-of select="$Stuurgegevens/stuurgegevens/zender/organisatie"/></StUF:organisatie>
<StUF:applicatie><xsl:value-of select="$Stuurgegevens/stuurgegevens/zender/applicatie"/></StUF:applicatie>
<StUF:gebruiker><xsl:value-of select="$Stuurgegevens/stuurgegevens/zender/gebruiker"/></StUF:gebruiker>
</StUF:ontvanger>
<StUF:referentienummer><xsl:value-of select="$UnwrapMessageResult/*/stuurgegevens/referentienummer"/></StUF:referentienummer>
<StUF:tijdstipBericht><xsl:value-of select="$UnwrapMessageResult/*/stuurgegevens/tijdstipBericht"/></StUF:tijdstipBericht>
<StUF:crossRefnummer><xsl:value-of select="$UnwrapMessageResult/*/stuurgegevens/referentienummer"/></StUF:crossRefnummer>
<StUF:referentienummer><xsl:value-of select="$Stuurgegevens/stuurgegevens/referentienummer"/></StUF:referentienummer>
<StUF:tijdstipBericht><xsl:value-of select="$Stuurgegevens/stuurgegevens/tijdstipBericht"/></StUF:tijdstipBericht>
<StUF:crossRefnummer><xsl:value-of select="$Stuurgegevens/stuurgegevens/referentienummer"/></StUF:crossRefnummer>
</StUF:stuurgegevens>
</StUF:Bv03Bericht>
</xsl:template>
Expand Down
Original file line number Diff line number Diff line change
@@ -1,70 +1,71 @@
<xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform" xmlns:StUF="http://www.egem.nl/StUF/StUF0301" xmlns:ZKN="http://www.egem.nl/StUF/sector/zkn/0310" xmlns:xmime="http://www.w3.org/2005/05/xmlmime" version="2.0">
<xsl:output method="xml" version="1.0" encoding="UTF-8" indent="yes"/>
<xsl:param name="UnwrapMessageResult" as="node()?" />
<xsl:param name="CheckOutZaakDocument" as="node()?" />
<xsl:param name="GetZaakDocumentLezenResult" as="node()?" />
<xsl:param name="Stuurgegevens" as="node()?" />
<!-- <xsl:param name="Parameters" as="node()?" /> -->
<xsl:param name="ZgwLock" as="node()?" />
<xsl:param name="ZdsZaakDocumentInhoud" as="node()?" />

<xsl:template match="/">
<ZKN:geefZaakdocumentbewerken_Du02>
<ZKN:stuurgegevens>
<StUF:berichtcode>Du02</StUF:berichtcode>
<StUF:zender>
<StUF:organisatie><xsl:value-of select="$UnwrapMessageResult/*/stuurgegevens/ontvanger/organisatie"/></StUF:organisatie>
<StUF:applicatie><xsl:value-of select="$UnwrapMessageResult/*/stuurgegevens/ontvanger/applicatie"/></StUF:applicatie>
<StUF:organisatie><xsl:value-of select="$Stuurgegevens/stuurgegevens/ontvanger/organisatie"/></StUF:organisatie>
<StUF:applicatie><xsl:value-of select="$Stuurgegevens/stuurgegevens/ontvanger/applicatie"/></StUF:applicatie>
</StUF:zender>
<StUF:ontvanger>
<StUF:organisatie><xsl:value-of select="$UnwrapMessageResult/*/stuurgegevens/zender/organisatie"/></StUF:organisatie>
<StUF:applicatie><xsl:value-of select="$UnwrapMessageResult/*/stuurgegevens/zender/applicatie"/></StUF:applicatie>
<StUF:gebruiker><xsl:value-of select="$UnwrapMessageResult/*/stuurgegevens/zender/gebruiker"/></StUF:gebruiker>
<StUF:organisatie><xsl:value-of select="$Stuurgegevens/stuurgegevens/zender/organisatie"/></StUF:organisatie>
<StUF:applicatie><xsl:value-of select="$Stuurgegevens/stuurgegevens/zender/applicatie"/></StUF:applicatie>
<StUF:gebruiker><xsl:value-of select="$Stuurgegevens/stuurgegevens/zender/gebruiker"/></StUF:gebruiker>
</StUF:ontvanger>
<StUF:referentienummer><xsl:value-of select="$UnwrapMessageResult/*/stuurgegevens/referentienummer"/></StUF:referentienummer>
<StUF:referentienummer><xsl:value-of select="$Stuurgegevens/stuurgegevens/referentienummer"/></StUF:referentienummer>
<StUF:tijdstipBericht><xsl:value-of select="format-dateTime(current-dateTime(), '[Y0001][M01][D01][H01][m01][s01]')"/></StUF:tijdstipBericht>
<StUF:crossRefnummer><xsl:value-of select="$UnwrapMessageResult/*/stuurgegevens/referentienummer"/></StUF:crossRefnummer>
<StUF:crossRefnummer><xsl:value-of select="$Stuurgegevens/stuurgegevens/referentienummer"/></StUF:crossRefnummer>
<StUF:functie>geefZaakdocumentbewerken</StUF:functie>
</ZKN:stuurgegevens>
<ZKN:parameters>
<ZKN:checkedOutId><xsl:value-of select="$CheckOutZaakDocument/root/lock"/></ZKN:checkedOutId>
<ZKN:checkedOutId><xsl:value-of select="$ZgwLock/root/lock"/></ZKN:checkedOutId>
</ZKN:parameters>
<ZKN:edcLa01 StUF:entiteittype="EDC" StUF:functie="antwoord">
<ZKN:parameters/>
<ZKN:antwoord>
<ZKN:object StUF:entiteittype="EDC">
<ZKN:identificatie><xsl:value-of select="$GetZaakDocumentLezenResult/ZdsZaakDocumentInhoud/identificatie"/></ZKN:identificatie>
<xsl:if test="$GetZaakDocumentLezenResult/ZdsZaakDocumentInhoud/omschrijving">
<ZKN:dct.omschrijving><xsl:value-of select="$GetZaakDocumentLezenResult/ZdsZaakDocumentInhoud/omschrijving"/></ZKN:dct.omschrijving>
<ZKN:identificatie><xsl:value-of select="$ZdsZaakDocumentInhoud/ZdsZaakDocumentInhoud/identificatie"/></ZKN:identificatie>
<xsl:if test="$ZdsZaakDocumentInhoud/ZdsZaakDocumentInhoud/omschrijving">
<ZKN:dct.omschrijving><xsl:value-of select="$ZdsZaakDocumentInhoud/ZdsZaakDocumentInhoud/omschrijving"/></ZKN:dct.omschrijving>
</xsl:if>
<ZKN:creatiedatum><xsl:value-of select="$GetZaakDocumentLezenResult/ZdsZaakDocumentInhoud/creatiedatum"/></ZKN:creatiedatum>
<xsl:if test="$GetZaakDocumentLezenResult/ZdsZaakDocumentInhoud/ontvangstdatum">
<ZKN:ontvangstdatum><xsl:value-of select="$GetZaakDocumentLezenResult/ZdsZaakDocumentInhoud/ontvangstdatum"/></ZKN:ontvangstdatum>
<ZKN:creatiedatum><xsl:value-of select="$ZdsZaakDocumentInhoud/ZdsZaakDocumentInhoud/creatiedatum"/></ZKN:creatiedatum>
<xsl:if test="$ZdsZaakDocumentInhoud/ZdsZaakDocumentInhoud/ontvangstdatum">
<ZKN:ontvangstdatum><xsl:value-of select="$ZdsZaakDocumentInhoud/ZdsZaakDocumentInhoud/ontvangstdatum"/></ZKN:ontvangstdatum>
</xsl:if>
<ZKN:titel><xsl:value-of select="$GetZaakDocumentLezenResult/ZdsZaakDocumentInhoud/titel"/></ZKN:titel>
<xsl:if test="$GetZaakDocumentLezenResult/ZdsZaakDocumentInhoud/beschrijving">
<ZKN:beschrijving><xsl:value-of select="$GetZaakDocumentLezenResult/ZdsZaakDocumentInhoud/beschrijving"/></ZKN:beschrijving>
<ZKN:titel><xsl:value-of select="$ZdsZaakDocumentInhoud/ZdsZaakDocumentInhoud/titel"/></ZKN:titel>
<xsl:if test="$ZdsZaakDocumentInhoud/ZdsZaakDocumentInhoud/beschrijving">
<ZKN:beschrijving><xsl:value-of select="$ZdsZaakDocumentInhoud/ZdsZaakDocumentInhoud/beschrijving"/></ZKN:beschrijving>
</xsl:if>
<ZKN:formaat><xsl:value-of select="$GetZaakDocumentLezenResult/ZdsZaakDocumentInhoud/formaat"/></ZKN:formaat>
<ZKN:taal><xsl:value-of select="$GetZaakDocumentLezenResult/ZdsZaakDocumentInhoud/taal"/></ZKN:taal>
<xsl:if test="$GetZaakDocumentLezenResult/ZdsZaakDocumentInhoud/versie">
<ZKN:versie><xsl:value-of select="$GetZaakDocumentLezenResult/ZdsZaakDocumentInhoud/versie"/></ZKN:versie>
<ZKN:formaat><xsl:value-of select="$ZdsZaakDocumentInhoud/ZdsZaakDocumentInhoud/formaat"/></ZKN:formaat>
<ZKN:taal><xsl:value-of select="$ZdsZaakDocumentInhoud/ZdsZaakDocumentInhoud/taal"/></ZKN:taal>
<xsl:if test="$ZdsZaakDocumentInhoud/ZdsZaakDocumentInhoud/versie">
<ZKN:versie><xsl:value-of select="$ZdsZaakDocumentInhoud/ZdsZaakDocumentInhoud/versie"/></ZKN:versie>
</xsl:if>
<xsl:if test="$GetZaakDocumentLezenResult/ZdsZaakDocumentInhoud/status">
<ZKN:status><xsl:value-of select="$GetZaakDocumentLezenResult/ZdsZaakDocumentInhoud/status"/></ZKN:status>
<xsl:if test="$ZdsZaakDocumentInhoud/ZdsZaakDocumentInhoud/status">
<ZKN:status><xsl:value-of select="$ZdsZaakDocumentInhoud/ZdsZaakDocumentInhoud/status"/></ZKN:status>
</xsl:if>
<xsl:if test="$GetZaakDocumentLezenResult/ZdsZaakDocumentInhoud/verzenddatum">
<ZKN:verzenddatum><xsl:value-of select="$GetZaakDocumentLezenResult/ZdsZaakDocumentInhoud/verzenddatum"/></ZKN:verzenddatum>
<xsl:if test="$ZdsZaakDocumentInhoud/ZdsZaakDocumentInhoud/verzenddatum">
<ZKN:verzenddatum><xsl:value-of select="$ZdsZaakDocumentInhoud/ZdsZaakDocumentInhoud/verzenddatum"/></ZKN:verzenddatum>
</xsl:if>
<ZKN:vertrouwelijkAanduiding><xsl:value-of select="$GetZaakDocumentLezenResult/ZdsZaakDocumentInhoud/vertrouwelijkAanduiding"/></ZKN:vertrouwelijkAanduiding>
<ZKN:auteur><xsl:value-of select="$GetZaakDocumentLezenResult/ZdsZaakDocumentInhoud/auteur"/></ZKN:auteur>
<ZKN:vertrouwelijkAanduiding><xsl:value-of select="$ZdsZaakDocumentInhoud/ZdsZaakDocumentInhoud/vertrouwelijkAanduiding"/></ZKN:vertrouwelijkAanduiding>
<ZKN:auteur><xsl:value-of select="$ZdsZaakDocumentInhoud/ZdsZaakDocumentInhoud/auteur"/></ZKN:auteur>
<ZKN:link/>
<xsl:if test="$GetZaakDocumentLezenResult/ZdsZaakDocumentInhoud/inhoud">
<xsl:if test="$ZdsZaakDocumentInhoud/ZdsZaakDocumentInhoud/inhoud">
<ZKN:inhoud>
<xsl:attribute name="StUF:bestandsnaam"><xsl:value-of select="$GetZaakDocumentLezenResult/ZdsZaakDocumentInhoud/inhoud/@StUF:bestandsnaam"/></xsl:attribute>
<xsl:if test="$GetZaakDocumentLezenResult/ZdsZaakDocumentInhoud/inhoud/@xmime:contentType != ''">
<xsl:attribute name="xmime:contentType"><xsl:value-of select="$GetZaakDocumentLezenResult/ZdsZaakDocumentInhoud/inhoud/@xmime:contentType"/></xsl:attribute>
<xsl:attribute name="StUF:bestandsnaam"><xsl:value-of select="$ZdsZaakDocumentInhoud/ZdsZaakDocumentInhoud/inhoud/@StUF:bestandsnaam"/></xsl:attribute>
<xsl:if test="$ZdsZaakDocumentInhoud/ZdsZaakDocumentInhoud/inhoud/@xmime:contentType != ''">
<xsl:attribute name="xmime:contentType"><xsl:value-of select="$ZdsZaakDocumentInhoud/ZdsZaakDocumentInhoud/inhoud/@xmime:contentType"/></xsl:attribute>
</xsl:if>
<xsl:value-of select="$GetZaakDocumentLezenResult/ZdsZaakDocumentInhoud/inhoud"/>
<xsl:value-of select="$ZdsZaakDocumentInhoud/ZdsZaakDocumentInhoud/inhoud"/>
</ZKN:inhoud>
</xsl:if>
<xsl:apply-templates select="$GetZaakDocumentLezenResult/ZdsZaakDocumentInhoud/isRelevantVoor"/>
<xsl:apply-templates select="$ZdsZaakDocumentInhoud/ZdsZaakDocumentInhoud/isRelevantVoor"/>
</ZKN:object>
</ZKN:antwoord>
</ZKN:edcLa01>
Expand Down
Loading
Loading