java - IBatis sqlmap资源路径在windows中工作而不是在unix中

标签 java wildfly mybatis

现有代码库的 Java 升级和 Wildfly 升级已完成。在具有 Wildfly 服务器的 Windows 上,应用程序已正确部署。在具有 Wildfly 服务器的 Unix 上,应用程序部署失败,如下所示:

Error parsing XPath '/sqlMapConfig/sqlMap'.  
Cause: java.io.IOException: Could not find resource ..\..\WEB-INF\lib\configs\commonSql.xml

尝试相对地址的不同组合。假设是ibatis在META-INF\classes中查找配置。

配置文件具有以下条目:

sqlMap resource="..\\..\WEB-INF\lib\configs\commonSql.xml

预计 Windows 和 Unix 在同一服务器上会有相同的行为。

最佳答案

在 Web 应用程序中使用相对路径(尤其是对 WEB-INF 文件夹的引用)来访问资源是不可移植的。这正是您所面临的。

解决此问题的正确方法取决于应用程序的打包和部署方式。一般来说,您需要将资源放入应用程序的 WEB-INF/classes 文件夹中(或放入 WEB-INF/lib 中的 *.jar 文件中)。当 iBatis 搜索资源文件时,WEB-INF/classes 将一起使用 WEB-INF/lib 中的所有 jar。

例如,如果您将 commonSql.xml 放入 WEB-INF/classes/configs 那么您需要在 iBatis 配置中指定它:

sqlMap resource="configs/commonSql.xml"

或者,您可以创建一个 *.jar 文件,其中包含顶级文件夹 configs 以及其中的 commonSql.xml 文件。然后将此 *.jar 文件放入 WEB-INF/lib 文件夹中。然后与上面相同的配置将能够加载该文件。

关于java - IBatis sqlmap资源路径在windows中工作而不是在unix中,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58270998/

相关文章:

java - 保持条目按添加顺序的映射实现

java - Wildfly - 模块 - 确定包和依赖信息的 'proper' 方法是什么?

java - MyBatis/Ibatis :- Help regarding query in Ibatis/Mybatis

java - 没有 Maven 的 Spring MyBatis

java - 数据源在 WebLogic 12.2 上无故丢失

java - 如何在数组中保存运行计数?

Java字计数器

java - 如何使用java将yaml文件转换为数组

java - WELD-000119 : Not generating any bean definitions from because of underlying class loading error

java - Wildfly - Infinispan 事务配置