Struts 从1.1使用到1.3已有多年,都升成2了,却来了个大变脸,须重新审视一番了。从头学习,记下笔记,以要点式。
1. Struts2 与 Struts1 似乎没什么血缘关系了,承自于 WebWork,直害 WebWork 不再推出新版本了,原先的 WebWork 使用者只需顺其然,即是水道渠成;相反 Struts1 的开发经验对于 Struts2 却没有太大的帮助。
2. Struts1 的核心控制器是 ActionServlet,而 Struts2 的核心控制器是 FilterDispatcher。Struts2 的业务 Action 会在运行时生成 Action 代理。
3. Struts1 的 Action 须继承抽象 Action 类,侵入了 Servlet API;而 Struts2 的 Action 可以实现 ActionSupport,或者只要一个纯净的 POJO 来充当,完全与 Servlet 绝缘。也因此带来测试性 Struts2 要比 Struts1 强,可把 Struts TestCase 扔到一旁去了。 Read More
今夜,打开 TheServerSide.Com,看到 MyEclipse 又出新品 MyEclipse Blue Edition,专为 WebSphere 开发者打造的。WebSphere 用户也算是有福了,想想以前在 MyEclipse 里联用 WebSphere Server 是一件多么痛苦的事情啊,所以不得不在本地用 Tomcat 测试,一搬到正式环境难免要受到兼容性的折磨。WSAD 和 RAD 提供的功能自是不必说,但慢的难以忍受,快来体验一下 MyEclipse Blue Edition 吧。
原文翻译如下:
Genuitec 今日宣布发布一款名为 MyEclipse Blue Edition 的新产品,它针对的是 IBM Rational Application Developer (RAD) 和 WebSphere 的开发。 Read More
通常 Websphere Application Server (WAS) 都是结合 LDAP 来对用户对行验证,实现单点登陆的。因为 LDAP 有着一个得天独厚的优势,它对查询进行了优化,因此 WAS 理所当然的提供了对 LDAP 十分完善的支持。从 WAS 控制台进 安全性->用户注册表->LDAP,在类型里可以看到支持 IBM_Directory_Server、SecureWay、Sun ONE、Domino、Active_Directory、eDirectory 还可定制 LDAP 连接。
好,就此打住,我在这里要介绍的是如何配置 WAS 控制台和应用通过 JDBC 来验证用户。这一想法产生的背景是:公司原所有系统是通过 Portal 做的集成,配置 LDAP 便能实现 SSO,但有一个新的项目暂不能通过 LDAP 来验证,但也要能实现 SSO,于是就意思到要用 JDBC 来进行用户验证。你也许已注意到在 安全性->用户注册表 下除了 本地 OS 和 LDAP 外,还有一个 定制。我们就是要在这个 "定制" 上做文章的。下面详细具体步骤。 Read More
假定Java 程序中要定期执行 SQL 语句,因需求变更应修改原有 SQL 语句或者加上更多的语句时,不得不修改源代码,然后再次编译。 要是把 SQL 语句写在单独的 SQL 脚本文件中,由 Java 程序来定时加载执行,那么每次改动时仅仅修改 SQL 脚本文件就行了。
Java 没有提供现成的东西,所以自己写了一个这样的 SQL 脚本执行类 SqlFileExecutor。支持通用的 SQL 脚本文件,"--" 作为注释前导符,分号 ";" 分隔语句。不支持 MySQL 的 /*...*/ 形式的注释格式。对于 Windows 和 Linux/Unix 下编辑的脚本文件都测试通过。 这两个系统文件中的换行符不一样,Windows 是 "\r\n",Linux/Unix 是 "\n"。 Read More
有时候我们要跟踪方法的执行时间,来观察系统的性能、时间分布。特别是要找出那些十分耗时的操作。如果是在每个方法中起始和结束位置记下时间相减,那是不太现实的,对代码的侵入性太过份,而且在产品环境中又得屏闭那部份代码。
幸好现在有了 AOP,通过配置方式再加上外部辅助代码就能达到我们的要求,正式上线时只需要简单改个配置项拆卸下来即可。
下面介绍三种方式来打印每个方法的执行时间,分别是:
1. Spring 2.0 用 AspectJ 实现 AOP
2. Spring 通用的方法拦截
3. 直接用 AspectJ 实现
Read More
我在 Websphere Application Server (WAS) 下配置 JDBC 提供程序时,选择了 Oracle JDBC Driver 确定之后,看到最后一个选项是:oracle.jdbc.pool.OracleConnectionPoolDataSource。
顾名思义,这是一个 DataSource 实现为,就像 DBCP 的 BasicDataSource 一样。那么能不能也像 BasicDataSource 那样,通过 new BasicDataSource(),然后设置各个必须的属性得到一个数据源 DataSource 呢?这个 OracleConnectionPoolDataSource 又是在哪个包里呢? Read More
七. 线程在 Quartz 中的用法
线程与 Quartz 来说尤为重要,因为 Quartz 就是设计为支持同时运行多个 Job。为达到此效果,Quartz 非常倚重于内建于 Java 语言的线程,借助于自己的类和借口还有所增强。你已经在本章或前面章节中看到过这方面的例子。
当 Quartz Schduler 首次由某个工厂方法创建时,工厂配置了 Scheduler 会在它的整个生命周期中用到的几个重要的资源。其中一些重要的资源是与线程相关的。
·主处理线程:QuartzSchedulerThread
Quartz 应用第一次运行时,main 线程会启动 Scheduler。QuartzScheduler 被创建并创建一个 org.quartz.core.QuartzSchedulerThread 类的实例。QuartzSchedulerThread 包含有决定何时下一个 Job 将被触发的处理循环。顾名思义,QuartzSchedulerThread 是一个 Java 线程。它作为一个非守护线程运行在正常优先级下。 Read More- 环境:dwr 1.1.4 + Tomcat 5.0.28 + jdk 1.6.0_03
配置了最基本的 web.xml,加了一个 web.xml 和 RemoteBean,部署后通过网址
http://localhost:8080/testdwr/dwr 访问
页面出现错误
javax.xml.transform.TransformerFactoryConfigurationError: Provider org.apache.xalan.processor.TransformerFactoryImpl not found
javax.xml.transform.TransformerFactory.newInstance(Unknown Source)
uk.ltd.getahead.dwr.convert.DOMConverter.<init>(DOMConverter.java:157) Read More ![Tomcat 和 OpenLDAP, 从配置到应用[翻译]](https://yanbin.blog/images/logos/tomcat-logo.png)
Tomcat 和 OpenLDAP, 从配置到应用
by Darren Duke
05/31/2005
几乎所有的 Java Web 应用都需要某种类型的安全性的控制, 并且这通常会借助于 Lightweight Directory Access Protocol (LDAP) 目录服务来实现. 作为一个开发者,很有必要在本地安装一个 OpenLDAP 和 Web 容器来提高开发效率. 配置 Tomcat 连接到 OpenLDAP 的过程假如你能理解的话,还是很直白的. 这篇文章详细描述了这一配置过程,并用 Apache Jakarta 项目下的标签库 (taglib) 来演示简单的方式去测试这一安全机制.
内容
5. 易失性、持久性和可恢复性
这三个属性有些类似的,由于它们影响的都是 Job 的运行时行为。我们下面依次讨论它们。
·Job 的易失性
一个易失性的 Job 是在程序关闭之后不会被持久化。一个 Job 是通过调用 JobDetail 的 setVolatility(true) 被设置为易失性的。
Job 易失性的默认值是 false. Read More当你需要持久化 Job 时不应使用 RamJobStore
RamJobStore 使用的是非永久性存储器,所有关于 Job 和 Trigger 的信息会在程序关闭之后丢失。保存 Job 到 RamJobStore 有效的使得它们是易失性的。假如你需要让你的 Job 信息在程序重启之后仍能保留下来,你就该考虑另一种 JobStore 类型,比如 JobStoreTX 或者 JobStoreCMT。它们会在第六章“作业存储与持久化”中讲到。