1

我们已经构建了 Wildfly jboss 服务器的 docker 镜像并在其上部署了 war 文件。在运行映像时,war 的部署成功,没有任何错误,但是在运行时名称上点击 url 时,它会引发异常错误,如下所示:

ERROR [io.undertow.request] (default task-2) UT005023: Exception handling request to /app1/: Unable to load configuration. - Class: java.io.File
File: File.java
Method: <init>
Line: 421 - java/io/File.java:421:-1
        at org.apache.struts2.dispatcher.Dispatcher.init(Dispatcher.java:450)
        at org.apache.struts2.dispatcher.ng.InitOperations.initDispatcher(InitOperations.java:74)
        at org.apache.struts2.dispatcher.ng.filter.StrutsPrepareAndExecuteFilter.init(StrutsPrepareAndExecuteFilter.java:51)
        at io.undertow.servlet.core.LifecyleInterceptorInvocation.proceed(LifecyleInterceptorInvocation.java:111)
        at org.wildfly.extension.undertow.security.RunAsLifecycleInterceptor.init(RunAsLifecycleInterceptor.java:84)
        at io.undertow.servlet.core.LifecyleInterceptorInvocation.proceed(LifecyleInterceptorInvocation.java:97)
        at io.undertow.servlet.core.ManagedFilter.createFilter(ManagedFilter.java:80)
        at io.undertow.servlet.core.ManagedFilter.forceInit(ManagedFilter.java:125)
        at io.undertow.servlet.handlers.ServletChain.forceInit(ServletChain.java:126)
        at io.undertow.servlet.handlers.ServletChain$1.handleRequest(ServletChain.java:63)
        at io.undertow.servlet.handlers.ServletDispatchingHandler.handleRequest(ServletDispatchingHandler.java:36)
        at org.wildfly.extension.undertow.security.SecurityContextAssociationHandler.handleRequest(SecurityContextAssociationHandler.java:78)
        at io.undertow.server.handlers.PredicateHandler.handleRequest(PredicateHandler.java:43)
        at io.undertow.servlet.handlers.RedirectDirHandler.handleRequest(RedirectDirHandler.java:68)
        at io.undertow.servlet.handlers.security.SSLInformationAssociationHandler.handleRequest(SSLInformationAssociationHandler.java:117)
        at io.undertow.servlet.handlers.security.ServletAuthenticationCallHandler.handleRequest(ServletAuthenticationCallHandler.java:57)
        at io.undertow.server.handlers.PredicateHandler.handleRequest(PredicateHandler.java:43)
        at io.undertow.security.handlers.AbstractConfidentialityHandler.handleRequest(AbstractConfidentialityHandler.java:46)
        at io.undertow.servlet.handlers.security.ServletConfidentialityConstraintHandler.handleRequest(ServletConfidentialityConstraintHandler.java:64)
        at io.undertow.security.handlers.AuthenticationMechanismsHandler.handleRequest(AuthenticationMechanismsHandler.java:60)
        at io.undertow.servlet.handlers.security.CachedAuthenticatedSessionHandler.handleRequest(CachedAuthenticatedSessionHandler.java:77)
        at io.undertow.security.handlers.NotificationReceiverHandler.handleRequest(NotificationReceiverHandler.java:50)
        at io.undertow.security.handlers.AbstractSecurityContextAssociationHandler.handleRequest(AbstractSecurityContextAssociationHandler.java:43)
        at io.undertow.server.handlers.PredicateHandler.handleRequest(PredicateHandler.java:43)
        at org.wildfly.extension.undertow.security.jacc.JACCContextIdHandler.handleRequest(JACCContextIdHandler.java:61)
        at io.undertow.server.handlers.PredicateHandler.handleRequest(PredicateHandler.java:43)
        at org.wildfly.extension.undertow.deployment.GlobalRequestControllerHandler.handleRequest(GlobalRequestControllerHandler.java:68)
        at io.undertow.servlet.handlers.SendErrorPageHandler.handleRequest(SendErrorPageHandler.java:52)
        at io.undertow.server.handlers.PredicateHandler.handleRequest(PredicateHandler.java:43)
        at io.undertow.servlet.handlers.ServletInitialHandler.handleFirstRequest(ServletInitialHandler.java:269)
        at io.undertow.servlet.handlers.ServletInitialHandler.access$100(ServletInitialHandler.java:78)
        at io.undertow.servlet.handlers.ServletInitialHandler$2.call(ServletInitialHandler.java:133)
        at io.undertow.servlet.handlers.ServletInitialHandler$2.call(ServletInitialHandler.java:130)
        at io.undertow.servlet.core.ServletRequestContextThreadSetupAction$1.call(ServletRequestContextThreadSetupAction.java:48)
        at io.undertow.servlet.core.ContextClassLoaderSetupAction$1.call(ContextClassLoaderSetupAction.java:43)
        at org.wildfly.extension.undertow.security.SecurityContextThreadSetupAction.lambda$create$0(SecurityContextThreadSetupAction.java:105)
        at org.wildfly.extension.undertow.deployment.UndertowDeploymentInfoService$UndertowThreadSetupAction.lambda$create$0(UndertowDeploymentInfoService.java:1530)
        at org.wildfly.extension.undertow.deployment.UndertowDeploymentInfoService$UndertowThreadSetupAction.lambda$create$0(UndertowDeploymentInfoService.java:1530)
        at org.wildfly.extension.undertow.deployment.UndertowDeploymentInfoService$UndertowThreadSetupAction.lambda$create$0(UndertowDeploymentInfoService.java:1530)
        at org.wildfly.extension.undertow.deployment.UndertowDeploymentInfoService$UndertowThreadSetupAction.lambda$create$0(UndertowDeploymentInfoService.java:1530)
        at io.undertow.servlet.handlers.ServletInitialHandler.dispatchRequest(ServletInitialHandler.java:249)
        at io.undertow.servlet.handlers.ServletInitialHandler.access$000(ServletInitialHandler.java:78)
        at io.undertow.servlet.handlers.ServletInitialHandler$1.handleRequest(ServletInitialHandler.java:99)
        at io.undertow.server.Connectors.executeRootHandler(Connectors.java:387)
        at io.undertow.server.HttpServerExchange$1.run(HttpServerExchange.java:841)
        at org.jboss.threads.ContextClassLoaderSavingRunnable.run(ContextClassLoaderSavingRunnable.java:35)
        at org.jboss.threads.EnhancedQueueExecutor.safeRun(EnhancedQueueExecutor.java:1990)
        at org.jboss.threads.EnhancedQueueExecutor$ThreadBody.doRunTask(EnhancedQueueExecutor.java:1486)
        at org.jboss.threads.EnhancedQueueExecutor$ThreadBody.run(EnhancedQueueExecutor.java:1377)
        at org.xnio.XnioWorker$WorkerThreadFactory$1$1.run(XnioWorker.java:1280)
        at java.lang.Thread.run(Thread.java:748)
