posted @ 2008-08-21 11:29 寒武纪 阅读(1786) | 评论 (0) | 编辑 收藏
posted @ 2008-07-31 15:13 寒武纪 阅读(2077) | 评论 (5) | 编辑 收藏
setQueryString(NameValuePair[] params)
void
setQueryString(String queryString)
posted @ 2008-07-16 10:31 寒武纪 阅读(5195) | 评论 (2) | 编辑 收藏
Jakarta的httpclient3.1是最新版本,项目中需要用程序模拟浏览器的GET和POST动作。在使用过程中遇到不少问题。 1. 带附件的POST提交 最开始都是使用MultipartPostMethod这个类,现在已经废弃这个类了。API说明:Deprecated. Use MultipartRequestEntity in conjunction with PostMethod instead. 使用PostMethod可以实现的功能,就没有必要再弄一个MultipartPostMethod了。下面是一段最简单的示例:
MultipartRequestEntity
PostMethod
posted @ 2008-06-11 15:18 寒武纪 阅读(6907) | 评论 (8) | 编辑 收藏
posted @ 2008-06-03 17:27 寒武纪 阅读(6856) | 评论 (3) | 编辑 收藏
Eclipse3.3出来很久了,一直都使用英文版,刚好看到有网友介绍Eclipse的一个Project,叫Babel,官方的描述这样:Eclipse is a global community. It is in everyone's interest to ensure that Eclipse is available and translated in as many locales as possible. 项目的主页地址是:http://www.eclipse.org/babel/ 。按照说明从这里可以下载安装到语言包。 直接从Eclipse3.3的菜单"Help --> Software Updates --> Find and Insatll...",新建一个远程站点,URL为 http://download.eclipse.org/technology/babel/update-site/ ,然后直接在线安装。在弹出的语言选择界面上选择中文简体。如下图:
网络情况如果正常的话,安装应该不会有问题的,中间可能会弹出几次下载jar文件失败的对话框,继续retry就行。 最后重启一下,可以看到都变成中文界面的。 原来是3.3的Eclipse,怎么变成3.2呢?原因估计是语言插件的版本是3.2的导致的,所以你看到有一些地方汉化并不完全,像Error Log视图的标题,项目右键菜单,以及一些顶级菜单都没有完全汉化。 希望以后Babel项目后面更新跟得上主版本的变化,不过习惯了英文版的,其实也是差不多的。
posted @ 2008-05-30 15:44 寒武纪 阅读(13933) | 评论 (13) | 编辑 收藏
readPassword()
posted @ 2008-05-23 09:41 寒武纪 阅读(4117) | 评论 (1) | 编辑 收藏
刚好最近项目中需要用到一点加密的东西,java安全类库提供了一个java.security.MessageDigest类,此 MessageDigest 类为应用程序提供信息摘要算法的功能,如 MD5 或 SHA 算法。信息摘要是安全的单向哈希函数,它接收任意大小的数据,并输出固定长度的哈希值。有现成的当然是最好的,省事省力。 MD5的非常有实际应用性。有网友给出这样的描述,可以参照一下:http://blog.csdn.net/Daping_Zhang/archive/2005/05/28/382688.aspx 该类的getInstance(String algorithm) 方法返回一个MessageDigest的实体,加密的一系统的digest()方法和update(byte input)方法。加密后返回一个byte[],16位,我们经常见到很多开源网站的下载地址会有一个[md5]的链接,打开其实就是一小段文本内容。例如: MD5 (commons-logging-1.1.1-bin.zip) = f88520ed791673aed6cc4591bc058b55 这是Jakarta的logging组件下载时提供的MD5摘要信息,是对这个zip包进行全文加密生成的摘要,摘要码就是后面的f88520ed791673aed6cc4591bc058b55,如果你下载以后,按照MD5的算法生成自己的摘要,如果这二个摘要一样,就证明这个文件是没有被人篡改过的。 遇到的问题是Java的MessageDigest类执行后返回的byte[16]得转换成十六进制的字符串,如果直接用new String(byte[]),得到的结果将是不正确的。算法有很多网友提供了,照搬了。比较有趣的是,commons-logging提供的那个MD5居然和我自己生成的不一样(难道文件被修改过?),后来尝试了其它地方提供的MD5码,都没有问题。 有很多相关的现成代码,搜集了一下整理如下(经过验证):
getInstance(String algorithm)
digest()
update(byte input)方法。加密后返回一个byte[],16位,我们经常见到很多开源网站的下载地址会有一个[md5]的链接,打开其实就是一小段文本内容。例如:
posted @ 2008-05-08 15:02 寒武纪 阅读(6530) | 评论 (2) | 编辑 收藏
一般而言,我们平常接触的大多数项目都应该是单纯使用B/S或是C/S,除非在特殊场合,否则比较少混合使用B/S,C/S架构。首先说一下对这二种架构特点的一些个人理解。B/S应该是目前很多项目都应用的架构,浏览器的方式使得用户的使用十分方便,用户可以何时何地通过Internet访问URL而进行相应的工作,升级维护也能比较集中,缺点就是浏览器的表现能力受限以及常常受非议的安全性问题,如果软件的应用范围区域不集中,而且用户经常变换地点进行访问,那么这种架构是非常适合的。C/S架构的C端有非常强的处理能力,所以在交互表现和安全方面可以做得比浏览器强,但是缺点也是非常明显的,安装部署、升级维护、版本兼容都是比较头大的事情,一般的适用场景是集中的办公室场所,用户使用范围相对稳定,以及一些对业务处理非常复杂的场合,为了降低服务器的负荷,同样需要C模式的支持。 以前接触过的电信领域,就有过混合架构的软件。但是都是非常宠大,一直都对其实现方案比较感兴趣,但是都没有机会进一步了解。最近搜索了一下相关的资料,总结一下混合应用的一些想法(只针对Java方向)。 ①混合架构的问题集中点。服务端共享,客户端采用不同的表现方式,共享的应该是业务层接口,持久层应该是屏蔽的。应用层的消息传递就是整个应用的关键所在,虽然像Jakarta提供的httpClient这种模仿浏览器的组件,但是毕竟是模仿,在很多方面的功能还是缺失的。 ②最传统的方式是采用EJB做为服务,这个宠然大物容易让人害怕,不过在分布式的系统中它还是有应用优势的,像电信和金融这种行业应用还是比较广的,而且现成的中间件和应用服务器商都比较多,像Oracel、BEA、IBM、Sun都有成熟的应用产品,当然开发的成本和人力投入也是恐龙级数据的。 ③有网友说在C端直接访问数据库,B/S结构不变,也就是通过数据库进行共享。这种方式是不可取的,二个缺点:把服务器的业务逻辑搬到了C端上,严格上讲是不安全的,升级维护也非常麻烦;并发控制的压力都在数据库上。 ④采用RMI,这个老古董相信应该很多人都不使用了,因为它的使用要一连串的手续,比如服务接口定义必须实现Remote接口,服务Server在实现时必须继承UnicastRemoteobject类,必须使用rmic指令产生stub和skeleton等,设置上繁杂。 ⑤Spring 远程服务。这个应该说是比较可取的,大家都比较喜欢轻量级的东西。就如第一点所说的,通过远程服务,我们可以在客户直接调用服务端的服务接口,就像本地调用一样,Spring对远程服务提供了好几种实现方案。 ⑥WebService。适合异构环境,但是WSDL的这种方式相对来说会比较耗费资料,因为标准定义除了业务内容外,还有许多另外的说明内容。 Spring远程服务实现方案介绍: ⑴Spring + RMI。Spring把传统的RMI方式的繁杂设置去掉,只要配置Bean文件就和定义服务接口可以。RMI的服务启动和管理都交给Spring来处理。RMI访问的缺点就是对防火墙的穿透力比较差。 ⑵Spring + Caucho的Hessian、Burlap。Hessian使用Http将对象以中性的二进制消息进行传送,而不像RMI使用Java的序列化格式(这种序列化是专制的,不是Sun提供的序列化机制),由于是二进制消息,所以不受限于某种实现语言,传输时所需要的带宽较小是其优点。Burlap是以XML文件格式传送对象,XML文件有较高可读性,应用程序只要能解释XML就能接收消息,当然也不限于某种语言,但是组装XML和解释XML都需要消耗资源,当传输大数据时性能应该存在问题。 ⑶Spring + Http Invoker。由于Hessian的序列化机制不是正统的Java序列化机制,所以当遇到传输复杂的业务模型时,就会存在各种问题,为此,Spring又提供了Http Invoker,同样是使用Http传送对象,而且是使用Java的序列化机制。相比RMI,Http对防火墙的穿透力要强。 后来尝试了最后的这种Http Invoker方式,是在Spring2.0版本下尝试的,开发非常简单,网上也有大量的资料介绍。应该说从这里入口可以做一些尝试。目前遇到的一个项目就需要混合架构,B/S采用Spring2 + Struts2 + Hiberntae3,浏览器只提供一些查询功能和数据展现,C端采用Eclipse的RCP平台,共享服务器的业务接口,调用就采用Http Invoker远程服务,复杂的业务功能都集中在C端上。
posted @ 2008-05-06 12:43 寒武纪 阅读(13723) | 评论 (25) | 编辑 收藏
1. 驱动器 如果安装了DB2客户端,则到安装目录下的sqllib/java目录下面找到二个jar包:db2jcc.jar和db2jcc_license_cu.jar,把它们添加到你的classpath中去,有的人说用db2java.zip也可以连接,但是我尝试了,总是无法连接。如果没有这二个jar包,到网上搜索一下,有些网友已经上传了。驱动器名称是:com.ibm.db2.jcc.DB2Driver。 2. URL写法 连接的URL正确写法是:jdbc:db2://[IP地址]:[端口]/[数据库名],例如:jdbc:db2://99.1.99.114:50000/dwsdemo,要确保URL正确,你可以先在DB2的命令行测试一下是否能正确连接上。 有个不太明白的地方就是为什么IBM提供的驱动器包命名有的地方是大写,比如:COM.ibm.db2.app
posted @ 2008-04-17 11:14 寒武纪 阅读(7263) | 评论 (8) | 编辑 收藏
Powered by: BlogJava Copyright © 寒武纪