指定默认架构WebSpehere 8.5 Server

时间:2016-04-15 16:49:44

标签: websphere-8

我正在开展一个迁移项目,我们正在将一个应用程序从Weblogic迁移到Websphere 8.5服务器。

在Weblogic服务器中,我们可以在创建数据源时指定默认架构,但我在WebSpehere 8.5服务器中看不到相同的选项。

我们可以通过它设置任何自定义属性,我尝试了currentSchema = MySchema,但它没有用。

3 个答案:

答案 0 :(得分:0)

据我所知,Weblogic只允许通过设置'Init SQL val = (XTPOINTER)(*(char*)toVal.addr); // warning val = reinterpret_cast<XTPOINTER>(*(short*)toVal.addr); // No warning SQL ALTER SESSION SET CURRENT_SCHEMA = MySchema`来设置默认架构。因此,这个答案假设设置数据源的当前模式的唯一方法是通过SQL。

在WebSphere中,与WebLogic to a SQL string which sets the current schema in the database, such as最接近的是WebSphere上的Init SQL属性。

preTestSQLString属性的想法是WebSphere将执行一个非常简单的SQL语句来验证您可以在服务器启动时正确连接到数据库。通常,此属性的值非常基本,例如preTestSQLString preTestSQLString select 1 from dual', but since you can put in whatever SQL you want, you could set SQL ALTER SESSION SET CURRENT_SCHEMA = MySchema`。

WebSphere文档(link)的步骤:

  
      
  1. 在管理控制台中,单击“资源”&gt; JDBC提供程序。
  2.   
  3. 选择提供商,然后单击“其他属性”下的“数据源”。
  4.   
  5. 选择数据源,然后单击“其他属性”下的“WebSphere Application Server数据源属性”。
  6.   
  7. 选中“PreTest Connections”复选框。
  8.   
  9. 键入PreTest连接重试间隔的值,以秒为单位。此属性确定在预测试操作失败后进行新连接请求的频率。
  10.   
  11. 为PreTest SQL字符串键入有效的SQL语句。使用可靠的SQL命令,对性能影响最小;每次从空闲池获得连接时都会处理此语句。   例如,oracle中的“select one from dual”或SQL Server中的“SQL select 1”。
  12.   

答案 1 :(得分:0)

这个答案需要更多的工作,但我包括它,因为它是设计的解决方案,可以自定义关于连接的任何东西,包括架构。 WebSphere Application Sever允许您提供/扩展DataStoreHelper。

Knowledge Center document on providing a custom DataStoreHelper

在这种情况下,您可以扩展com.ibm.websphere.rsadapter.Oracle11gDataStoreHelper

JavaDoc for Oracle11gDataStoreHelper

以下方法将引起关注:

  • doConnectionSetup,在首次创建连接时对连接执行一次性初始化
  • doConnectionCleanup,它在将连接状态返回到连接池之前重置连接状态。

当您覆盖doConnectionSetup时,您将获得新创建的连接,您可以在此处进行操作,

super.doConnectionSetup(connection);
Statement stmt = connection.createStatement();
try {
    stmt.execute(sqlToUpdateSchema);
} finally {
    stmt.close();
}

doConnectionCleanup可让您考虑使用连接的应用程序代码可能会将架构切换为其他内容的可能性。 doConnectionCleanup让您有机会重置它。同样,您可以获得连接,

super.doConnectionCleanup(connection);
Statement stmt = connection.createStatement();
try {
    stmt.execute(sqlToUpdateSchema);
} finally {
    stmt.close();
}

请注意,在这两种情况下,调用相应的超类方法对于确保您不会根据数据库消除WebSphere Application Server内置的特定于数据库的初始化/清理代码非常重要。

答案 2 :(得分:0)

Universal Connection Pool(UCP)是一个Java连接池,白皮书“UCP with Webshere"显示了如何将UCP设置为数据源。

对于JDBC数据源,步骤类似,但是,您可以选择默认的JDBC驱动程序选项。

查看论文以供参考。