I'm getting the following error message when I try to query and retrieve studies from CSV file through the webservice, my installation is :
2025-03-14 14:44:43,602 ERROR [org.jboss.resteasy.core.providerfactory.DefaultExceptionMapper] (default task-1) RESTEASY002375: Error processing request POST /dcm4chee-arc/aets/LC_FUSAT/dimse/LABOCENTER/studies/csv:1/export/dicom:LC_FUSAT - org.dcm4chee.arc.dimse.rs.QueryRetrieveRS.retrieveMatchingStudiesFromCSV: java.lang.NoClassDefFoundError: Failed to link org/apache/commons/csv/ExtendedBufferedReader (Module "org.apache.commons.csv" version 1.12.0 from local module loader @7a560583 (finder: local module finder @4d722ac9 (roots: /opt/wildfly/modules,/opt/wildfly/modules/system/layers/base))): org/apache/commons/io/input/UnsynchronizedBufferedReader
at org.apache....@1.12.0//org.apache.commons.csv.CSVParser.<init>(CSVParser.java:444)
at org.apache....@1.12.0//org.apache.commons.csv.CSVParser.<init>(CSVParser.java:412)
at deployment.dcm4chee-arc-ear-5.33.1-psql-secure.ear.dcm4chee-arc-war-5.33.1-secure.war//org.dcm4chee.arc.dimse.rs.QueryRetrieveRS.processCSV(QueryRetrieveRS.java:259)
at deployment.dcm4chee-arc-ear-5.33.1-psql-secure.ear.dcm4chee-arc-war-5.33.1-secure.war//org.dcm4chee.arc.dimse.rs.QueryRetrieveRS.retrieveMatchingStudiesFromCSV(QueryRetrieveRS.java:232)
at deployment.dcm4chee-arc-ear-5.33.1-psql-secure.ear.dcm4chee-arc-war-5.33.1-secure.war//org.dcm4chee.arc.dimse.rs.QueryRetrieveRS$Proxy$_$$_WeldClientProxy.retrieveMatchingStudiesFromCSV(Unknown Source)
at java.base/jdk.internal.reflect.DirectMethodHandleAccessor.invoke(DirectMethodHandleAccessor.java:103)
at java.base/java.lang.reflect.Method.invoke(Method.java:580)
at org.jboss.restea...@6.2.10.Final//org.jboss.resteasy.core.MethodInjectorImpl.invoke(MethodInjectorImpl.java:154)
at org.jboss.restea...@6.2.10.Final//org.jboss.resteasy.core.MethodInjectorImpl.invoke(MethodInjectorImpl.java:118)
at org.jboss.restea...@6.2.10.Final//org.jboss.resteasy.core.ResourceMethodInvoker.internalInvokeOnTarget(ResourceMethodInvoker.java:560)
at org.jboss.restea...@6.2.10.Final//org.jboss.resteasy.core.ResourceMethodInvoker.invokeOnTargetAfterFilter(ResourceMethodInvoker.java:452)
at org.jboss.restea...@6.2.10.Final//org.jboss.resteasy.core.ResourceMethodInvoker.lambda$invokeOnTarget$2(ResourceMethodInvoker.java:413)
at org.jboss.restea...@6.2.10.Final//org.jboss.resteasy.core.interception.jaxrs.PreMatchContainerRequestContext.filter(PreMatchContainerRequestContext.java:321)
at org.jboss.restea...@6.2.10.Final//org.jboss.resteasy.core.ResourceMethodInvoker.invokeOnTarget(ResourceMethodInvoker.java:415)
at org.jboss.restea...@6.2.10.Final//org.jboss.resteasy.core.ResourceMethodInvoker.invoke(ResourceMethodInvoker.java:378)
at org.jboss.restea...@6.2.10.Final//org.jboss.resteasy.core.ResourceMethodInvoker.invoke(ResourceMethodInvoker.java:356)
at org.jboss.restea...@6.2.10.Final//org.jboss.resteasy.core.ResourceMethodInvoker.invoke(ResourceMethodInvoker.java:70)
at org.jboss.restea...@6.2.10.Final//org.jboss.resteasy.core.SynchronousDispatcher.invoke(SynchronousDispatcher.java:429)
at org.jboss.restea...@6.2.10.Final//org.jboss.resteasy.core.SynchronousDispatcher.lambda$invoke$4(SynchronousDispatcher.java:240)
at org.jboss.restea...@6.2.10.Final//org.jboss.resteasy.core.SynchronousDispatcher.lambda$preprocess$0(SynchronousDispatcher.java:154)
at org.jboss.restea...@6.2.10.Final//org.jboss.resteasy.core.interception.jaxrs.PreMatchContainerRequestContext.filter(PreMatchContainerRequestContext.java:321)
at org.jboss.restea...@6.2.10.Final//org.jboss.resteasy.core.SynchronousDispatcher.preprocess(SynchronousDispatcher.java:157)
at org.jboss.restea...@6.2.10.Final//org.jboss.resteasy.core.SynchronousDispatcher.invoke(SynchronousDispatcher.java:229)
at org.jboss.restea...@6.2.10.Final//org.jboss.resteasy.plugins.server.servlet.ServletContainerDispatcher.service(ServletContainerDispatcher.java:222)
at org.jboss.restea...@6.2.10.Final//org.jboss.resteasy.plugins.server.servlet.HttpServletDispatcher.service(HttpServletDispatcher.java:55)
at org.jboss.restea...@6.2.10.Final//org.jboss.resteasy.plugins.server.servlet.HttpServletDispatcher.service(HttpServletDispatcher.java:51)
at jakarta.s...@6.0.0//jakarta.servlet.http.HttpServlet.service(HttpServlet.java:614)
at io.undert...@2.3.18.Final//io.undertow.servlet.handlers.ServletHandler.handleRequest(ServletHandler.java:74)
at io.undert...@2.3.18.Final//io.undertow.servlet.handlers.FilterHandler$FilterChainImpl.doFilter(FilterHandler.java:129)
at io.underto...@2.3.18.Final//io.undertow.websockets.jsr.JsrWebSocketFilter.doFilter(JsrWebSocketFilter.java:172)
at io.undert...@2.3.18.Final//io.undertow.servlet.core.ManagedFilter.doFilter(ManagedFilter.java:67)
at io.undert...@2.3.18.Final//io.undertow.servlet.handlers.FilterHandler$FilterChainImpl.doFilter(FilterHandler.java:131)
at io.undert...@2.3.18.Final//io.undertow.servlet.handlers.FilterHandler.handleRequest(FilterHandler.java:84)
at io.undert...@2.3.18.Final//io.undertow.servlet.handlers.security.ServletSecurityRoleHandler.handleRequest(ServletSecurityRoleHandler.java:62)
at io.undert...@2.3.18.Final//io.undertow.servlet.handlers.ServletChain$1.handleRequest(ServletChain.java:68)
at io.undert...@2.3.18.Final//io.undertow.servlet.handlers.ServletDispatchingHandler.handleRequest(ServletDispatchingHandler.java:36)
at org.wildfly.security.ely...@4.1.0.Final//org.wildfly.elytron.web.undertow.server.ElytronRunAsHandler.lambda$handleRequest$1(ElytronRunAsHandler.java:68)
at org.wildfly.secu...@2.6.0.Final//org.wildfly.security.auth.server.FlexibleIdentityAssociation.runAsFunctionEx(FlexibleIdentityAssociation.java:103)
at org.wildfly.secu...@2.6.0.Final//org.wildfly.security.auth.server.Scoped.runAsFunctionEx(Scoped.java:161)
at org.wildfly.secu...@2.6.0.Final//org.wildfly.security.auth.server.Scoped.runAs(Scoped.java:73)
at org.wildfly.security.ely...@4.1.0.Final//org.wildfly.elytron.web.undertow.server.ElytronRunAsHandler.handleRequest(ElytronRunAsHandler.java:67)
at io.undert...@2.3.18.Final//io.undertow.servlet.handlers.RedirectDirHandler.handleRequest(RedirectDirHandler.java:68)
at io.undert...@2.3.18.Final//io.undertow.servlet.handlers.security.SSLInformationAssociationHandler.handleRequest(SSLInformationAssociationHandler.java:117)
at io.undert...@2.3.18.Final//io.undertow.servlet.handlers.security.ServletAuthenticationCallHandler.handleRequest(ServletAuthenticationCallHandler.java:57)
at io.under...@2.3.18.Final//io.undertow.security.handlers.AuthenticationConstraintHandler.handleRequest(AuthenticationConstraintHandler.java:53)
at io.under...@2.3.18.Final//io.undertow.security.handlers.AbstractConfidentialityHandler.handleRequest(AbstractConfidentialityHandler.java:46)
at io.undert...@2.3.18.Final//io.undertow.servlet.handlers.security.ServletConfidentialityConstraintHandler.handleRequest(ServletConfidentialityConstraintHandler.java:64)
at io.undert...@2.3.18.Final//io.undertow.servlet.handlers.security.ServletSecurityConstraintHandler.handleRequest(ServletSecurityConstraintHandler.java:60)
at io.under...@2.3.18.Final//io.undertow.security.handlers.AbstractSecurityContextAssociationHandler.handleRequest(AbstractSecurityContextAssociationHandler.java:43)
at org.wildfly.security.elytron...@4.1.0.Final//org.wildfly.elytron.web.undertow.server.servlet.CleanUpHandler.handleRequest(CleanUpHandler.java:38)
at io.under...@2.3.18.Final//io.undertow.server.handlers.PredicateHandler.handleRequest(PredicateHandler.java:43)
at org.wildfly.ext...@34.0.0.Final//org.wildfly.extension.undertow.security.jacc.JACCContextIdHandler.handleRequest(JACCContextIdHandler.java:44)
at io.under...@2.3.18.Final//io.undertow.server.handlers.PredicateHandler.handleRequest(PredicateHandler.java:43)
at org.wildfly.ext...@34.0.0.Final//org.wildfly.extension.undertow.deployment.GlobalRequestControllerHandler.handleRequest(GlobalRequestControllerHandler.java:51)
at io.undert...@2.3.18.Final//io.undertow.servlet.handlers.SendErrorPageHandler.handleRequest(SendErrorPageHandler.java:52)
at io.under...@2.3.18.Final//io.undertow.server.handlers.PredicateHandler.handleRequest(PredicateHandler.java:43)
at io.undert...@2.3.18.Final//io.undertow.servlet.handlers.ServletInitialHandler.handleFirstRequest(ServletInitialHandler.java:276)
at io.undert...@2.3.18.Final//io.undertow.servlet.handlers.ServletInitialHandler$2.call(ServletInitialHandler.java:135)
at io.undert...@2.3.18.Final//io.undertow.servlet.handlers.ServletInitialHandler$2.call(ServletInitialHandler.java:132)
at io.undert...@2.3.18.Final//io.undertow.servlet.core.ServletRequestContextThreadSetupAction$1.call(ServletRequestContextThreadSetupAction.java:48)
at io.undert...@2.3.18.Final//io.undertow.servlet.core.ContextClassLoaderSetupAction$1.call(ContextClassLoaderSetupAction.java:43)
at org.wildfly.ext...@34.0.0.Final//org.wildfly.extension.undertow.deployment.UndertowDeploymentInfoService$UndertowThreadSetupAction.lambda$create$0(UndertowDeploymentInfoService.java:1421)
at org.wildfly.ext...@34.0.0.Final//org.wildfly.extension.undertow.deployment.UndertowDeploymentInfoService$UndertowThreadSetupAction.lambda$create$0(UndertowDeploymentInfoService.java:1421)
at org.wildfly.ext...@34.0.0.Final//org.wildfly.extension.undertow.deployment.UndertowDeploymentInfoService$UndertowThreadSetupAction.lambda$create$0(UndertowDeploymentInfoService.java:1421)
at org.wildfly.ext...@34.0.0.Final//org.wildfly.extension.undertow.deployment.UndertowDeploymentInfoService$UndertowThreadSetupAction.lambda$create$0(UndertowDeploymentInfoService.java:1421)
at org.wildfly.ext...@34.0.0.Final//org.wildfly.extension.undertow.deployment.UndertowDeploymentInfoService$UndertowThreadSetupAction.lambda$create$0(UndertowDeploymentInfoService.java:1421)
at io.undert...@2.3.18.Final//io.undertow.servlet.handlers.ServletInitialHandler.dispatchRequest(ServletInitialHandler.java:256)
at io.undert...@2.3.18.Final//io.undertow.servlet.handlers.ServletInitialHandler$1.handleRequest(ServletInitialHandler.java:101)
at io.under...@2.3.18.Final//io.undertow.server.Connectors.executeRootHandler(Connectors.java:395)
at io.under...@2.3.18.Final//io.undertow.server.HttpServerExchange$1.run(HttpServerExchange.java:861)
at org.jbos...@2.4.0.Final//org.jboss.threads.ContextClassLoaderSavingRunnable.run(ContextClassLoaderSavingRunnable.java:35)
at org.jbos...@2.4.0.Final//org.jboss.threads.EnhancedQueueExecutor.safeRun(EnhancedQueueExecutor.java:1990)
at org.jbos...@2.4.0.Final//org.jboss.threads.EnhancedQueueExecutor$ThreadBody.doRunTask(EnhancedQueueExecutor.java:1486)
at org.jbos...@2.4.0.Final//org.jboss.threads.EnhancedQueueExecutor$ThreadBody.run(EnhancedQueueExecutor.java:1377)
at org.jbo...@3.8.16.Final//org.xnio.XnioWorker$WorkerThreadFactory$1$1.run(XnioWorker.java:1282)
at java.base/java.lang.Thread.run(Thread.java:1583)
Caused by: java.lang.ClassNotFoundException: org.apache.commons.io.input.UnsynchronizedBufferedReader from [Module "org.apache.commons.csv" version 1.12.0 from local module loader @7a560583 (finder: local module finder @4d722ac9 (roots: /opt/wildfly/modules,/opt/wildfly/modules/system/layers/base))]
... 76 more
This is my compose:
version: "3.5"
services:
elasticsearch:
image:
docker.elastic.co/elasticsearch/elasticsearch:8.15.1 environment:
ES_JAVA_OPTS: -Xms1024m -Xmx1024m
discovery.type: single-node
xpack.security.enabled: "false"
logging:
driver: json-file
options:
max-size: "10m"
ports:
- target: 9200
published: 9200
protocol: tcp
mode: host
- target: 9300
published: 9300
protocol: tcp
mode: host
volumes:
- /etc/localtime:/etc/localtime:ro
- /etc/timezone:/etc/timezone:ro
- /var/local/dcm4chee-arc/esdatadir:/usr/share/elasticsearch/data
deploy:
endpoint_mode: dnsrr
placement:
constraints: [node.hostname == elk-node]
kibana:
image:
docker.elastic.co/kibana/kibana:8.15.1 logging:
driver: json-file
options:
max-size: "10m"
ports:
- target: 5601
published: 5601
protocol: tcp
mode: host
volumes:
- /etc/localtime:/etc/localtime:ro
- /etc/timezone:/etc/timezone:ro
deploy:
endpoint_mode: dnsrr
placement:
constraints: [node.hostname == elk-node]
logstash:
image: dcm4che/logstash-dcm4chee:8.15.1-18
logging:
driver: json-file
options:
max-size: "10m"
ports:
- target: 12201
published: 12201
protocol: udp
mode: host
- target: 8514
published: 8514
protocol: udp
mode: host
- target: 8514
published: 8514
protocol: tcp
mode: host
volumes:
- /etc/localtime:/etc/localtime:ro
- /etc/timezone:/etc/timezone:ro
- /var/local/dcm4chee-arc/logstash/filter-hashtree:/usr/share/logstash/data/filter-hashtree
deploy:
endpoint_mode: dnsrr
placement:
constraints: [node.hostname == elk-node]
ldap:
image: dcm4che/slapd-dcm4chee:2.6.7-33.1
logging:
driver: gelf
options:
gelf-address: "udp://elk-node:12201"
tag: ldap
ports:
- target: 389
published: 389
protocol: tcp
mode: host
environment:
SYSLOG_HOST: logstash
SYSLOG_PORT: 8514
SYSLOG_PROTOCOL: TLS
STORAGE_DIR: /storage/fs1
volumes:
- /var/local/dcm4chee-arc/ldap:/var/lib/openldap/openldap-data
- /var/local/dcm4chee-arc/slapd.d:/etc/openldap/slapd.d
deploy:
endpoint_mode: dnsrr
placement:
constraints: [node.hostname == ldap-node]
keycloak:
image: dcm4che/keycloak:25.0.6
logging:
driver: gelf
options:
gelf-address: "udp://elk-node:12201"
tag: keycloak
ports:
- target: 8843
published: 8843
protocol: tcp
mode: host
environment:
KC_HTTPS_PORT: 8843
KC_HOSTNAME:
https://10.211.80.40:8843 KC_HOSTNAME_BACKCHANNEL_DYNAMIC: 'false'
KEYCLOAK_ADMIN: admin
KEYCLOAK_ADMIN_PASSWORD: changeit
KC_DB: mariadb
KC_DB_URL_DATABASE: keycloak
KC_DB_URL_HOST: kc-db-host
KC_DB_USERNAME: keycloak
KC_DB_PASSWORD: keycloak
KC_LOG: file
KC_LOG_GELF_HOST: logstash
ARCHIVE_HOST: 10.211.80.40
KIBANA_CLIENT_ID: kibana
KIBANA_CLIENT_SECRET:
KIBANA_REDIRECT_URL:
https://10.211.80.40:8643/oauth2/callback/* KEYCLOAK_WAIT_FOR: ldap:389
10.211.80.41:3306 logstash:8514
volumes:
- /etc/localtime:/etc/localtime:ro
- /etc/timezone:/etc/timezone:ro
- /var/local/dcm4chee-arc/keycloak:/opt/keycloak/data
deploy:
endpoint_mode: dnsrr
placement:
constraints: [node.hostname == app-node]
oauth2-proxy:
image: dcm4che/oauth2-proxy:7.7.1
ports:
- target: 8643
published: 8643
protocol: tcp
mode: host
environment:
OAUTH2_PROXY_HTTPS_ADDRESS:
0.0.0.0:8643 OAUTH2_PROXY_PROVIDER: keycloak-oidc
OAUTH2_PROXY_SKIP_PROVIDER_BUTTON: "true"
OAUTH2_PROXY_UPSTREAMS: "
http://kibana:5601"
OAUTH2_PROXY_OIDC_ISSUER_URL: "
https://10.211.80.40:8843/realms/dcm4che"
OAUTH2_PROXY_REDIRECT_URL: "
https://10.211.80.40:8643/oauth2/callback"
OAUTH2_PROXY_ALLOWED_ROLES: auditlog
OAUTH2_PROXY_CLIENT_ID: kibana
OAUTH2_PROXY_CLIENT_SECRET: changeit
OAUTH2_PROXY_EMAIL_DOMAINS: "*"
OAUTH2_PROXY_OIDC_EMAIL_CLAIM: "sub"
OAUTH2_PROXY_INSECURE_OIDC_ALLOW_UNVERIFIED_EMAIL: "true"
OAUTH2_PROXY_COOKIE_SECRET:
OAUTH2_PROXY_SSL_INSECURE_SKIP_VERIFY: "true"
OAUTH2_PROXY_TLS_CERT_FILE: /etc/certs/cert.pem
OAUTH2_PROXY_TLS_KEY_FILE: /etc/certs/key.pem
OAUTH2_PROXY_CUSTOM_TEMPLATES_DIR: /templates
deploy:
endpoint_mode: dnsrr
placement:
constraints: [node.hostname == app-node]
arc:
image: dcm4che/dcm4chee-arc-psql:5.33.1-secure
logging:
driver: gelf
options:
gelf-address: "udp://elk-node:12201"
tag: dcm4chee-arc
ports:
- target: 8080
published: 8080
protocol: tcp
mode: host
- target: 8443
published: 8443
protocol: tcp
mode: host
- target: 9990
published: 9990
protocol: tcp
mode: host
- target: 9993
published: 9993
protocol: tcp
mode: host
- target: 11112
published: 11112
protocol: tcp
mode: host
- target: 2762
published: 2762
protocol: tcp
mode: host
- target: 2575
published: 2575
protocol: tcp
mode: host
- target: 12575
published: 12575
protocol: tcp
mode: host
environment:
LOGSTASH_HOST: logstash
POSTGRES_HOST: arc-db-host
POSTGRES_DB: pacsdb
POSTGRES_USER: dcm4che
POSTGRES_PASSWORD: dcm4che
AUTH_SERVER_URL:
https://keycloak:8843 UI_AUTH_SERVER_URL:
https://10.211.80.40:8843 WILDFLY_CHOWN: /storage /storage1 /storage2 /storage3 /storage4 /opt/wildfly/standalone
WILDFLY_WAIT_FOR: ldap:389 logstash:8514
volumes:
- /etc/localtime:/etc/localtime:ro
- /etc/timezone:/etc/timezone:ro
- /var/local/dcm4chee-arc/wildfly:/opt/wildfly/standalone
- /var/local/dcm4chee-arc/storage:/storage
- /storage1:/storage1
- /storage2:/storage2
- /storage3:/storage3
- /storage4:/storage4
deploy:
endpoint_mode: dnsrr
placement:
constraints: [node.hostname == app-node]