1

在启动我的 server.xml 包含authdata的自由服务器时,我面临NonSqlTransientException Null userid not supported

4

1 回答 1

2

Liberty 中的 authData 配置仅用于容器管理的身份验证。如果您正在使用应用程序身份验证(如没有资源引用的 JNDI 查找的情况,或者如果使用设置为应用程序身份验证类型的资源引用),则 authData 不适用。如果您将资源引用与 Container 身份验证一起使用,则可以使用 authData,但还有一个额外的配置步骤可以将 authData 与 dataSource 关联。这可以通过以下任一方式完成,记录在此知识中心文章中

一种选择是将 dataSource 的 containerAuthDataRef 配置为指向 authData 元素的 id(如果没有,则需要为其添加一个 id)。这是一个例子,

<authData id="myAuth" user="user1" password="pwd1"/>
<dataSource jndiName="jdbc/myDataSource" containerAuthDataRef="myAuth">
   <jdbcDriver libraryRef=...
   <properties...
</dataSource>

另一个选项是在数据源的应用程序绑定(例如 ibm-web-bnd.xml 或 ibm-ejb-jar-bnd.xml)中的 authentication-alias 下指定 authData 的 id。例如,以下绑定基于上一个示例中的服务器配置,

<resource-ref name="java:app/env/jdbc/myDataSourceRef" binding-name="jdbc/myDataSource">
  <authentication-alias name="myAuth"/>
</resource-ref>

需要注意的是,前者是容器身份验证的默认设置,在没有后者的情况下使用。因此,如果您同时指定两种方式,则后者优先,并将被使用。

于 2018-08-27T22:16:17.047 回答