Feb 17

从一个main方法启动内嵌的Jetty很简单。Jetty的文档上有详细的例子。
http://docs.codehaus.org/display/JETTY/Embedding+Jetty

现在的一个项目需要用到JNDI.把datasource和上传文件的目录保存到了jndi中这样统一了不同os和开发者间的差异。只要在大家配置同样的jndi name就不用考虑打包的问题。这是另外一种解决办法。

首先你需要再添加两个jar包。jetty-plus和jetty-naming包。少了jetty-naming报的不是no class found exception.所以一定不要忘记。直接看代码吧。其实也很简单。

[more..]

Feb 16

一个项目里总会有很多配置文件。而且一般都会有多套环境。开发的、测试的、正式的。而在这些不同的环境这些配置的值都会不一样。比如mail的配置、服务的url配置这些都是很常见的。所以在打包的时候就要根据environment来选不同的值或者配置文件。

比较常用的办法就是为不同的环境建立不同的配置文件目录。在打包的时候用对应的文件目录下的配置文件。

|-- resources
|   |-- dev
|   |-- product
|   |-- qa
|   `-- qa53

以前用ant的时候打包的时候处理就比较方便。打包前copy一下对应目录下的配置文件覆盖target下的那些文件再打包就可以了。在刚开始用 maven的时候就想要怎么解决,一直没有找到ant的这种方式的可行的办法。其实主要是按ant这种处理方法去思考了。只去想没有有cp这种 target。其实在maven里用profile就可以解决了。对于不同的environment定义不同的profile就ok了,目录结构还是沿用 原来的就可以。

[more..]

Dec 09
如果你按照这里的命令来建立自己的maven2 mirror的话将会把官方的所有包同步下来。
http://maven.apache.org/guides/mini/guide-mirror-settings.html

rsync -v -t -l -r mirrors.ibiblio.org::maven2 /your/local/path
rsync -v -t -l -r rsync://rsync.cica.es/maven2 /your/local/path

前段时间我在公司一台机器上同步完了,现在应该是接近50G了。这样下去80G的硬盘除去安装系统的"/"又快用完了。在一年前大概是20G多一点。在同 步的时候你会发现很多*.zip,*.tar.gz,*.bz2的包。而且有这种包出现的时候一般都超过10G。特别是在/org/apache下的很多 包里出现。不知道是不是maven本来是他们家的。所以各种包都先放到repository里去。其实我们只是需 要*.jar,*-sources.jar,*-javadoc.jar 就足够了。

[more..]

Aug 29
前几天给财物做一个支付的统计报表,要求生成固定格式的excel 文件。当然就想到用apache poi了。

http://poi.apache.org/

不过你得一个先生成一个workbook,然后create一个sheet,再添加一个row,最后再添加cell,然后你就可以往cell里写数据了。代码那个多啊。真是丑得没法看。
后来找到这个jxls项目。

http://jxls.sourceforge.net/

真不错。其实jxls就是类似Freemarker的模板引擎。你只要提供一个.xls的模板(template),模板里写一些标签。然后把数据放到Map里让jxls填充一下就ok了。这样就根本不用poi的api去调xls的样式颜色啊。这个都是太麻烦了。

[more..]

Apr 27
    使用maven的一个方便之处是可以使用Jetty Plugin来运行web项目。只要maven jetty:run就可以把web项目跑起来了。只是很多时候我们都需要在IDE中进行调试。那如何在Eclipse中调试使用jetty Plugin的web项目呢?

[more..]

Apr 22
Struts2的零配置功能减少了非常多的xml配置。所以公司最近的一个项目也用到了。这里讲一下关于namespace的配置。现在我要达到的目的就是添加一个/adm的namespace用于后台管理相关的action.

[more..]

Apr 02
在原来的webwork式的xml配置文件里可以给<action>下的<result>节点添加一些额外的参数。
<result ..>
      <param name="">...</param>
</result>
那换成@Result annotation之后要怎么做呢。

[more..]

Mar 16

  在cvs中这个比较好做。只要在文件中有这样的字条串
  @version $Id: ForumAtta.java Exp $
cvs就会将$Id....$这段内容换成该文件的最后提交日期和提交人的信息
  @version $Id: ForumAtta.java,v 1.1 2006/11/09 13:58:50 rory Exp $
但是在subversion中仅仅这样就不行了,那我们该怎样做呢。

[more..]

Sep 07
转载请注明: 作者: somebody(莫多) 出处:http://jdkcn.com/entry/the-better-revolution-about-the-compass-lucene-highlight.html       前面两篇文章介绍了搜索高亮的实现,以及html代码问题的解决。《 给Compass搜索添加高亮(highlight) 》《 解决Compass,Lucene高亮的问题 》      其实对于很多html的内容,我们关心的其实只是html格式代码之外的文字内容。搜索出来也应该是其中的内容,前面的一个解决方法只是在搜索结果里面去处了高亮内容中的html格式代码,这样不会弄乱你的搜索结果页面。这几天仔细看了一下compass的文档和代码,其实我们可以彻底的解决这个问题。我们需要在索引的时候,转换一下,去掉html代码就可以了。           compass为我们封装了很多Resource...

[more..]

Sep 04
 前面介绍了《 给Compass搜索添加高亮(highlight) 》,不过就是有点问题。索引的内容很多都是html格式的,比如myblog里文章的内容,highlight出来的内容是包括了html代码,所以直接输出highlight的内容的话一些没有关闭的标签,不匹配的标签都会把你的页面撑乱,或者变成其他样式了。     我们就来处理一下这个问题,我选择的方法是highlight之后把highlight的内容先替换成特殊的内容,然后去掉html代码,然后在将高亮内容替换回去。   我包装了一下原来的CompassHit: /**  * @author <a href="mailto:rory.cn@gmail.com">somebody</a>  * @since Sep 1, 2007 10:20:49 PM  * @version $Id CompassHitWapper.java$  */ public class...

[more..]