我正在使用Wildfly,并将Struts2部署为模块。我将我的 project.war 文件部署到独立/部署中。project.war/WEB-INF/lib 中有一个 project-web.jar 文件,其中包含我的 Struts2 操作。我正在使用约定插件。在我的支柱2中.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.Finalbincontentproject-0.0.1.warWEB-INFlibproject-web-0.0.1.jarcomcompanyprojectactions' for classes matching criteria: org.apache.struts2.config.ClasspathPackageProvider$1@606e8501 due to an IOException: java.io.FileNotFoundException: ...wildfly-10.1.0.Finalbincontentproject-0.0.1.warWEB-INFlibproject-web-0.0.1.jarcomcompanyprojectactions (The system cannot find the path specified)
虽然 Wildfly 中没有 bin\content 文件夹,但我看到它与 JBoss vfs 有关。
请注意,当我使用我的project.war而不是作为模块部署Struts2时,Web应用程序可以工作。
为什么 Struts2 找不到我的动作?
似乎早期版本的Struts2在JBoss的VFS上存在问题。我从 2.3.24 升级到 2.5.20,这似乎让我已经过了那个点。