finly

工作、读书、运动

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

2006年11月21日 #

安装版
进入%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)编辑 收藏

昨天真郁闷....部门老大给我提出了一种难于想象的需求,通常我们从网站上下载文件都有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)编辑 收藏

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)编辑 收藏