Lotus教程、Java教程、Java虚拟机、Java软件综合开发社区

Lotus、Domino、Java、C#、Web、数据库综合开发教程、资料社区

Archive for 08月, 2008

写了个15位身份证号升级为18位的SQL语句

Published by admin on 08月 30, 2008
SQL code
 15位身份证号升级为18位,适用于18xx年出生的公民 UPDATE 员工表 SET 身份证号=   SUBSTRING(身份证号,1,6)+18+SUBSTRING(身份证号,7,9)+  
 Read the rest of this entry »

Tomcat 5.0.28中的dwr出TransformerFactoryImpl not found错的处理办法

Published by admin on 08月 30, 2008

环境:dwr 1.1.4 + Tomcat 5.0.28 + jdk 1.5
配置了最基本的 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)

这是一个 XML 解析器的问题,我们能直接能理解的就是 TransformerFactoryImpl 找不到,那么这个类在哪个包里呢? xalan,就去 apache 网上下载到 xalan.jar 包扔到应用的 WEB-INF/lib 目录中,重启 Tomcat 就能OK 了
Read the rest of this entry »

Lotus Domino加密认证机制

Published by admin on 08月 29, 2008

Notes认证
        在这一部分,我们将讨论 Lotus Notes和D o m i n o是如何利用 Notes Remote ProcedureC a l l s ( N R P C )进行认证的。正如前面我们所说的, N o t e s认证是基于验证字的,而且使用了基于密码技术的公共密钥。
        请注意这种认证技术跟 X . 5 0 9认证很相似,请参考本书其他部分关于 X . 5 0 9的相关技术的介绍。

校验和认证
        在D o m i n o中有两个安全性过程使用客户机标识符中的信息来校验客户机是否合法。校验下载是第一个过程,它建立对客户机公用密钥的信任。如果校验成功,那么就开始第二个过程:认证,它将核实用户的身份。认证在一个请求 / 响应的交互过程中使用客户机和服务器的公用和私有密钥。
        建立对公用密钥信任的规则是:
        1) 信任服务器或客户机在层次名称树中的任何祖先的公用密钥。 (祖先的公用密钥存储在服务器或客户机的标识符文件中)
        2) 信任任何从有效验证字(此验证字是由服务器或客户机在层次名称树中的任何祖先所提交的)中获取的公用密钥。
Read the rest of this entry »

Hibernate 复合查询

Published by admin on 08月 28, 2008

复合查询主要是处理,具有关联关系的两个实体怎样进行关联查询,比如User实体对象与Addres实体对象具有一对多的关联关系,我们可以如下构造符合查询:

Criteria criteria=session.createCriteria(User.class);

   Criteria addcriteria=criteria.createCriteria(“addresses”);(1)

   addcriteria.add(Express.like(“address”,”%tianjin%”));

  List list=criteria.list();

Read the rest of this entry »

Spring + Hibernate是如何管理数据库连接的

Published by admin on 08月 28, 2008

最近在开发项目中采用框架:Spring +Hibernate,使用spring来管理数据库连接.可是经常会出现这样的情况.log日志中提示:

ava.lang.IllegalStateException: Pool not open
 at org.apache.commons.pool.BaseObjectPool.assertOpen(BaseObjectPool.java:78)
 at org.apache.commons.pool.impl.GenericObjectPool.borrowObject(GenericObjectPool.java:722)

查找原因大致如下:

在使用Spring进行系统开发的时候,数据库连接一般都是配置在Spring的配置文件中,并且由Spring来管理的。在利用Spring + Hibernate进行开发时也是如此。下面是一个简单的Spring + Hibernate Dao的例子:
程序代码
Read the rest of this entry »

Hibernate 总结

Published by admin on 08月 27, 2008

 第一部分:简介Hibernate

Hibernate是一个免费的开源Java包,它使得与关系数据库打交道变得十分轻松,就像您的数据库中包含每天使用的普通Java对象一样,同时不必考虑如何把它们从神秘的数据库表中取出(或放回到数据库表中)。它解放了您,使您可以专注于应用程序的对象和功能,而不必担心如何保存它们或稍后如何找到它们。

 Hibernate的工作方式

