日志分类:JBoss AS

JBossWeb源代码分析系列:Session定时失效分析

2008-10-29,星期三 | 分类:JBoss AS | 标签: | 浏览:149
一、 Session失效的检查流程 JBoss AS在启动时会调用StandardEngine的start方法,在Start方法里会启动一个ContainerBackgroundProcessor的后台线程,该后台线程会定期地调用StandardEngine下的所有StandardContext的backgroundProcess方法。StandardContext的backgroundProcess将Session的失效处理委托给StandardManager的ProcessExpires完成。ProcessExpires方法会取出StandardConetext中的所有StandardSession,逐个调用StandardSession的isValid方法。IsValid方法负责判断Session是否失效,如果失效则调用StandardSession的Expire方法,发送Session失效事件并清除保存在Session中的其它信息,之后再调用StandardManager的Remove方法将该Session从StandardManager保存Session的HashMap中清除,至此整个Session的失效处理过程结束。 二、 Session失效的检查间隔 检查Session失效的时间间隔由两个参数确定,一个是后台线程ContainerBackgroundProcessor的轮询时间间隔,一个是ProcessExpires方法中检查Session失效的频率。检查失效的时间间隔 = 轮询的时间间隔 * 检查频率。涉及的关键代码如下: ContainerBase.java protected class ContainerBackgroundProcessor implements Runnable { public void run() { while (!threadDone) { try { Thread.sleep(backgroundProcessorDelay * 1000L); } catch (InterruptedException e) { ; } ManagerBase.java public void backgroundProcess() { count = (count + 1) ...

新一代的JBoss管理控制台Embedded Jopr

2008-10-16,星期四 | 分类:JBoss AS | 标签: | 浏览:609
JBoss的管理控制台Jmx-console一直被大家诟病,不过JBoss最近悄无声息地发布了一款新的管理控制台应用—Embedded Jopr,新的管理控制台是基于Seam框架开发的一个Web应用,无论是界面还是操作都比以前好多了,感兴趣的朋友可以下载体验一下。 Embeded-jopr项目信息 下载地址:http://www.jboss.org/community/docs/DOC-12804 安装指南:http://www.jboss.org/community/docs/DOC-12801

采用groovy开发基于JBoss的JSF应用

2008-10-16,星期四 | 分类:JBoss AS, JBossTools | 标签: | 浏览:237
开发环境 JBoss AS 4.2.3GA + JBossTools 2.1.2 + GroovyEclipsePlugin 1. 项目准备 1.1. 新建一个JSF项目 在Eclipse中选择“File-New->JSF Project”,在出现的窗口中输入: Project Name:groovydemo JSF Enviroment:JSF 1.2 Template:JSFBlankWithoutLibs 选择“Finish”结束创建JSF项目; 1.2. 修改web.xml 修改WEB-INF目录下的web.xml,增加如下内容: <context-param> <param-name>com.sun.faces.developmentMode</param-name> <param-value>true</param-value> ...

JBoss AS网络集中部署教程

2008-10-03,星期五 | 分类:JBoss AS | 标签: | 浏览:626
一、集中部署介绍 集中部署是JBoss AS提供的高级部署特性,在这种部署模式里,JBoss AS的配置信息被集中存储在支持WebDAV协议的Web服务器上。JBoss AS应用服务器只需安装简单的启动、关闭工具即可。运行时,JBoss AS所需的服务和应用等资源通过WebDAV协议从Web服务器下载,其它与本地部署模式没有区别。因而这种模式非常适合需要采取统一的方式部署多个JBoss AS实例的开发和生产环境。 支持WebDAV协议的Web服务器有很多,这里我们将使用JBoss AS作为的WebDAV服务器进行后面的部署实践。JBoss AS本身没有提供对WebDAV协议的支持,但是JBoss AS自带的Netboot应用,通过Servlet过滤器技术实现了对WebDAV协议的简单支持。 二、WebDAV服务器配置 1、 新建Netboot配置 在JBoss AS目录中复制default子目录,并将复制的目录名修改为netboot。注:实际上,WebDAV服务器只需要部署netboot应用的Web服务,因而可以在minimal配置的基础上增加jbossweb服务即可。 2、 部署netboot应用 从JBoss AS安装路径的docs/examples/netboot将netboot.war包以exploded方式部署到netboot配置的deploy目录里。 3、 拷贝JBoss微内核所需的jar包 在netboot.war目录下新建一个lib目录,将JBoss AS安转路径中lib目录下的jar包全部拷贝过来。另外还需要拷贝WebDAV客户端webdavlib.jar及其所需的jdom.jar包到该目录中。 注:webdavlib.jar和jdom.jar可以从apache的slide开源项目中下载。 4、 建立集中管理的配置 在netboot.war目录下新建server子目录,然后可以将需要的JBoss AS配置拷贝到server目录里即可。为了简单起见,这里以default配置为例,只需将default目录拷贝到server目录下。值得注意的是,集中管理的配置不支持exploded的war、sar包,因而必须将配置的war、sar包采用zip格式压缩。 整个WebDAV服务器的目录、文件布局如下: 三、JBoss AS实例配置 1、 建立JBoss AS实例的目录 新建一个名为jbossas的目录,然后分别新建用于存放启动、关闭工具包的bin目录和用于存放endorsed标准jar包的lib目录。 2、 拷贝启动、关闭工具包 从JBoss AS安装路径的bin目录下拷贝run.bat、run.jar、shutdown.bat和shutdown.jar到新建的Jbossas/bin目录。这里以Windows操作系统为例,Linux操作系统拷贝相应的脚本文件即可。 3、 拷贝endorsed标准jar包 从JBoss AS安装路径的lib/endorsed目录下将其中的所有文件拷贝到jbossas/lib/endorsed目录下。 整个JBoss AS实例目录、文件的布局结构如下: 四、启动 1、 启动WebDAV服务器 run –b192.168.1.177 –c netboot 2、 启动JBoss AS示例 run --netboot=http://192.168.1.177:8080/netboot/ --bootlib=jdom.jar 五、验证 1、 Jmx-console 打开浏览器,访问http://localhost:8080/jmx-console出现如下页面说明JBoss AS实例启动成功! 2、 热部署 往WebDAV服务器的netboot.war/server/default/deploy目录下添加一个zip格式压缩的HelloWeb.war包,在JBoss AS实例的控制台将会看到如下信息说明HelloWeb应用的热部署成功。 INFO [TomcatDeployer] deploy, ctxPath=/HelloWeb, warUrl=file:/D:/ jbossas/server/default/tmp/deploy/tmp46821HelloWeb-exp.war/

Deployment服务:JBossAS管理动态资源的利器

2008-06-09,星期一 | 分类:JBoss AS | 标签: | 浏览:301
Deployment是JBossAS的一个实验性的服务,它采用Velocity的模板机制,能够实现动态创建永久性的JMS、JCA等资源的功能。 (一) Deployment服务的安装 1. DeploymentService是JBoss中的一个小不点,隐藏在JBoss中的/docs/examples/varia目录下。 2. 它的安装非常简单,使用的是ant脚本,运行命令ant install,DeploymentService被安装到default配置中deployment-service.sar目录下,模板文件被安装到default配置中的conf/templates下; 3. 启动JBoss服务器,打开JMX-Console就可以在JBoss域下找到service=DeploymentService节点,安装完成。 (二) Deployment服务的配置 Deployment服务本身是一个MBean,它主要通过Deployment服务中的META-INF/jboss-service.xml文件配置,主要的属性如下: 1. TemplateDir:指向部署模板的目录,缺省为./conf/templates; 2. UndeployDir:指向正在动态生成的部署模块目录,缺省为./undeploy; 3. DeployDir:指向已经动态生成的部署模块目录,缺省为./deploy; (三) Deployment服务的应用 1. 动态添加JMS Queue MBeanServer server = MBeanServerLocator.locateJBoss(); ObjectName objectName = null; objectName = new ObjectName("jboss:service=DeploymentService"); DeploymentServiceMBean dservice = (DeploymentServiceMBean) MBeanServerInvocationHandler .newProxyInstance(server, objectName, DeploymentServiceMBean.class, false); HashMap properties = new HashMap(); properties.put("QueueName", "jbossweekQueue"); String module = dservice.createModule("jbossweek", "jms-queue", properties); dservice.deployModuleAsynch(module); 2. 动态删除JMS Queue MBeanServer server = MBeanServerLocator.locateJBoss(); ObjectName objectName = null; objectName = new ObjectName("jboss:service=DeploymentService"); DeploymentServiceMBean dservice = ...

JBossMQ JMS集群实战

2008-05-29,星期四 | 分类:JBoss AS | 标签: | 浏览:502
(一) 环境 数据库服务器:Oracle 9i2 操作系统:Windows XP SP2 JBoss版本:4.2.2 JDK:Sun 1.5.0.13 网络配置:同一机器的一个网卡上绑定两个ip地址192.168.1.18和192.168.1.147 (二) 配置 1. 配置消息和事务日志持久保存的数据源,从JBoss安装位置的docs\examples\jca目录下拷贝到server\all\deploy目录下,并修改其中的连接配置,这里使用OracleDS作为持久保存的数据源。注意:别忘了把Oracle的jdbc驱动程序拷贝到server\all\lib目录下。 2. 修改DestinationManager配置,删除server\all\deploy-hasingleton\jms目录下的hsqldb-jdbc2-service.xml文件,拷贝docs\examples\jms目录下的oracle-jdbc2-service.xml到server\all\deploy-hasingleton目录下,使用OracleDS作为DestinationManager的数据源。 3. 修改StateManager配置,将其中的数据源配置由 <depends optional-attribute-name="ConnectionManager">jboss.jca:service=DataSourceBinding,name=DefaultDS </depends> 改为: <depends optional-attribute-name="ConnectionManager">jboss.jca:service=DataSourceBinding,name=OracleDS</depends> 4. 配置测试的Topic,在server\all\deploy-hasingleton\jms目录下新建一个名为jbossweek-jms-service.xml文件,内容如下: <mbean code="org.jboss.mq.server.jmx.Topic" name="jboss.mq.destination:service=Topic,name=jbossweekTopic"> <depends optional-attribute-name="DestinationManager">jboss.mq:service=DestinationManager</depends> </mbean> 5. 创建node1的服务器配置,将server\all目录复制一份改名为node1 6. 配置完成。 (三) 验证 1. 分别以run –c all –b192.168.1.17和run –c node1 –b192.168.1.148先后启动all和node1配置。此时192.168.1.17为主节点,浏览http://192.168.1.17:8080/jmx-console/。打开JNDIView可以看到jbossweekTopic的JNDI名称。此时192.168.1.17为主节点,浏览http://192.168.1.148:8080/jmx-console/。打开JNDIView就会发现没有jbossweekTopic的JNDI名称。 2. 关闭192.168.1.17上的all服务器,此时在192.168.1.148上的node服务器的控制台上会出现如下信息: 13:11:13,921 INFO [TreeCache] viewAccepted(): [192.168.1.17:2292|2] [192.168.1. 148:2327] 13:11:14,015 INFO [TreeCache] viewAccepted(): [192.168.1.17:2288|2] [192.168.1. 148:2321] 13:11:14,218 INFO [DefaultPartition] New cluster ...