Caused by: Unable to load configuration. - Class: java.io.File
File: File.java
Method: <init>
Line: 421 - java/io/File.java:421:-1
        at com.opensymphony.xwork2.config.ConfigurationManager.getConfiguration(ConfigurationManager.java:69)
        at org.apache.struts2.dispatcher.Dispatcher.init_PreloadConfiguration(Dispatcher.java:390)
        at org.apache.struts2.dispatcher.Dispatcher.init(Dispatcher.java:437)
        ... 50 more
Caused by: Caught exception while loading file struts-default.xml - Class: java.io.File
File: File.java
Method: <init>
Line: 421 - java/io/File.java:421:-1
        at com.opensymphony.xwork2.config.providers.XmlConfigurationProvider.loadConfigurationFiles(XmlConfigurationProvider.java:958)
        at com.opensymphony.xwork2.config.providers.XmlConfigurationProvider.loadDocuments(XmlConfigurationProvider.java:163)
        at com.opensymphony.xwork2.config.providers.XmlConfigurationProvider.init(XmlConfigurationProvider.java:130)
        at com.opensymphony.xwork2.config.impl.DefaultConfiguration.reloadContainer(DefaultConfiguration.java:209)
        at com.opensymphony.xwork2.config.ConfigurationManager.getConfiguration(ConfigurationManager.java:66)
        ... 52 more
