1
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

Liberty REST APIでのデータソース接続の検証手順

Posted at

【参考】以下と同様のことをデータソースで実行しています。

検証環境

前提

Testing database connections in Open Liberty apps with REST APIs - OpenLiberty.ioに記載の設定をします。
この環境ではfeatureManagerに以下を追加します。

$ vi /opt/ibm/wlp/usr/servers/defaultServer/server.xml
  <featureManager>
    <feature>appSecurity-2.0</feature>
    <feature>restConnector-2.0</feature>
  </featureManager>

実行結果

% curl --insecure -u wsadmin:passw0rd "https://<hostname>:9443/ibm/api/validation/dataSource/PdprofDataSource" |jq
  % Total    % Received % Xferd  Average Speed   Time    Time     Time  Current
                                 Dload  Upload   Total   Spent    Left  Speed
100   391  100   391    0     0    378      0  0:00:01  0:00:01 --:--:--   378
{
  "uid": "PdprofDataSource",
  "id": "PdprofDataSource",
  "jndiName": "jdbc/derbyEmbedded",
  "successful": true,
  "info": {
    "databaseProductName": "DB2/LINUXX8664",
    "databaseProductVersion": "SQL110580",
    "jdbcDriverName": "IBM Data Server Driver for JDBC and SQLJ",
    "jdbcDriverVersion": "4.32.28",
    "schema": "DB2INST1",
    "user": "db2inst1"
  }
}

server.xmlで、dataSourceのdb2jcc.propertiesから認証の設定を削除して、authDataを使用するように変更した場合

  <dataSource id="PdprofDataSource" jdbcDriverRef="Db2Driver" jndiName="jdbc/derbyEmbedded" type="javax.sql.DataSource" containerAuthDataRef="DBAuth">
        <connectionManager maxPoolSize="5" minPoolSize="2"/>
        <properties.db2.jcc databaseName="PDPROF"
                      serverName="<hostname> portNumber="50000"
                      autoCommit="FALSE" traceLevel="-1"/>
    </dataSource>
    <authData id="DBAuth" user="db2inst1" password="passw0rd" />

auth=container&authAlias=DBAuth をつけて実行します

% curl --insecure -u wsadmin:passw0rd "https://<hostname>:9443/ibm/api/validation/dataSource/PdprofDataSource?auth=container&authAlias=DBAuth" |jq
  % Total    % Received % Xferd  Average Speed   Time    Time     Time  Current
                                 Dload  Upload   Total   Spent    Left  Speed
100   391  100   391    0     0    512      0 --:--:-- --:--:-- --:--:--   512
{
  "uid": "PdprofDataSource",
  "id": "PdprofDataSource",
  "jndiName": "jdbc/derbyEmbedded",
  "successful": true,
  "info": {
    "databaseProductName": "DB2/LINUXX8664",
    "databaseProductVersion": "SQL110580",
    "jdbcDriverName": "IBM Data Server Driver for JDBC and SQLJ",
    "jdbcDriverVersion": "4.32.28",
    "schema": "DB2INST1",
    "user": "db2inst1"
  }
}

失敗例。db2jcc.propertiesに誤ったパスワードを設定すると、以下のようになります

% curl --insecure -u wsadmin:passw0rd "https://<hostname>:9443/ibm/api/validation/dataSource/PdprofDataSource" |jq
  % Total    % Received % Xferd  Average Speed   Time    Time     Time  Current
                                 Dload  Upload   Total   Spent    Left  Speed
