finly

工作、读书、运动

  BlogJava :: 首页 :: 新随笔 :: 联系 :: 聚合  :: 管理 ::
  5 随笔 :: 0 文章 :: 3 评论 :: 0 Trackbacks

2007年4月5日 #

安装版
进入%TOMCAT_HOME%/BIN执行
tomcat5.exe //US//Tomcat5 --JvmMs=128 --JvmMx=512

普通版
设置CATALINA_OPTS -Xmx512m
TOMCAT_OPTS -Xmx512m
posted @ 2007-04-05 19:33 finly 阅读(890) | 评论 (0)编辑 收藏

2006年12月1日 #

昨天真郁闷....部门老大给我提出了一种难于想象的需求,通常我们从网站上下载文件都有IE弹出框。
而他对我的要求是:不要弹出IE对话框,点按钮后直接把文件保存到本地。
当时即时晕倒,都不知道是什么客户来的,居然有这种需求。-_-!
综合考虑后,我决定用applet在客户端运行一段代码。在客户端里用apache的开源项目httpClient模拟http请求(如输入用户名密码登陆,浏览某个连接下载等)。由于要涉及到读写客户端的磁盘文件,所以在客户端运行程序的时候必定会抛出securityException。当时在这里折腾了很久,老是把注意力里集中在修改客户端的安全策略文件上。
事实上,有一种更好的办法,那就是对applet程序所依赖的jar包进行数字签名。
步骤如下:
打开命令行窗口,定位到c:/目录下。
1keytool -genkey -keystore pepper.store -alias pepper

  这个命令用来产生一个密匙库,执行完毕后应该在c:/中产生一个pepper.store的文件,这里的pepper是我自己的名字,你可以对它进行修改。另外在执行命令的时候还有提示你输入密匙库的密码,这里你一定要记住,否则后面要用的时候无法输入。

2
keytool -export -keystore pepper.store -alias pepper -file pepper.cert
  这个命令用来产生签名时所要用的证书,同样这里的pepper也可以换成你自己需要的名字。这个命令执行完后在c:/中产生一个pepper.cert的文件。

3
jarsigner -keystore pepper.store myapplet.jar pepper
  这个命令用上面产生的证书将我们的jar文件进行了签名。(myapplet.jar是我们项目中所依赖的jar包)

执行完以上三步之后,就已经完全可以了。而不需要像网上某些文章说的那样还要修改客户端的安全策略文件。
最后在页面上把applet标记加上
<applet code="Tasdf.class" CODEBASE = "." archive="myapplet.jar" width=30 height=15>
</applet>
posted @ 2006-12-01 10:15 finly 阅读(1058) | 评论 (2)编辑 收藏

2006年11月21日 #

Mule是一个基于ESB架构的消息平台,Mule 的核心是一个基于SEDA(Staged Event Driven Architecture)的服务容器,该容器管理被称为通用消息对象(Universal Message Objects /UMO)的服务对象,而这些对象都是POJO。所有UMO和其他应用之间的通信都是通过消息端点(message endpoint)来进行的。这些端点为众多独立的技术,比如Jms, Smtp, Jdbc, Tcp, Http, Xmpp, file等等,提供了简单和一致的接口。

Mule应用程序通常是通过网络由许多Mule实例组成(实际上一个应用里面只能有一个mule实例,因为实例启动之后必须占用一个tcp端口),每一个实例是由具有一个或多个UMO组件的轻量级容器所构成,每一个UMO组件都包含有一个或多个能收发事件的端点。
以上描述可以用以下图例来说明:

实际上Mule是用一个配置文件来描述以上信息的,一个典型的配置文件如下:
< mule-descriptor  name ="Error Manager"  implementation ="errorManager" >
            
< inbound-router >
                
< endpoint  address ="file://./test-data/in"
                          transformers
="XMLToExceptionBean ExceptionBeanToErrorMessage"   />
            
</ inbound-router >

            
< outbound-router >
                
< catch-all-strategy  className ="org.mule.routing.LoggingCatchAllStrategy" />

                
< router  className ="org.mule.routing.outbound.FilteringOutboundRouter"
                        transformer
="ErrorMessageToException" >

                    
< endpoint  address ="file://./test-data/exceptions"
                              transformers
="ErrorMessageToExceptionBean ExceptionBeanToXML" >

                        
< properties >< property  name ="outputPattern"  value ="Exception-${UUID}.xml"   /></ properties >
                    
