﻿<?xml version="1.0" encoding="utf-8" standalone="yes"?><rss version="2.0" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:trackback="http://madskills.com/public/xml/rss/module/trackback/" xmlns:wfw="http://wellformedweb.org/CommentAPI/" xmlns:slash="http://purl.org/rss/1.0/modules/slash/"><channel><title>BlogJava-Rendezvous with Rama-文章分类-Java</title><link>http://www.blogjava.net/wguzgg/category/11800.html</link><description>Rendezvous with Rama</description><language>zh-cn</language><lastBuildDate>Sat, 03 Mar 2007 08:19:41 GMT</lastBuildDate><pubDate>Sat, 03 Mar 2007 08:19:41 GMT</pubDate><ttl>60</ttl><item><title>rmi和httpInvoker</title><link>http://www.blogjava.net/wguzgg/articles/49939.html</link><dc:creator>Rendezvous with Rama</dc:creator><author>Rendezvous with Rama</author><pubDate>Fri, 02 Jun 2006 07:07:00 GMT</pubDate><guid>http://www.blogjava.net/wguzgg/articles/49939.html</guid><wfw:comment>http://www.blogjava.net/wguzgg/comments/49939.html</wfw:comment><comments>http://www.blogjava.net/wguzgg/articles/49939.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/wguzgg/comments/commentRss/49939.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/wguzgg/services/trackbacks/49939.html</trackback:ping><description><![CDATA[对于富客户端来说，和服务器端的通讯有很多种方式，不过我一般用的就是rmi或者httpInvoker。<br />spring为多种远程调用都提供了包装：<br />一。对于RMI来说<br /> 1、服务器端：
<div style="BORDER-RIGHT: #cccccc 1px solid; PADDING-RIGHT: 5px; BORDER-TOP: #cccccc 1px solid; PADDING-LEFT: 4px; FONT-SIZE: 13px; PADDING-BOTTOM: 4px; BORDER-LEFT: #cccccc 1px solid; WIDTH: 98%; WORD-BREAK: break-all; PADDING-TOP: 4px; BORDER-BOTTOM: #cccccc 1px solid; BACKGROUND-COLOR: #eeeeee"><img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top" /><span style="COLOR: #0000ff">&lt;</span><span style="COLOR: #800000">bean </span><span style="COLOR: #ff0000">class</span><span style="COLOR: #0000ff">="org.springframework.remoting.rmi.RmiServiceExporter"</span><span style="COLOR: #0000ff">&gt;</span><span style="COLOR: #000000"><br /><img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top" />  </span><span style="COLOR: #0000ff">&lt;</span><span style="COLOR: #800000">property </span><span style="COLOR: #ff0000">name</span><span style="COLOR: #0000ff">="serviceName"</span><span style="COLOR: #0000ff">&gt;&lt;</span><span style="COLOR: #800000">value</span><span style="COLOR: #0000ff">&gt;</span><span style="COLOR: #000000">ExampleService</span><span style="COLOR: #0000ff">&lt;/</span><span style="COLOR: #800000">value</span><span style="COLOR: #0000ff">&gt;&lt;/</span><span style="COLOR: #800000">property</span><span style="COLOR: #0000ff">&gt;</span><span style="COLOR: #000000"><br /><img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top" />  </span><span style="COLOR: #0000ff">&lt;</span><span style="COLOR: #800000">property </span><span style="COLOR: #ff0000">name</span><span style="COLOR: #0000ff">="service"</span><span style="COLOR: #0000ff">&gt;&lt;</span><span style="COLOR: #800000">ref </span><span style="COLOR: #ff0000">bean</span><span style="COLOR: #0000ff">="exampleManager"</span><span style="COLOR: #0000ff">/&gt;&lt;/</span><span style="COLOR: #800000">property</span><span style="COLOR: #0000ff">&gt;</span><span style="COLOR: #000000"><br /><img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top" />  </span><span style="COLOR: #0000ff">&lt;</span><span style="COLOR: #800000">property </span><span style="COLOR: #ff0000">name</span><span style="COLOR: #0000ff">="serviceInterface"</span><span style="COLOR: #0000ff">&gt;&lt;</span><span style="COLOR: #800000">value</span><span style="COLOR: #0000ff">&gt;</span><span style="COLOR: #000000">com.example.server.service.manager.base.IExampleManager</span><span style="COLOR: #0000ff">&lt;/</span><span style="COLOR: #800000">value</span><span style="COLOR: #0000ff">&gt;&lt;/</span><span style="COLOR: #800000">property</span><span style="COLOR: #0000ff">&gt;</span><span style="COLOR: #000000"><br /><img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top" />  </span><span style="COLOR: #0000ff">&lt;</span><span style="COLOR: #800000">property </span><span style="COLOR: #ff0000">name</span><span style="COLOR: #0000ff">="registryPort"</span><span style="COLOR: #0000ff">&gt;&lt;</span><span style="COLOR: #800000">value</span><span style="COLOR: #0000ff">&gt;</span><span style="COLOR: #000000">777</span><span style="COLOR: #0000ff">&lt;/</span><span style="COLOR: #800000">value</span><span style="COLOR: #0000ff">&gt;&lt;/</span><span style="COLOR: #800000">property</span><span style="COLOR: #0000ff">&gt;</span><span style="COLOR: #000000"><br /><img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top" /> </span><span style="COLOR: #0000ff">&lt;/</span><span style="COLOR: #800000">bean</span><span style="COLOR: #0000ff">&gt;</span><span style="COLOR: #000000"><br /><img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top" /></span></div><br />这段spring的配置文件就定义了服务器端的一个bean，可以暴露给客户端通过RMI方式来访问了。<br />examleMaanger这个bean在实现时，完全不需要知道它自己有一天还会被通过rmi方式被远程访问。<br />2、客户端：<br /><div style="BORDER-RIGHT: #cccccc 1px solid; PADDING-RIGHT: 5px; BORDER-TOP: #cccccc 1px solid; PADDING-LEFT: 4px; FONT-SIZE: 13px; PADDING-BOTTOM: 4px; BORDER-LEFT: #cccccc 1px solid; WIDTH: 98%; WORD-BREAK: break-all; PADDING-TOP: 4px; BORDER-BOTTOM: #cccccc 1px solid; BACKGROUND-COLOR: #eeeeee"><img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top" /><span style="COLOR: #0000ff">&lt;</span><span style="COLOR: #800000">bean </span><span style="COLOR: #ff0000">id</span><span style="COLOR: #0000ff">="cityService"</span><span style="COLOR: #ff0000"> class</span><span style="COLOR: #0000ff">="org.springframework.remoting.rmi.RmiProxyFactoryBean"</span><span style="COLOR: #0000ff">&gt;</span><span style="COLOR: #000000"><br /><img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top" />        </span><span style="COLOR: #0000ff">&lt;</span><span style="COLOR: #800000">property </span><span style="COLOR: #ff0000">name</span><span style="COLOR: #0000ff">="serviceUrl"</span><span style="COLOR: #0000ff">&gt;&lt;</span><span style="COLOR: #800000">value</span><span style="COLOR: #0000ff">&gt;</span><span style="COLOR: #000000">rmi://localhost:777/CityService</span><span style="COLOR: #0000ff">&lt;/</span><span style="COLOR: #800000">value</span><span style="COLOR: #0000ff">&gt;&lt;/</span><span style="COLOR: #800000">property</span><span style="COLOR: #0000ff">&gt;</span><span style="COLOR: #000000"><br /><img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top" />        </span><span style="COLOR: #0000ff">&lt;</span><span style="COLOR: #800000">property </span><span style="COLOR: #ff0000">name</span><span style="COLOR: #0000ff">="serviceInterface"</span><span style="COLOR: #0000ff">&gt;&lt;</span><span style="COLOR: #800000">value</span><span style="COLOR: #0000ff">&gt;</span><span style="COLOR: #000000">com.example.server.service.manager.base.IExampleManager</span><span style="COLOR: #0000ff">&lt;/</span><span style="COLOR: #800000">value</span><span style="COLOR: #0000ff">&gt;&lt;/</span><span style="COLOR: #800000">property</span><span style="COLOR: #0000ff">&gt;</span><span style="COLOR: #000000"><br /><img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top" />        </span><span style="COLOR: #0000ff">&lt;</span><span style="COLOR: #800000">property </span><span style="COLOR: #ff0000">name</span><span style="COLOR: #0000ff">="lookupStubOnStartup"</span><span style="COLOR: #0000ff">&gt;&lt;</span><span style="COLOR: #800000">value</span><span style="COLOR: #0000ff">&gt;</span><span style="COLOR: #000000">true</span><span style="COLOR: #0000ff">&lt;/</span><span style="COLOR: #800000">value</span><span style="COLOR: #0000ff">&gt;&lt;/</span><span style="COLOR: #800000">property</span><span style="COLOR: #0000ff">&gt;</span><span style="COLOR: #000000"><br /><img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top" />        </span><span style="COLOR: #0000ff">&lt;</span><span style="COLOR: #800000">property </span><span style="COLOR: #ff0000">name</span><span style="COLOR: #0000ff">="cacheStub"</span><span style="COLOR: #0000ff">&gt;&lt;</span><span style="COLOR: #800000">value</span><span style="COLOR: #0000ff">&gt;</span><span style="COLOR: #000000">true</span><span style="COLOR: #0000ff">&lt;/</span><span style="COLOR: #800000">value</span><span style="COLOR: #0000ff">&gt;&lt;/</span><span style="COLOR: #800000">property</span><span style="COLOR: #0000ff">&gt;</span><span style="COLOR: #000000"><br /><img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top" />    </span><span style="COLOR: #0000ff">&lt;/</span><span style="COLOR: #800000">bean</span><span style="COLOR: #0000ff">&gt;</span></div>这段spring的配置文件定义了客户端的一个bean，这样就可在客户端使用exampleManager了，就如同在本地使用一样，完全没有什么不同。<br />二。对于httpInvoker来说，其配置比rmi方式要麻烦一些，而且据说其效率也要比rmi方式差，不过这一点我到没有亲身证实过，只是听说而已。但是httpInvoker有一个优点却足以抵消其所有的缺点，那就是它是通过web的端口来访问的。这样，只要能够浏览页面，就能够进行远程调用，避免了rmi方式有时无法通过防火墙的问题。<br />1、服务器端：<br />httpInvoker需要web容器的支持，因此需要将服务器端程序部署到web容器内。<br />在web.xml文件中<br /><div style="BORDER-RIGHT: #cccccc 1px solid; PADDING-RIGHT: 5px; BORDER-TOP: #cccccc 1px solid; PADDING-LEFT: 4px; FONT-SIZE: 13px; PADDING-BOTTOM: 4px; BORDER-LEFT: #cccccc 1px solid; WIDTH: 98%; WORD-BREAK: break-all; PADDING-TOP: 4px; BORDER-BOTTOM: #cccccc 1px solid; BACKGROUND-COLOR: #eeeeee"><img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top" /><span style="COLOR: #000000">    </span><span style="COLOR: #0000ff">&lt;</span><span style="COLOR: #800000">listener</span><span style="COLOR: #0000ff">&gt;</span><span style="COLOR: #000000"><br /><img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top" />        </span><span style="COLOR: #0000ff">&lt;</span><span style="COLOR: #800000">listener-class</span><span style="COLOR: #0000ff">&gt;</span><span style="COLOR: #000000">org.springframework.web.context.ContextLoaderListener</span><span style="COLOR: #0000ff">&lt;/</span><span style="COLOR: #800000">listener-class</span><span style="COLOR: #0000ff">&gt;</span><span style="COLOR: #000000"><br /><img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top" />    </span><span style="COLOR: #0000ff">&lt;/</span><span style="COLOR: #800000">listener</span><span style="COLOR: #0000ff">&gt;</span><span style="COLOR: #000000"><br /><img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top" /><br /><img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top" />    </span><span style="COLOR: #0000ff">&lt;</span><span style="COLOR: #800000">servlet</span><span style="COLOR: #0000ff">&gt;</span><span style="COLOR: #000000"><br /><img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top" />        </span><span style="COLOR: #0000ff">&lt;</span><span style="COLOR: #800000">servlet-name</span><span style="COLOR: #0000ff">&gt;</span><span style="COLOR: #000000">remote</span><span style="COLOR: #0000ff">&lt;/</span><span style="COLOR: #800000">servlet-name</span><span style="COLOR: #0000ff">&gt;</span><span style="COLOR: #000000"><br /><img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top" />        </span><span style="COLOR: #0000ff">&lt;</span><span style="COLOR: #800000">servlet-class</span><span style="COLOR: #0000ff">&gt;</span><span style="COLOR: #000000">org.springframework.web.servlet.DispatcherServlet</span><span style="COLOR: #0000ff">&lt;/</span><span style="COLOR: #800000">servlet-class</span><span style="COLOR: #0000ff">&gt;</span><span style="COLOR: #000000"><br /><img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top" />        </span><span style="COLOR: #0000ff">&lt;</span><span style="COLOR: #800000">load-on-startup</span><span style="COLOR: #0000ff">&gt;</span><span style="COLOR: #000000">1</span><span style="COLOR: #0000ff">&lt;/</span><span style="COLOR: #800000">load-on-startup</span><span style="COLOR: #0000ff">&gt;</span><span style="COLOR: #000000"><br /><img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top" />    </span><span style="COLOR: #0000ff">&lt;/</span><span style="COLOR: #800000">servlet</span><span style="COLOR: #0000ff">&gt;</span><span style="COLOR: #000000"><br /><img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top" />    </span><span style="COLOR: #0000ff">&lt;</span><span style="COLOR: #800000">servlet-mapping</span><span style="COLOR: #0000ff">&gt;</span><span style="COLOR: #000000"><br /><img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top" />        </span><span style="COLOR: #0000ff">&lt;</span><span style="COLOR: #800000">servlet-name</span><span style="COLOR: #0000ff">&gt;</span><span style="COLOR: #000000">remote</span><span style="COLOR: #0000ff">&lt;/</span><span style="COLOR: #800000">servlet-name</span><span style="COLOR: #0000ff">&gt;</span><span style="COLOR: #000000"><br /><img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top" />        </span><span style="COLOR: #0000ff">&lt;</span><span style="COLOR: #800000">url-pattern</span><span style="COLOR: #0000ff">&gt;</span><span style="COLOR: #000000">/remote/*</span><span style="COLOR: #0000ff">&lt;/</span><span style="COLOR: #800000">url-pattern</span><span style="COLOR: #0000ff">&gt;</span><span style="COLOR: #000000"><br /><img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top" />    </span><span style="COLOR: #0000ff">&lt;/</span><span style="COLOR: #800000">servlet-mapping</span><span style="COLOR: #0000ff">&gt;</span><span style="COLOR: #000000"><br /><img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top" /></span></div>注意第一行定义的listener一定要有，否则下面提到的remote-servlet.xml中要引用的bean就会无法找到。<br />我们定义了一个servlet，名字叫remote，因此在WEB-INF目录下我们建一个名字为remote-servlet.xml的文件，内容为<br /><div style="BORDER-RIGHT: #cccccc 1px solid; PADDING-RIGHT: 5px; BORDER-TOP: #cccccc 1px solid; PADDING-LEFT: 4px; FONT-SIZE: 13px; PADDING-BOTTOM: 4px; BORDER-LEFT: #cccccc 1px solid; WIDTH: 98%; WORD-BREAK: break-all; PADDING-TOP: 4px; BORDER-BOTTOM: #cccccc 1px solid; BACKGROUND-COLOR: #eeeeee"><img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top" /><span style="COLOR: #0000ff">&lt;?</span><span style="COLOR: #ff00ff">xml version="1.0" encoding="UTF-8"</span><span style="COLOR: #0000ff">?&gt;</span><span style="COLOR: #000000"><br /><img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top" /></span><span style="COLOR: #0000ff">&lt;!</span><span style="COLOR: #ff00ff">DOCTYPE beans PUBLIC "-//SPRING//DTD BEAN//EN" <br /><img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top" />    "http://www.springframework.org/dtd/spring-beans.dtd"</span><span style="COLOR: #0000ff">&gt;</span><span style="COLOR: #000000"><br /><img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top" /></span><span style="COLOR: #0000ff">&lt;</span><span style="COLOR: #800000">beans</span><span style="COLOR: #0000ff">&gt;</span><span style="COLOR: #000000"><br /><img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top" /><br /><img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top" />    </span><span style="COLOR: #0000ff">&lt;</span><span style="COLOR: #800000">bean </span><span style="COLOR: #ff0000">name</span><span style="COLOR: #0000ff">="/exampleService"</span><span style="COLOR: #ff0000"> class</span><span style="COLOR: #0000ff">="org.springframework.remoting.httpinvoker.HttpInvokerServiceExporter"</span><span style="COLOR: #0000ff">&gt;</span><span style="COLOR: #000000"><br /><img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top" />        </span><span style="COLOR: #0000ff">&lt;</span><span style="COLOR: #800000">property </span><span style="COLOR: #ff0000">name</span><span style="COLOR: #0000ff">="service"</span><span style="COLOR: #0000ff">&gt;&lt;</span><span style="COLOR: #800000">ref </span><span style="COLOR: #ff0000">bean</span><span style="COLOR: #0000ff">="exampleManager"</span><span style="COLOR: #0000ff">/&gt;&lt;/</span><span style="COLOR: #800000">property</span><span style="COLOR: #0000ff">&gt;</span><span style="COLOR: #000000"><br /><img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top" />        </span><span style="COLOR: #0000ff">&lt;</span><span style="COLOR: #800000">property </span><span style="COLOR: #ff0000">name</span><span style="COLOR: #0000ff">="serviceInterface"</span><span style="COLOR: #0000ff">&gt;</span><span style="COLOR: #000000"><br /><img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top" />            </span><span style="COLOR: #0000ff">&lt;</span><span style="COLOR: #800000">value</span><span style="COLOR: #0000ff">&gt;</span><span style="COLOR: #000000">com.example.server.service.manager.IExampleManager</span><span style="COLOR: #0000ff">&lt;/</span><span style="COLOR: #800000">value</span><span style="COLOR: #0000ff">&gt;</span><span style="COLOR: #000000"><br /><img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top" />        </span><span style="COLOR: #0000ff">&lt;/</span><span style="COLOR: #800000">property</span><span style="COLOR: #0000ff">&gt;</span><span style="COLOR: #000000"><br /><img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top" />    </span><span style="COLOR: #0000ff">&lt;/</span><span style="COLOR: #800000">bean</span><span style="COLOR: #0000ff">&gt;</span><span style="COLOR: #000000"><br /><img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top" /></span><span style="COLOR: #0000ff">&lt;/</span><span style="COLOR: #800000">beans</span><span style="COLOR: #0000ff">&gt;</span></div>这样服务器端的配置就完成了。exampleManager这个bean被暴露给了客户端 <br />2、客户端：<br /><div style="BORDER-RIGHT: #cccccc 1px solid; PADDING-RIGHT: 5px; BORDER-TOP: #cccccc 1px solid; PADDING-LEFT: 4px; FONT-SIZE: 13px; PADDING-BOTTOM: 4px; BORDER-LEFT: #cccccc 1px solid; WIDTH: 98%; WORD-BREAK: break-all; PADDING-TOP: 4px; BORDER-BOTTOM: #cccccc 1px solid; BACKGROUND-COLOR: #eeeeee"><img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top" /><span style="COLOR: #0000ff">&lt;</span><span style="COLOR: #800000">bean </span><span style="COLOR: #ff0000">id</span><span style="COLOR: #0000ff">="exampleService"</span><span style="COLOR: #ff0000"> class</span><span style="COLOR: #0000ff">="org.springframework.remoting.httpinvoker.HttpInvokerProxyFactoryBean"</span><span style="COLOR: #0000ff">&gt;</span><span style="COLOR: #000000"><br /><img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top" />        </span><span style="COLOR: #0000ff">&lt;</span><span style="COLOR: #800000">property </span><span style="COLOR: #ff0000">name</span><span style="COLOR: #0000ff">="serviceUrl"</span><span style="COLOR: #0000ff">&gt;</span><span style="COLOR: #000000"><br /><img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top" />            </span><span style="COLOR: #0000ff">&lt;</span><span style="COLOR: #800000">value</span><span style="COLOR: #0000ff">&gt;</span><span style="COLOR: #000000">http://localhost:80/remote/exampleService</span><span style="COLOR: #0000ff">&lt;/</span><span style="COLOR: #800000">value</span><span style="COLOR: #0000ff">&gt;</span><span style="COLOR: #000000"><br /><img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top" />        </span><span style="COLOR: #0000ff">&lt;/</span><span style="COLOR: #800000">property</span><span style="COLOR: #0000ff">&gt;</span><span style="COLOR: #000000"><br /><img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top" />        </span><span style="COLOR: #0000ff">&lt;</span><span style="COLOR: #800000">property </span><span style="COLOR: #ff0000">name</span><span style="COLOR: #0000ff">="serviceInterface"</span><span style="COLOR: #0000ff">&gt;</span><span style="COLOR: #000000"><br /><img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top" />            </span><span style="COLOR: #0000ff">&lt;</span><span style="COLOR: #800000">value</span><span style="COLOR: #0000ff">&gt;</span><span style="COLOR: #000000">com.example.server.service.manager.IExampleManager</span><span style="COLOR: #0000ff">&lt;/</span><span style="COLOR: #800000">value</span><span style="COLOR: #0000ff">&gt;</span><span style="COLOR: #000000"><br /><img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top" />        </span><span style="COLOR: #0000ff">&lt;/</span><span style="COLOR: #800000">property</span><span style="COLOR: #0000ff">&gt;</span><span style="COLOR: #000000"><br /><img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top" />    </span><span style="COLOR: #0000ff">&lt;/</span><span style="COLOR: #800000">bean</span><span style="COLOR: #0000ff">&gt;</span></div> OK，这样客户端的配置就完成了。<img src ="http://www.blogjava.net/wguzgg/aggbug/49939.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/wguzgg/" target="_blank">Rendezvous with Rama</a> 2006-06-02 15:07 <a href="http://www.blogjava.net/wguzgg/articles/49939.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>在eclipse中不需要myeclipse等插件即可启动基于webwork的web应用的方法</title><link>http://www.blogjava.net/wguzgg/articles/49880.html</link><dc:creator>Rendezvous with Rama</dc:creator><author>Rendezvous with Rama</author><pubDate>Fri, 02 Jun 2006 02:46:00 GMT</pubDate><guid>http://www.blogjava.net/wguzgg/articles/49880.html</guid><wfw:comment>http://www.blogjava.net/wguzgg/comments/49880.html</wfw:comment><comments>http://www.blogjava.net/wguzgg/articles/49880.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/wguzgg/comments/commentRss/49880.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/wguzgg/services/trackbacks/49880.html</trackback:ping><description><![CDATA[eclipse有很多插件可以用,有些功能确实是很不错,但是有两个问题使我很困扰:<br />一是有些插件过大,拖累eclipse运行速度变慢,有时真的是很难忍受.<br />二是eclipse版本升级很频繁,往往导致插件无法运行.<br />若想在eclipse中启动基于webwork的web应用,之前我只能用myeclipse插件成功的启动web而不出任何问题.<br />象sysdeo的tomcat的插件或者merve插件,尽管也可以启动web,但是当打开页面的时候,总是报jsp的tag未定义,比如webwork的tag.<br />经过尝试,其实问题解决起来很简单:<br />1.将需要用到的tag描述文件放到src\webapp\WEB-INF\tags目录下<br />比如如果用到了webwork.tld,valuelist.tld,struts-menu.tld,struts-menu-el.tld<br />如果用到了这几个tld文件的话<br />就将其从相应的jar的META-INF目录下拷贝到src\webapp\WEB-INF\tags目录下<br />2.在web.xml文件中加入<br />    &lt;taglib&gt;<br />  &lt;taglib-uri&gt;http://www.opensymphony.com/webwork/tag&lt;/taglib-uri&gt;<br />  &lt;taglib-location&gt;/WEB-INF/tags/webwork.tld&lt;/taglib-location&gt;<br /> &lt;/taglib&gt;<br />    &lt;taglib&gt;<br />  &lt;taglib-uri&gt;http://valuelist.sourceforge.net/tags-valuelist&lt;/taglib-uri&gt;<br />  &lt;taglib-location&gt;/WEB-INF/tags/valuelist.tld&lt;/taglib-location&gt;<br /> &lt;/taglib&gt;<br />    &lt;taglib&gt;<br />  &lt;taglib-uri&gt;http://struts-menu.sf.net/tag&lt;/taglib-uri&gt;<br />  &lt;taglib-location&gt;/WEB-INF/tags/struts-menu.tld&lt;/taglib-location&gt;<br /> &lt;/taglib&gt;<br />    &lt;taglib&gt;<br />  &lt;taglib-uri&gt;http://struts-menu.sf.net/tag-el&lt;/taglib-uri&gt;<br />  &lt;taglib-location&gt;/WEB-INF/tags/struts-menu-el.tld&lt;/taglib-location&gt;<br /> &lt;/taglib&gt;<br />3.我现在用jetty启动web应用,不需要安装任何插件<br />在项目中加入一个jetty的启动类,内容是<br />public class SampleJettyLauncher {<br /> public static void main(String[] args) throws Exception {<br />  Server server = new Server();<br />  SocketListener listener = new SocketListener();<br />  listener.setPort(80); server.addListener(listener);<br />  server.addWebApplication("/","./target/sample/");<br />  server.start();<br /> }<br />}<br />需要将jetty中的ext和lib目录下的所有的jar都加到项目的依赖中去.<br />4.我们需要将src下的内容部署到target\sample目录下,<br />为此,将src\main\java,src\main\resource,src\main\message\en,src\main\message\zh_CN,<br />src\webapp\WEB-INF\classes目录都设定到源码目录,<br />输出路径设置为target\sample\WEB-INF\classes目录<br />这样eclipse就可以自动将所需的内容放到输出路径下<br />将src\webapp\这个目录下的文件,比如frameset.html,<br />src\webapp\WEB-INF\目录下的文件,比如web.xml,sitemesh.xml,decorators.xml<br />src\webapp\WEB-INF\tags目录<br />将上面提到的这三处的文件和目录都拷贝到target\avms\下的相应目录下<br />这样就可以了<br />通过上面的jetty的启动类就可以很方便的启动web程序<br />备注:<br />1.其实在web.xml中描述的taglib中直接指定tld文件的路径只是一个方法<br />还有一个方法是指定tld文件所在的jar,这样就不需要将tld文件从jar中拷出了,<br />但是这样的话需要将jar文件放到项目目录下,而我们一般都将jar放在maven\repository目录里,<br />这样就有问题,所以我还是手工将tld文件拷出.<br />2.我还不清楚为什么通过myeclipse启动的时候,不需要在web.xml中显示的声明taglib.<br />这个疑惑还需要进一步研究.<br />3.其实安装myeclipse插件后,在设定项目的源码路径时,可以指定某个源码路径的输出路径,<br />这样的话,其实我们可以简单的将src\webapp设定输出路径到target\avms就可以了<br />但是我发现没装myeclipse插件的话,手工设定输出路径有问题,这个可能是eclipse的问题了.<br />搞得上面提到的部署就有点繁琐.<br />4.jetty是一个很小巧的web容器,启动它甚至不需要任何配置文件,<br />当然了也可以通过配置文件对它进行设置,这个请看jetty的文档.<br />使用tomcat的sysdeo插件我相信也是没有问题的.<br />5.扔掉myeclipse后,我发现有个很大的好处,如果通过myeclipse启动的话,<br />象如果配置了依赖项目,当你修改依赖项目的文件的时候,需要myeclipse重新部署.<br />myeclipse会自动为依赖项目打一个jar,这个很花时间.<br />而现在通过jetty来运行,可以即时修改,即时运行,不需要部署了.<img src ="http://www.blogjava.net/wguzgg/aggbug/49880.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/wguzgg/" target="_blank">Rendezvous with Rama</a> 2006-06-02 10:46 <a href="http://www.blogjava.net/wguzgg/articles/49880.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>在项目中使用IronTrackSQL进行sql性能监测</title><link>http://www.blogjava.net/wguzgg/articles/49879.html</link><dc:creator>Rendezvous with Rama</dc:creator><author>Rendezvous with Rama</author><pubDate>Fri, 02 Jun 2006 02:45:00 GMT</pubDate><guid>http://www.blogjava.net/wguzgg/articles/49879.html</guid><wfw:comment>http://www.blogjava.net/wguzgg/comments/49879.html</wfw:comment><comments>http://www.blogjava.net/wguzgg/articles/49879.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/wguzgg/comments/commentRss/49879.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/wguzgg/services/trackbacks/49879.html</trackback:ping><description><![CDATA[
		<p>IronTrackSQL是一个不错的sql性能监测工具,尽管它现在已经停止开发了,主页也没有了:-)<br />下面我分别讲一下在tomcat中,在eclipse中的配置.<br />一.tomcat中<br />1.将IronTrackSQL目录下的irontracksql.jar,log4j-1.2.8.jar,p6spy.jar放到tomcat\common\lib目录下,<br />并将这3个jar放到tomcat\webapps\sample\WEB-INF\lib下<br />2.将IronTrackSQL目录下的spy.properties放到tomcat\common\classes目录下,<br />并将这个配置文件放到tomcat\webapps\sample\WEB-INF\classes下<br />3.在项目的数据源的配置文件中,例如webapps\sample\WEB-INF\classes\dataSourceContext.xml文件中,<br />修改dataSource这个bean的driverClassName属性,将其改为com.p6spy.engine.spy.P6SpyDriver<br />4.将tomcat\common\classes目录下和tomcat\webapps\sample\WEB-INF\classes目录下的syp.properties<br />这个配置文件中的realdriver属性设置为实际使用的驱动,例如<br />eraldriver=com.mysql.jdbc.Driver<br />5.在ItronTrackSQL目录下执行java -jar irontracksql.jar,会打开一个界面<br />6.然后运行tomcat,在tomcat\bin目录下,会生成spy.log,里面就是日志<br />7,启动tomcat后,需要在IronTrackSQL的主界面里点击disconnect,然后再点connect,才能获取程序运行的sql.</p>
		<p>二.在eclipse中<br />1.将IronTrackSQL目录下的irontracksql.jar,log4j-1.2.8.jar,p6spy.jar这三个jar加入到项目得依赖中<br />2.将IronTrackSQL目录下的spy.properties放到src\webapp\WEB-INF\classes目录下<br />3.在项目的数据源的配置文件中,例如webapps\sample\WEB-INF\classes\dataSourceContext.xml文件中,<br />修改dataSource这个bean的driverClassName属性,将其改为com.p6spy.engine.spy.P6SpyDriver<br />4.将src\webapp\WEB-INF\classes目录下的syp.properties<br />这个配置文件中的realdriver属性设置为实际使用的驱动,例如<br />eraldriver=com.mysql.jdbc.Driver<br />5.在ItronTrackSQL目录下执行java -jar irontracksql.jar,会打开一个界面<br />6.可以随便执行程序,比如说跑测试用例,或者启动web应用,都会被记下日志了,spy.log文件会在项目的根目录下.<br />注意:<br />一定要在运行程序前先运行java -jar irontracksql.jar,打开界面.</p>
<img src ="http://www.blogjava.net/wguzgg/aggbug/49879.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/wguzgg/" target="_blank">Rendezvous with Rama</a> 2006-06-02 10:45 <a href="http://www.blogjava.net/wguzgg/articles/49879.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item></channel></rss>