100  7172  100  7172    0     0   9669      0 --:--:-- --:--:-- --:--:--  9665
{
  "uid": "PdprofDataSource",
  "id": "PdprofDataSource",
  "jndiName": "jdbc/derbyEmbedded",
  "successful": false,
  "failure": {
    "sqlState": "28000",
    "errorCode": "-4214",
    "class": "java.sql.SQLInvalidAuthorizationSpecException",
    "message": "[jcc][t4][2013][11249][4.32.28] Connection authorization failure occurred.  Reason: User ID or Password invalid. ERRORCODE=-4214, SQLSTATE=28000 DSRA0010E: SQL State = 28000, Error Code = -4,214",
    "stack": [
      "com.ibm.db2.jcc.am.b7.a(b7.java:808)",
      "com.ibm.db2.jcc.am.b7.a(b7.java:66)",
      "com.ibm.db2.jcc.am.b7.a(b7.java:133)",
      "com.ibm.db2.jcc.t4.b.f(b.java:2683)",
      "com.ibm.db2.jcc.t4.b.b(b.java:2011)",
      "com.ibm.db2.jcc.t4.z.r(z.java:961)",
      "com.ibm.db2.jcc.t4.z.k(z.java:494)",
      "com.ibm.db2.jcc.t4.z.c(z.java:144)",
      "com.ibm.db2.jcc.t4.b.k(b.java:1520)",
      "com.ibm.db2.jcc.t4.b.b(b.java:1433)",
      "com.ibm.db2.jcc.t4.b.a(b.java:6862)",
      "com.ibm.db2.jcc.t4.b.b(b.java:949)",
      "com.ibm.db2.jcc.t4.b.a(b.java:862)",
      "com.ibm.db2.jcc.t4.b.a(b.java:457)",
      "com.ibm.db2.jcc.t4.b.a(b.java:430)",
      "com.ibm.db2.jcc.t4.b.<init>(b.java:368)",
      "com.ibm.db2.jcc.DB2DataSource.getSimpleConnection(DB2DataSource.java:139)",
      "com.ibm.db2.jcc.DB2DataSource.getConnection(DB2DataSource.java:116)",
      "com.ibm.db2.jcc.DB2DataSource.getConnection(DB2DataSource.java:91)",
      "com.ibm.ws.rsadapter.impl.DatabaseHelper.getConnectionFromDatasource(DatabaseHelper.java:1467)",
      "com.ibm.ws.rsadapter.impl.DB2JCCHelper.getConnectionFromDatasource(DB2JCCHelper.java:638)",
      "com.ibm.ws.rsadapter.impl.WSManagedConnectionFactoryImpl$7.run(WSManagedConnectionFactoryImpl.java:1032)",
      "com.ibm.ws.rsadapter.impl.WSManagedConnectionFactoryImpl$7.run(WSManagedConnectionFactoryImpl.java:1019)",
      "java.base/java.security.AccessController.doPrivileged(AccessController.java:785)",
      "java.base/java.security.AccessController.doPrivilegedWithCombiner(AccessController.java:841)",
      "com.ibm.ws.rsadapter.impl.WSManagedConnectionFactoryImpl.getConnectionUsingDS(WSManagedConnectionFactoryImpl.java:1019)",
      "com.ibm.ws.rsadapter.impl.WSManagedConnectionFactoryImpl.getConnection(WSManagedConnectionFactoryImpl.java:848)",
      "com.ibm.ws.rsadapter.impl.WSManagedConnectionFactoryImpl.createManagedConnection(WSManagedConnectionFactoryImpl.java:698)",
      "com.ibm.ejs.j2c.FreePool.createManagedConnectionWithMCWrapper(FreePool.java:1389)",
      "com.ibm.ejs.j2c.FreePool.createOrWaitForConnection(FreePool.java:1263)",
      "com.ibm.ejs.j2c.PoolManager.reserve(PoolManager.java:1471)",
      "com.ibm.ejs.j2c.ConnectionManager.allocateMCWrapper(ConnectionManager.java:576)",
      "com.ibm.ejs.j2c.ConnectionManager.allocateConnection(ConnectionManager.java:308)",
      "com.ibm.ws.rsadapter.jdbc.WSJdbcDataSource.getConnection(WSJdbcDataSource.java:143)",
      "com.ibm.ws.rsadapter.jdbc.WSJdbcDataSource.getConnection(WSJdbcDataSource.java:117)",
      "com.ibm.ws.rest.handler.validator.jdbc.DataSourceValidator.validate(DataSourceValidator.java:91)",
      "com.ibm.ws.rest.handler.validator.internal.ValidatorRESTHandler.handleSingleInstance(ValidatorRESTHandler.java:283)",
      "com.ibm.wsspi.rest.config.ConfigBasedRESTHandler.handleRequest(ConfigBasedRESTHandler.java:326)",
      "com.ibm.ws.rest.handler.validator.internal.ValidatorRESTHandler.handleRequest(ValidatorRESTHandler.java:483)",
      "com.ibm.ws.rest.handler.internal.service.RESTHandlerContainerImpl.handleRequest(RESTHandlerContainerImpl.java:465)",
      "com.ibm.ws.rest.handler.internal.servlet.RESTProxyServlet.handleWithDelegate(RESTProxyServlet.java:121)",
      "com.ibm.ws.rest.handler.internal.servlet.RESTProxyServlet.service(RESTProxyServlet.java:66)",
      "javax.servlet.http.HttpServlet.service(HttpServlet.java:791)",
      "com.ibm.ws.webcontainer.servlet.ServletWrapper.service(ServletWrapper.java:1266)",
      "com.ibm.ws.webcontainer.servlet.ServletWrapper.handleRequest(ServletWrapper.java:754)",
      "com.ibm.ws.webcontainer.servlet.ServletWrapper.handleRequest(ServletWrapper.java:451)",
      "com.ibm.ws.webcontainer.filter.WebAppFilterChain.invokeTarget(WebAppFilterChain.java:197)",
      "com.ibm.ws.webcontainer.filter.WebAppFilterChain.doFilter(WebAppFilterChain.java:100)",
      "com.ibm.ws.app.manager.wab.internal.OsgiDirectoryProtectionFilter.doFilter(OsgiDirectoryProtectionFilter.java:92)",
      "com.ibm.ws.webcontainer.filter.FilterInstanceWrapper.doFilter(FilterInstanceWrapper.java:199)",
      "com.ibm.ws.webcontainer.filter.WebAppFilterChain.doFilter(WebAppFilterChain.java:93)",
      "com.ibm.ws.security.jaspi.JaspiServletFilter.doFilter(JaspiServletFilter.java:58)",
      "com.ibm.ws.webcontainer.filter.FilterInstanceWrapper.doFilter(FilterInstanceWrapper.java:199)",
      "com.ibm.ws.webcontainer.filter.WebAppFilterChain.doFilter(WebAppFilterChain.java:93)",
      "com.ibm.ws.webcontainer.filter.WebAppFilterManager.doFilter(WebAppFilterManager.java:1069)",
      "com.ibm.ws.webcontainer.filter.WebAppFilterManager.invokeFilters(WebAppFilterManager.java:1260)",
      "com.ibm.ws.webcontainer.filter.WebAppFilterManager.invokeFilters(WebAppFilterManager.java:1078)",
      "com.ibm.ws.webcontainer.servlet.CacheServletWrapper.handleRequest(CacheServletWrapper.java:77)",
      "com.ibm.ws.webcontainer40.servlet.CacheServletWrapper40.handleRequest(CacheServletWrapper40.java:87)",
      "com.ibm.ws.webcontainer.WebContainer.handleRequest(WebContainer.java:978)",
      "com.ibm.ws.webcontainer.osgi.DynamicVirtualHost$2.run(DynamicVirtualHost.java:293)",
      "com.ibm.ws.http.dispatcher.internal.channel.HttpDispatcherLink$TaskWrapper.run(HttpDispatcherLink.java:1284)",
      "com.ibm.ws.http.dispatcher.internal.channel.HttpDispatcherLink.wrapHandlerAndExecute(HttpDispatcherLink.java:500)",
      "com.ibm.ws.http.dispatcher.internal.channel.HttpDispatcherLink.ready(HttpDispatcherLink.java:459)",
      "com.ibm.ws.http.channel.internal.inbound.HttpInboundLink.handleDiscrimination(HttpInboundLink.java:569)",
      "com.ibm.ws.http.channel.internal.inbound.HttpInboundLink.handleNewRequest(HttpInboundLink.java:503)",
      "com.ibm.ws.http.channel.internal.inbound.HttpInboundLink.processRequest(HttpInboundLink.java:363)",
      "com.ibm.ws.http.channel.internal.inbound.HttpInboundLink.ready(HttpInboundLink.java:330)",
      "com.ibm.ws.http.channel.h2internal.H2StreamProcessor$Http2Ready.run(H2StreamProcessor.java:1849)",
      "com.ibm.ws.threading.internal.ExecutorServiceImpl$RunnableWrapper.run(ExecutorServiceImpl.java:298)",
      "java.base/java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1128)",
      "java.base/java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:628)",
      "java.base/java.lang.Thread.run(Thread.java:835)"
    ]
  }
}
1
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
1
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?