`
pengtyao
  • 浏览: 401906 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类
最新评论

websphere和weblogic的集群下Session持久化环境搭建

阅读更多
最近熟悉websphere和weblogic的集群环境下Session持久化,记录一下备忘,没什么条理:
Webphere Network deployment V6.1

数据库方式session持久化测试环境搭建:

1.创建存储session的数据库SESSDB(数据库采用IBM的DB2_8.1);
2.创建数据库表SESSIONS;
3.针对上面配置的数据库创建JDBC数据源与提供程序;
4.Websphere Server的会话管理的分布式环境里分布式会话选择数据库方式,并配置数据库属性与步骤3中配置的数据源关联起来;
5.Websphere Server的Web容器中定制属性:SessionTableName/DB2ADMIN.SESSIONS,指定Web应用的session存储至步骤2中创建的SESSIONS表中;
过程中出现的问题:
在websphere上配置数据源遇到下列问题
1 问题一:测试数据源时,出现[ibm][db2][jcc][t4][10205][11234] Null userid is not supported.
从这个提示信息,再查看数据源配置,发现没有创建连接需要配置的用户名和密码的输入窗口,后来看到数据源有一个链接“J2C认证”,于是点进去,配置了一个名为Tw-PengYaoNode01/bbb的J2C认证数据,其中,用户名和密码,都是db2admin。保存后,测试数据源时,出现下列问题。

2 问题二:测试数据源时,出现socket异常
在节点 Tw-PengYaoNode01 上的服务器 server1 上,对数据源 ddddd 执行的测试连接操作由于以下异常 java.sql.SQLException: [jcc][t4][2030][11211][3.50.152] 在对连接的底层
socket、socket input stream 或 socket output stream 执行操作期间发生通信错误。错误位置:Reply.fill()。消息:Connection reset。 ERRORCODE=-4499, SQLSTATE=08001DSRA0010E:
SQL 状态:08001,错误码:-4,499。 而失败。
分析:
在windows的服务中,把db2指定为只能用db2admin用户登录。这样,当192.168.11.111是用Administrator登录时,该服务就不能用db2admin访问,导致这个问题。修改后,设置为本地系统账

都可以使用这个服务。重启服务。但测试数据源时,出现下列问题。

3 问题三:出现访问6789异常,数据源配置的url类似于:jdbc:db2://192.168.11.111:6789/sample,这种配置,适用于JDBC Type 3 驱动程序。客户端的驱动程序由db2java.zip中提供,其实现类的包名为:
COM.ibm.db2.jdbc.net.DB2Driver。
JDBC Type 3 驱动程序是一种纯 Java 实现,它必须与 DB2 JDBC Applet 服务器(DB2 JDBC Applet Server)通信才能访问 DB2 数据,而 DB2 JDBC Applet Server指定的端口为6789,正式
由于它的启动,DB2 的net驱动服务才可以使用。
而我们在Websphere 中,创建的数据源,使用JDBC Type 4 驱动程序,Type 4驱动程序是仅用于Java的JDBC 驱动程序,它直接连接到数据库服务器。DB2 UDB(Universal Database) for
Linux, UNIX 和 Windows V8.1 引入了称为“通用 JDBC 驱动程序(Universal JDBC driver)”的 Type 4 驱动程序,在文件db2jcc.jar中提供,其实现类的包名为
com.ibm.db2.jcc.DB2Driver,并且要求CLASSPATH中有许可证JAR文件:对于 DB2 UDB V8 for Linux, UNIX 和 Windows 服务器:db2jcc_license_su.jar,对于 DB2 UDB for iSeries? and
z/OS 服务器(与 DB2 Connect 和 DB2 Enterprise Server Edition 一起提供):db2jcc_license_cisuz.jar
Type 4 URL 模式类似于“jdbc:db2://192.168.11.111:50000/sample”。因为当需要JDBC驱动程序将Java应用程序直接连接到DB2服务器上名为“sample”的数据库,该数据库位于配置在DB2
服务器(主机名为192.168.11.111)上的 DB2 实例中,而DB2服务器是在端口50000 上进行侦听。具体如何知道是在50000上侦听,可以通过下面的方法查看。
(1)先执行:
db2cmd
db2 get dbm cfg
可以看到
TCP/IP Service name (SVCENAME)=DB2
(2)从这个DB2,再查看操作系统的services文件(以windows为例,services文件位于windows/system32/drivers/etc目录下),可以看到:
db2c_DB2  50000/tcp ,这里Service name为“DB2”的这个服务在端口50000 上进行侦听。
因此,这个问题是端口配置错误了,将6789,改为50000,保存后,再测试数据源连接,测试成功。
关于使用DB2 Universal Database的db2java.zip与db2jcc.jar的详细对比,请参考
http://www.ibm.com/developerworks/data/library/techarticle/dm-0512kokkat/

4 问题四:应用访问数据源出现 cann't query data from physical database: com.ibm.db2.jcc.b.eo: "DB2ADMIN.ACCOUNT0" ????????. SQLCODE=-204, SQLSTATE=42704, DRIVER=3.53.95
分析:这里有几个问题
(1)第一个问题:是应用没有配置使用数据源配置的JAAS - J2C 认证数据(即前面配置的Tw- PengYaoNode01/bbb ),这个问题需要在部署应用时,选择”修改资源认证方法“,这个步骤比较隐晦,刚开始按向导往下走,根本没有找到。所以忽略了这个步骤

(2)第二个问题:上面配置好了,但还是访问出问题,查看数据库,发现建的表是属于Administrator,估计是这个原因,导致用 DB2ADMIN访问不到。所以,又重新删除了表,然后重新注销192.168.11.111,用DB2ADMIN登录192.168.11.111,然后再创建表,表就属于DB2ADMIN了。后来想了一下,是否也可以不用上面的方法,而是修改JAAS - J2C 认证数据Tw- PengYaoNode01/bbb中的用户名和密码,将用户名改为Administrator,将密码改为tongweb。这样应该也行。后来没有时间再试验。

另外,查询数据源时,如果lookup的是res-ref-name(例如:"java:comp/env/jdbc/db1" ),那么应该配置web.xml和ibm-web-bnd.xmi,在web.xml中设置resource-ref,在ibm-web-bnd.xmi
中设置res-ref于jndi-name的绑定。ibm-web-bnd.xmi,也可以不用自己写,在部署过程中,可以通过”目标资源 JNDI 名称“进行设置。

memory-to-memory方式session持久化

0.环境:1个apache负载均衡器 + 2个websphere network deployment 6.1应用服务器 + memory-to-memory方式session持久化
  环境搭建基本步骤:
  (1)配置一个Apahce负载均衡器
  (2)安装一个Deployment Manager节点DM
(3)安装两个应用服务器节点server1、server2
(4)启动server1和server2的NodeAgent,并将server1、server2注册至DM节点下
(5)在DM管理控制台创建一个集群MyCluster,将server1和server2添加至该集群
(6)创建一个复制域:MyClusterRepDomain
(7)配置server1和server2 分布式session持久化方式为memory-to-memory replication
(8)配置memory-to-memory replication的复制域为MyClusterRepDomain,复制模式为:Both client and server
(9)根据mytest.war需要,配置mysql数据库
(10)启动集群,通过管理服务器控制台将测试应用部署至整个集群下的所有Server

  用例:mytest.war、servlets-examples.war
遇到的问题及解决方法:
问题:在同一台机器上安装MD、server1、server2,server1、server2的http访问端口分别是9080、9081;部署应用后只能通过9080端口访问到?
分析:新搭建的环境,在虚拟主机中没有添加9081这个端口?
1.应用程序服务器 > server1 > 端口中,看一下WC_defaulthost 的端口是不是你访问的9081,如果不是,改一下,再重启server
2.如果是的话检查  环境 > 虚拟主机 >  default_host  >  主机别名中有没有9081这个端口,如果没有,新建一个9081端口,之后重启server再看;
3.还有就是你的应用包发布的时候,有一部指定虚拟主机,你是否指定的default_host 这个虚拟主机中。检查方法 :企业应用程序 > 应用包名 > 虚拟主机  是否选择的是 default_host
最后是default_host主机别名中没有9081这个端口,添加后一切正常了。
***************************************************************************************************************************
WebLogic 10gR3
0.环境:1个weblogic10gR3负载均衡器 + 2个weblogic10gR3 + replication方式session持久化
  环境搭建基本步骤:
  (1)通过ConfigurationWizard向导,创建一个新的Domain;
(2)配置管理服务器
(3)配置受管服务器
(4)配置集群
(5)将受管服务器添加至集群中
(6)创建Weblogic自带的HTTP代理应用程序
(7)编辑启动WebLogic的服务文件
(8)远程主机上配置受管服务器
(9)在应用中weblogic.xml文件中添加下面session持久化类型配置:
<session-descriptor>
    <persistent-store-type>replicated</persistent-store-type>
     <sharing-enabled>true</sharing-enabled>
</session-descriptor>
(10)启动集群,通过管理服务器控制台将应用部署至整个集群下的所有Server
分享到:
评论

相关推荐

    WebSphere环境下EJB编程(IBM红皮书)

    WebSphere环境下EJB编程是企业级Java开发的重要组成部分,IBM红皮书对此进行了深入的探讨。EJB(Enterprise JavaBeans)是一种在Java平台上构建可扩展、安全和事务处理的服务器端应用程序的标准。WebSphere作为IBM的...

    企业级IT运维宝典之WebLogic实战

    - **持久化管理**:支持 EJB 实例的状态管理和持久化。 - **连接池管理**:提供数据库连接池和其他资源连接池的管理。 #### 1.6 Weblogic 系统的关键特性 WebLogic 的关键特性包括: - **高性能**:支持大规模...

    强人Hibernate文档笔记

    4. **Transient and Detached Objects and Collections**: 这些是未与当前Session关联的持久化类实例,可以由应用程序在非持久化状态下创建,或者由已关闭的Session实例化。 5. **Transaction**: 用于定义原子操作...

    tomcat6+redis依赖包

    它是轻量级的,相比其他如IBM WebSphere或Oracle WebLogic等更大型的应用服务器,Tomcat有着较小的资源占用和更快的启动速度。然而,Tomcat默认并不支持跨服务器的Session共享。 **Redis** 是一种NoSQL数据库,以...

    基于J2EE在分布式环境下的底层结构(外文翻译+文献综述).zip

    7. **EJB组件模型**:EJB组件模型包括会话bean(Session Beans)、实体bean(Entity Beans)和消息驱动bean(Message-Driven Beans),它们分别处理业务逻辑、持久化数据和异步消息处理。 8. **Web容器和EJB容器**...

    Java.J2EE.EJB-Enterprise.JavaBeans, 3rd Edition-Titan.Books

    8. **WebLogic工作簿**:Oracle的WebLogic Server是另一个流行的应用服务器,weblogic_workbook.zip可能涵盖在WebLogic上配置和运行EJB的详细步骤,包括性能调优和集群配置。 通过学习《Java.J2EE.EJB-Enterprise....

    JavaEE技术总括

    总的来说,JavaEE技术栈提供了构建大规模、复杂企业应用所需的各种工具和技术,涵盖了从服务器、应用服务器到业务逻辑和数据持久化的全面解决方案。开发者可以根据项目规模、性能需求以及团队技术栈来选择合适的技术...

    深入掌握J2EE编程技术.part01.rar

    2. **EJB(Enterprise JavaBeans)**:是J2EE中的核心业务逻辑组件,分为三种类型:Session Beans(负责客户端交互)、Message-driven Beans(用于处理消息队列)和Entity Beans(代表持久化的数据实体)。...

    分布式J2EE教程PPT

    J2EE平台提供了多种负载均衡策略,包括基于硬件的负载均衡器和软件解决方案如WebLogic Server或WebSphere的应用服务器集群。通过这些工具,可以将客户端请求分发到多个服务器,以实现服务的高可用性和性能优化。 ...

    J2EE.rar_J2EE

    2. **EJB(Enterprise JavaBeans)**: EJB是核心的业务逻辑组件,分为三种类型:Session Beans(负责短暂的客户端会话)、Message-driven Beans(处理消息队列)和Entity Beans(代表持久化的业务对象)。...

    Java技术应用集订分送风刀霜剑发大水了

    - **Hibernate**: 深入理解Hibernate ORM框架的核心概念,如Session、SessionFactory、持久化状态等,能够熟练使用该框架进行数据库操作。 - **Spring**: 掌握Spring框架的核心模块,包括DI、AOP、Spring MVC等,...

    新闻发布系统 j2ee

    3. **数据访问层(Data Access Layer)**:通过JDBC驱动与SQL Server数据库通信,实现数据的持久化。可以使用DAO(Data Access Object)模式,将数据库操作封装起来,提高代码的可维护性和可重用性。 4. **会话和...

    J2EE架构师手册.rar

    3. **EJB组件**:EJB分为会话bean(Session Beans)用于处理业务逻辑,实体bean(Entity Beans)表示持久化的数据,以及消息驱动bean(Message-Driven Beans)用于处理JMS消息。 4. **JPA与Hibernate**:JPA(Java ...

    框架面试笔试问答题.docx

    - **持久化状态**包括瞬时态、持久态和脱管态,这些状态转换由Hibernate管理。 #### 4. Hibernate的查询方式 - **HQL(Hibernate Query Language)**:面向对象的查询语言,类似于SQL,但更侧重于面向对象的操作。...

Global site tag (gtag.js) - Google Analytics