2

IBM WebSphere Liberty 能否处理将 server.xml 中的数据源/jndi 条目拆分为包含项?

当我将 server.xml 中的数据源拆分为它自己的文件时,并将其作为包含在库标记下方的 server.xml 文件中包含:

<include location="${server.config.dir}/datasources-join-include.xml"/>

和 datasources-join-include.xml 文件:

<?xml version="1.0" encoding="UTF-8" ?>
<server description="Datasource join include file">

  <dataSource id="db" jndiName="jdbc/Config">
     <jdbcDriver libraryRef="OracleLib"/>
     <properties.oracle URL="jdbc:oracle:xxx:@hostname:port:db" password="password" user="user"/>
  </dataSource>

  <jndiEntry id="db" jndiName="database" value="jdbc/XXXX"/>

</server>

当使用包含以这种方式设置时,它会失败(似乎无法识别数据源)。当我将数据源和 jndientry 直接放回 server.xml 中的完全相同的位置时,它工作正常。

4

2 回答 2

4

是的,Liberty 可以处理将 server.xml 中的数据源拆分到它自己的文件中,然后通过 包含<include />,这对于任何配置元素都是如此。

我没有发现您的配置有任何问题,因此可能是文件位置或名称不正确。我建议您检查您的日志,以确保您没有看到CWWKG0090E表明 server.xml 无法找到/解析您的包含文件。

于 2020-03-02T16:17:45.833 回答
0

是的,您可以将 Liberty 数据源(dataSource 元素)放入包含文件并从 server.xml 引用包含文件,就像您的示例中所示。它对我很有用,所以您的文件结构/文件名可能存在一些细微差别?我建议双重或三重检查一切以确保。您使用的是相对位置${server.config.dir},这意味着您的datasources-join-include.xml文件应与 server.xml 位于同一文件夹中,并且应具有该确切名称。

如果它仍然不适合你,这里有一些可能有助于调试的东西。Liberty 博客文章描述了几个 Liberty REST 端点,其中一个向您展示了配置的合并视图。在您的情况下,在配置了博客文章中描述的必要功能以使 REST 端点可用后,试一试,看看它是否正在识别您的数据源的配置,

https://localhost:9443/ibm/api/config/dataSource

于 2020-03-02T16:12:51.937 回答