</ endpoint >
                    
< filter  className ="org.mule.routing.filters.PayloadTypeFilter"
                            expectedType
="org.mule.MuleException"   />
                
</ router >

                
< router  className ="org.mule.routing.outbound.FilteringOutboundRouter"
                        transformer
="ErrorMessageToException" >

                    
< endpoint  address ="smtp://?address=${email.toAddress}"
                              transformers
="ErrorMessageToExceptionBean ExceptionBeanToXML StringToEmailMessage" >
                        
< properties >
                            
< property  name ="fromAddress"  value ="${email.fromAddress}"   />
                            
< property  name ="subject"  value ="${email.subject}"   />
                        
</ properties >
                       
</ endpoint >

                    
< filter  className ="org.mule.routing.filters.PayloadTypeFilter"
                                        expectedType
="org.mule.umo.lifecycle.FatalException" />
                
</ router >

                
< router  className ="org.mule.routing.outbound.FilteringOutboundRouter"
                        transformer
="ErrorMessageToException" >

                    
< endpoint  address ="jms://exception.queue"
                              transformers
="ErrorMessageToExceptionBean ExceptionBeanToXML ObjectToJMSMessage" />

                    
< filter  className ="org.mule.routing.filters.PayloadTypeFilter"
                            expectedType
="org.mule.samples.errorhandler.exceptions.BusinessException" />
                
</ router >
            
</ outbound-router >

            
< interceptor  name ="default" />
        
</ mule-descriptor >

        
< mule-descriptor  name ="Business Error Manager"  implementation ="businessErrorManager" >
            
< inbound-router >
                
< endpoint  address ="jms://exception.queue"
                          transformers
="JMSMessageToObject XMLToExceptionBean ExceptionBeanToErrorMessage"   />
            
</ inbound-router >
        
</ mule-descriptor >

以上是摘取官方网站上提供的一个叫errorhandler的例子里配置文件的一部分,mule-descriptor节点是用来描述一个UMO组件的,在这个配置文件里提供了两个UMO组件,在每一个UMO组件里有一个或多个端点(endpint)来接收或发送事件。也许你会觉得这个配置文件过于复杂,以至于无法理解。没关系,在以后的文章里将会进一步解释。

在Mule容器里面为UMO组件提供了一系列的服务,例如事务管理,事件转化,路由,事件审核和管理等,Mule将对象分开管理意味着可以将UMO组件交给当前流行的IOC容器(比如spring)去构造。虽然Mule声称与spring可以完美结合,然而在我通过一系列实验中发现,Mule与spring结合还是有许多bug的,希望Mule能在下一个版本的更新中解决。

有人可能会说,Mule只是一个Jms实现,然而Mule不仅仅是一个Jms服务器,而且可以通过配置来使用几乎所有的Jms服务,比如说ActiveMq、JBoss MQ、Joram OpenJms、Oracle AQ、SeeBeyond、Spirit Wave、 UberMQ、Weblogic Jms 和 IBM WebSphere MQ。与Spring一样,Mule不会重复造轮子,而是会使用在当今开源社区里成熟的产品。比如在webservice上,Mule支持glue、axis和xfire。对于不同类型的连接(比如说jms和webservice),Mule提供了一致的服务来管理事件的流向、联系、事务、安全和审核。

在使用Mule之前,很有必要理解一些核心的概念和专业术语。以下图表简单的描述了一个Mule服务器的组成


下面将对图表上的每一个概念进行解释。

The Mule Manager
Mule管理器是Mule实例的中心,它的主要作用是管理Mule实例中各种各样的对象,例如:连接器、端点、转换器。这些对象被用来控制在组件中消息的流转以及向组件管理的模型提供服务。

The Model
模型是在你组件中被管理和执行的容器,它控制着消息在你组件里的收和发。默认的Mule模型是基于SEDA的,这意味着它使用了一种高效的基于消息队列的模型来达到最佳的性能。

UMO Components
UMO也就是Universal Message Object(通用消息对象),这是一种能从任何地方收发时间的对象。UMO对象可以是你的业务对象,在消息进来的时候执行你的业务逻辑,这是一种标准的JavaBean,没有任何特殊的Mule代码在你的组件(UMO对象)里面,Mule是如何在你的对象里进行消息收发的路由和转换取决于你在组件里的配置。