Hibernate不会对您造成妨碍,也不会强迫您修改对象的行为方式。它们不需要实现任何不可思议的接口以便能够持续存在。惟一需要做的就是创建一份XML“映射文档,告诉Hibernate您希望能够保存在数据库中的类,以及它们如何关联到该数据库中的表和列,然后就可以要求它以对象的形式获取数据,或者把对象保存为数据

  第二部分:HIBERNATE - 符合Java习惯的关系数据库持久化简介

一、使用流程
Read the rest of this entry »

Hibernate的映射类型

Published by admin on 08月 27, 2008

Hibernate映射类型分为两种:内置映射类型和客户化映射类型。内置映射类型负责把一些常见的Java类型映射到相应的SQL类型;此外,Hibernate还允许用户实现UserTypeCompositeUserType接口,来灵活地定制客户化映射类型。客户化类型能够把用户定义的Java类型映射到数据库表的相应字段。 

一、Hibernate的内置映射类型

1Java基本类型的Hibernate映射类型

Read the rest of this entry »

关于JVM默认内存的增加(TOMCAT、JBOSS、WEBSPHERE)

Published by admin on 08月 21, 2008
上一节说到因为应用服务器设置的JVM memory过小.导致应用服务器运行时提示outofmemory.现在具体讲解下如何增加JVM默认的内存可以给Java虚拟机设置使用的内存,但是如果你的选择不对的话,虚拟机不会补偿。可通过命令行的方式改变虚拟机使用内存的大小。如下表所示有两个参数用来设置虚拟机使用内存的大小。
参数描述
-Xms JVM初始化堆的大小
-Xmx JVM堆的最大值
Read the rest of this entry »

内存溢出 ava.lang.OutOfMemoryError: Java heap space解决办法

Published by admin on 08月 21, 2008

有三种可能导致OutOfMemoryError。首先是,此JVM有真实的内存泄漏,导致此JVM堆在内部实现时产生了一个Bug。这极不可靠。所有JVM都经过充分的测试,并且,如果有人发现这种bug,它将绝对是最高的优先级。因此你可以非常宽心地排除这种可能性。

   第二种可能的OutOfMemoryError原因只不过是,你没有为你的应用程序运行时给予足够多的可用内存。这种情况,有两种可能的方案,或者增加JVM堆可用大小,或者减少你的应用程序所需的内存总量。提高JVM可用堆大小可以简单的使用JVM的 -Xmx 参数。假如你将此参数设置尽可能的大(可用内存极限不要超过系统物理内存,否则你的应用程序将分页并暂停),仍然有以上所提到的内存问题,那么,你需要减少你的应用程序所可能用到内存总量。减少应用程序内存可能是简单的,你可能允许一些集合过大,例如使用了许多大的缓冲区。或者它过于复杂,要求你重新实现一些类,乃至重新设计应用程序。
Read the rest of this entry »

Struts2中如何防止表单刷新重复提交

Published by admin on 08月 18, 2008

做web开发时.经常会出现系统缓慢导致用户多次重复提交.或被恶意重复提交.有很多解决办法:比如:点了提交按扭后就让按扭disable=flase或其他相关处理.但struts2中处理起来更方便.

主要是需要做以下几个步骤:

1、jsp中增加 <s: token />;

2、struts2配置文件中.action中增加几行代码:

<interceptor-ref name=”defaultStack” />
<interceptor-ref name=”token” />
<result name=”invalid.token” type=”redirect>/token.jsp</result>     //如果是重复提交则跳转至token.jsp页面

另外注意点的是:在提交成功后的<result name=”success” type=”redirect”>…</result> 也设置type=redirect

在页面加载时,<s: token />产生一个GUID(Globally Unique Identifier,全局唯一标识符)值的隐藏输入框如:

<input type=”hidden” name=”struts.token.name” value=”struts.token”/>
<input type=”hidden” name=”struts.token” value=”BXPNNDG6BB11ZXHPI4E106CZ5K7VNMHR”/>

清单6 <s:token />的HTML输出同时,将GUID放到会话(session)中;在执行action之前,“token”拦截器将会话token与请求token比较,如果两者相同,则将会话中的token删除并往下执行,否则向actionErrors加入错误信息。如此一来,如果用户通过某种手段提交了两次相同的请求,两个token就会不同。

具体实现

首先看一下Action的代码:
Read the rest of this entry »