Caused by: java.lang.IllegalArgumentException: URI scheme is not "file"
        at java.io.File.<init>(File.java:421)
        at com.opensymphony.xwork2.util.fs.JBossFileRevision.build(JBossFileRevision.java:23)
        at com.opensymphony.xwork2.util.fs.DefaultFileManager.monitorFile(DefaultFileManager.java:101)
        at com.opensymphony.xwork2.util.fs.DefaultFileManager.loadFile(DefaultFileManager.java:76)
        at com.opensymphony.xwork2.config.providers.XmlConfigurationProvider.loadConfigurationFiles(XmlConfigurationProvider.java:943)
        ... 56 more

当我将war包部署到本地系统(使用wildfly windows安装程序的windows)时,它工作正常。但是当部署为 docker 映像时会出现此错误。

这是码头文件:

#Official base image from docker hub
FROM alpine:latest

#Selecting root user
USER root

#Download wildfly and configure
RUN apk update && apk add wget && mkdir -p /opt/jboss && cd /opt/jboss && wget https://download.jboss.org/wildfly/23.0.2.Final/wildfly-preview-23.0.2.Final.tar.gz && tar -zxvf wildfly-preview-23.0.2.Final.tar.gz && rm -f wildfly-preview-23.0.2.Final.tar.gz && mv wildfly-preview-23.0.2.Final wildfly && adduser --disabled-password --gecos "" jboss && chown -R jboss:jboss /opt/jboss && chmod -R 755 /opt/jboss/


RUN apk add --no-cache openjdk8

ENV JAVA_OPTS -Djava.security.egd=file:/dev/./urandom
COPY app1.properties /eipliteapps/domains/common/properties/app1.properties

RUN java -version && which java

#Create an application directory for keeping all app1 related files
RUN mkdir -p /app1 && chown -R jboss:jboss /app1 && chown -R jboss:jboss /eipliteapps

#Changing user to Jboss
USER jboss

#Exposing below ports
EXPOSE 8080
EXPOSE 9990

#Copy both packages to the application directory
COPY APP1-GUI/target/APP1-GUI-1.0.0-local.war /app1/app1.war
COPY APP1Integration/target/APP1OMIntegration-1.0.0-local.war /app1/APP1OMIntegration.war

#Add customization directory to wildfly server
ADD customization /opt/jboss/wildfly/customization/

#Copying required jar and configuration files to wildfly server
COPY customization/ojdbc8.jar /opt/jboss/wildfly/customization/

#Execute wildfly customization script
RUN sleep 20 && \
    /bin/sh -x /opt/jboss/wildfly/customization/wildfly_customization.sh

这是customization.sh:

#!/bin/sh

# Usage: execute.sh [WildFly mode] [configuration file]
#
# The default mode is 'standalone' and default configuration is based on the
# mode. It can be 'standalone.xml' or 'domain.xml'.

echo "=> Executing Customization script"


JBOSS_HOME=/opt/jboss/wildfly
JBOSS_CLI=$JBOSS_HOME/bin/jboss-cli.sh
JBOSS_MODE=${1:-"standalone"}
JBOSS_CONFIG=${2:-"$JBOSS_MODE.xml"}

echo "JBOSS_HOME  : " $JBOSS_HOME
echo "JBOSS_CLI   : " $JBOSS_CLI
echo "JBOSS_MODE  : " $JBOSS_MODE
echo "JBOSS_CONFIG: " $JBOSS_CONFIG

echo "=> Adding a user"
$JBOSS_HOME/bin/add-user.sh admin --silent

sleep 20
echo "=> Starting WildFly"
echo $JBOSS_HOME/bin/$JBOSS_MODE.sh -b 0.0.0.0 -c $JBOSS_CONFIG &
$JBOSS_HOME/bin/$JBOSS_MODE.sh -b 0.0.0.0 -c $JBOSS_CONFIG &
sleep 30

echo "=> Executing the commands"
$JBOSS_CLI -c --file=/opt/jboss/wildfly/customization/commands.cli


# Deploy the WAR
mv /app1/app1.war $JBOSS_HOME/$JBOSS_MODE/deployments/app1.war
mv /app1/app1OMIntegration.war $JBOSS_HOME/$JBOSS_MODE/deployments/app1OMIntegration.war        

主要问题是一旦部署它在其他系统上运行良好,但再次部署时会遇到同样的问题。应用程序在 JDK8 上运行。如果需要更多信息进行故障排除,请告诉我。

请帮助解决此问题。

4

0 回答 0