Endpoints
端点是Mule通信能力的基本原理。一个端点定义在两个或者更多组件之间的通信渠道。可以通过配置消息过滤器、安全拦截器和事务处理来控制一个端点是如何将消息收与发的。

External Applications
外部应用可以是任何的遗留系统。基本上,任何应用只要有一种数据传输方式能通过Mule的端点进行通信,UMO组件是不关心是哪个应用提供的数据、应用部署的地点以及是用何种传输协议的。

posted @ 2006-11-21 10:12 finly 阅读(2798) | 评论 (1)编辑 收藏

2006年11月14日 #

时间转眼即逝,不知不觉已经踏入社会一年了...这一年时间里感觉自己长大了许多,

关于IT企业
中国的IT企业,尤其是民营企业的许多不规范这在读书时代就有所了解的,但到了工作之后才深刻的体会到。项目只有少得可怜的文档,许多代码编写都不规范。过分追求功能点的完成,而忽视了项目的可扩展性,这导致当客户有新需求到来的时候,只会对客户进行抱怨,说这个需求要改原来的很多内容。而没有从自己的设计思路上找原因。我们是IT提供者,我们要充分的挖掘客户所需要但却暂时没法提出的需求。不过,后来想想,任何一个成长中的企业都必须经过这么一个漫长而曲折的过程。所以出现这些问题都是无可厚非的,关键是从这些问题上积累经验。

关于工作
IT人真是累,记得刚来公司的一段时间里,由于我在学校已有一定的JavaEE方面的实践使我有幸参与了一个大型项目的开发工作,而由于项目比较紧的原因,整个项目组每天晚上都在加班。星期六星期天往往只有一天的休息时间,虽然辛苦,但那时候的日子过得很充实。以至于在后来不用加班的日子里,反而觉得莫明的空虚,不知道这是自己作为一个IT人感到高兴还是应该感到悲哀。(我想高兴的只有公司的老板们吧,

关于学习
搞开发的必须不断学习,这是众所周知的。而且必须在长时间的压力下工作,因为技术的发展是日新月异的,往往就是这个原因让许多IT从业者却步。记得以前有个同事跟我说的,“学海无崖,回头是岸”。当时听了觉得好笑,现在回想起,并不无道理啊。其他行业的下了班之后都可以彻底的放松,公务员就更不用说了,不要说是下班之后,就算是上班时间也是上上网,看下报纸这样打发时间。而我们呢?经常都必须加班加点的工作,就算下班之后,也得看书学习,因为如果不看总觉得心里不塌实。。以前读书时代从来没有象现在这样这么主动学习的,总而言之作为一个IT从业者,一个字,累!

关于生活
虽然平时工作繁忙,但是我觉得生活过得还是挺充实的,因为我对软件开发感兴趣,也就是这个兴趣推动我不断的学习,以及寻求工作中的乐趣。不知道这个兴趣能把我维持多久,因为人总得有其他事情啊,比如感情,家庭等。。说到感情,曾经情感不断的我在这一年时间里感情世界近乎空白,把所有的时间都献给了工作和学习了。悲哀!希望在未来的一年里有所改观吧。

总结
今天是11月14号,去年的这个日子,正好走出校门来到这家公司实习,没想到一实习就一直呆在这家公司里工作了,以至于后来的毕业论文也是在公司里完成的,连回去学校答辩的时间都没有。为了能在今天把这篇东西发表了,写得太草率。

近期在关注一个开源的企业级ESB系统总线Mule,因为在项目中需要用的。在以后的文章里会谈谈这方面的学习体会。
posted @ 2006-11-14 23:01 finly 阅读(292) | 评论 (0)编辑 收藏

2006年10月31日 #

blog两个月前就申请下来了,直到今天才有第一篇文章,实在惭愧.
选择在blogjava建blog,除了自己是名javaer之外,主要原因是因为在这里潜水半年多的时间里学到了不少东西,所以决定以后要多做点奉献...写写文章啊什么的,
读完四年大学,现在回想起来,好象没什么另自己特别印象深刻的东西...难道是没有一点值得回忆的吗?我觉得不是,很多值得怀念的事情都忘得差不多了啊!
为了使自己不白过,若干年后可以找回曾经的回忆..所以我决定以后要常上来写点东西了

马上就要到工作一年的时间了,我决定在下篇文章里写写自己这一年来的各方面的总结.

posted @ 2006-10-31 21:48 finly 阅读(196) | 评论 (0)编辑 收藏

仅列出标题