Struts2 在 war 文件中的 jar 文件中并且 Struts2 部署为 Wildfly 模块时找不到我的操作
Struts2 can't find my actions when they are in a jar file within a war file and Struts2 is deployed as a Wildfly module
我正在使用 Wildfly 并将 Struts2 作为模块部署。我将 project.war 文件部署到 standalone/deployments。 project.war/WEB-INF/lib 中有一个 project-web.jar 文件,其中包含我的 Struts2 操作。我正在使用约定插件。在我的 struts2.xml 中,我有以下内容:
<constant name="struts.convention.action.includeJars" value=".*?/project-web.*?jar(!/)?"/>
<constant name="struts.convention.exclude.parentClassLoader" value="true" />
<constant name="struts.convention.action.fileProtocols" value="file,jar,zip"/>
我遇到的错误包括
2019-11-26 13:21:01,511 WARN [com.opensymphony.xwork2.util.fs.DefaultFileManager] (default task-6) Could not normalize URL [vfs:.../wildfly-10.1.0.Final/bin/content/project-war-0.0.1.war] to file protocol!
2019-11-26 13:21:01,520 WARN [org.apache.struts2.convention.PackageBasedActionConfigBuilder] (default task-6) The includeJars pattern [.*?/project-web.*?jar(!/)?] did not match any jars in the classpath
2019-11-26 13:21:01,523 ERROR [com.opensymphony.xwork2.util.ResolverUtil] (default task-6) Could not search jar file '...\wildfly-10.1.0.Final\bin\content\project-0.0.1.war\WEB-INF\lib\project-web-0.0.1.jar\com\company\project\actions' for classes matching criteria: org.apache.struts2.config.ClasspathPackageProvider@606e8501 due to an IOException: java.io.FileNotFoundException: ...\wildfly-10.1.0.Final\bin\content\project-0.0.1.war\WEB-INF\lib\project-web-0.0.1.jar\com\company\project\actions (The system cannot find the path specified)
虽然 Wildfly 中没有 bin\content 文件夹,但我发现它与 JBoss vfs 有关。
请注意,当我使用 project.war 而不是作为模块部署 Struts2 时,webapp 工作正常。
为什么 Struts2 找不到我的操作?
Struts2 的早期版本似乎在 JBoss 的 VFS 方面存在问题。我从 2.3.24 升级到 2.5.20,这似乎让我过了那个点。
我正在使用 Wildfly 并将 Struts2 作为模块部署。我将 project.war 文件部署到 standalone/deployments。 project.war/WEB-INF/lib 中有一个 project-web.jar 文件,其中包含我的 Struts2 操作。我正在使用约定插件。在我的 struts2.xml 中,我有以下内容:
<constant name="struts.convention.action.includeJars" value=".*?/project-web.*?jar(!/)?"/>
<constant name="struts.convention.exclude.parentClassLoader" value="true" />
<constant name="struts.convention.action.fileProtocols" value="file,jar,zip"/>
我遇到的错误包括
2019-11-26 13:21:01,511 WARN [com.opensymphony.xwork2.util.fs.DefaultFileManager] (default task-6) Could not normalize URL [vfs:.../wildfly-10.1.0.Final/bin/content/project-war-0.0.1.war] to file protocol!
2019-11-26 13:21:01,520 WARN [org.apache.struts2.convention.PackageBasedActionConfigBuilder] (default task-6) The includeJars pattern [.*?/project-web.*?jar(!/)?] did not match any jars in the classpath
2019-11-26 13:21:01,523 ERROR [com.opensymphony.xwork2.util.ResolverUtil] (default task-6) Could not search jar file '...\wildfly-10.1.0.Final\bin\content\project-0.0.1.war\WEB-INF\lib\project-web-0.0.1.jar\com\company\project\actions' for classes matching criteria: org.apache.struts2.config.ClasspathPackageProvider@606e8501 due to an IOException: java.io.FileNotFoundException: ...\wildfly-10.1.0.Final\bin\content\project-0.0.1.war\WEB-INF\lib\project-web-0.0.1.jar\com\company\project\actions (The system cannot find the path specified)
虽然 Wildfly 中没有 bin\content 文件夹,但我发现它与 JBoss vfs 有关。
请注意,当我使用 project.war 而不是作为模块部署 Struts2 时,webapp 工作正常。
为什么 Struts2 找不到我的操作?
Struts2 的早期版本似乎在 JBoss 的 VFS 方面存在问题。我从 2.3.24 升级到 2.5.20,这似乎让我过了那个点。