2009.05 15

Google App Engine Java SDK 1.2.1 新版出现,JSP编码中文问题解决

发表: keel 20:45:12 | 撰文 | JAVA Google AppEngine for java

Google App Engine Java SDK1.2.1终于出来了!很荣幸地看到我提交的BUG(Issue1257)被作为重要的fix给补好了,从此jsp的中文问题彻底解决了!

这个1.2.1带来了这些新的变化:

  • 增加了对 appengine-web.xml, cron.xml, and datastore-indexes.xml文件的效验。
  • 新的<user-permissions>节点加入到appengine-web.xml中,支持定义第三方的权限系统。
  • 支持任意的无索引datastore properties。
  • 新增http proxy支持appcfg.sh
  • Response 限制从1MB扩大到了10MB!
  • 修复了Servlet version 2.5部分丢失的方法。
  • 修复了ServletInputStream 一些bytes读取时的符号错误。
  • Expect header,如100- continue现在会被忽略,不会引起500错误。
  • 内置的commons-logging-1.2.1.jar不再会覆盖用户自己的。
  • Groovy 权限支持了local runtime。
  • 解决了一些JRE上的Reflection错误。
  • <url-pattern>节点现在可以出现在<jsp-property-group>中
  • JSP使用UTF-8编码时无法正确编译的问题
  • 静态的welcome文件(首页,如index.html)现在优先于动态的welcome文件(如index.jsp).
  • 支持Thread.setContextClassLoader()
  • Content-Type not set in local implementation of URLFetch API .
  • AppCfg request_logs command is limited to 100 lines .
  • Timestamp added to datastore indexes file uses current locale .

此外还有一些对JDO/JPA的变化,都是一些很重要的fix和新的功能支持:

  • 修复了自定义@Order的问题
  • 支持字段限制
  • query literals支持doubles
  • 支持BigDecimal fields
  • 支持在持久化时使用类的父类
  • 等等其他变化……

[继续阅读]

2009.05 02

通过SSH在位于F5后面的SUSE Linux上配置jdk和tomcat

发表: keel 12:55:12 | 撰文 | JAVA

前段时间通过SSH在SUSE Linux上配置了一下JAVA的WEB服务器环境,主要是 jdk和tomcat的安装,以及后期发现的F5后面需要注意的问题,在此记录一下,以便以后参考。
JDK的安装
  1. 下载JDK:事先找到的jdk下载位置复制到剪贴板,用Putty通过SSH连到服务器,找个合适的位置准备下载JDK安装文件,如"/usr/java ",然后在此目录中输入:
    server:/usr/java # wget http://www.sun.com/....../jdk-6u13-linux-x64-rpm.bin 回车后即会开始下载。
  2. 安装:执行server:/usr/java # ./jdk-6u13-linux-x64-rpm.bin,会自动解压并安装,这个jdk6版本安装完成后,直接输入java -version 就可以看到相关的安装信息了,但为了更好地使用,还是需要配置环境变量。
  3. 配置环境变量: 使用VIM修改profile文件
    server:/usr/java # vim /etc/profile
    在文件末尾添加下列语句:
    export JAVA_HOME=/usr/java/jdk1.6.0_13
    export CLASSPATH=.:$JAVA_HOME/jre/lib:$JAVA_HOME/lib/tools.jar
    export JRE_HOME=$JAVA_HOME/jre
    export PATH=$JAVA_HOME/bin:$PATH
    然后logout,再连一下,使用echo $JAVA_HOME就可以看到环境变量已经生效了。至此jdk安装算是完成了。
tomcat的安装
  1. 下载:事先找到tomcat的下载位置复制到剪贴板,然后下载
    server:/usr/java # wget http://tomcat.apache.org/download...../apache-tomcat-6.0.18.tar.gz
  2. 安装:复制这个安装文件到/usr/local/ 然后解压缩:
    server:/usr/local # tar xvzf apache-tomcat-6.0.18.tar.gz
    最好调整一下目录,将tomcat的文件放到/usr/local/tomcat下面。
  3. 启动:在tomcat的bin目录下运行
    server:/usr/local/tomcat/bin # ./startup.sh
    随后可在浏览器中看到可爱的汤姆猫了。
在F5后面需要注意的问题 因为这个应用是用来分析统计WEB流量用的,在这个SUSE上部署好后,可以看到有一个内网的监测请求每隔一段时间就访问这个80端口,因此,我在Servlet上作了处理,对于这种请求直接就用return过滤掉,不纳入统计范围。后来发现,这样处理后,过一段时间,80端口就无法访问到了,询问F5的相关工程师,看到此服务器的80端口是down掉的状态。试着把这种过滤策略去掉,咦?居然又好了,80端口一直正常。反复测试后发现,对于这种F5产生的监控请求,不能直接return掉,甚至不能返回空字符串,就是这样也不行:
response.getWriter().print("");
return;
必须返回一个有效的字符串才能保证80端口的正常,所以修改成如下的过滤方式后,问题解决:
response.getWriter().print("404");
return;
[继续阅读]

2009.05 01

放弃CMS系统,使用Fmpp和freemarker从本地创建纯静态网站(1)

发表: keel 20:55:12 | 撰文 | JAVA

在上个世纪90年代,很多人创建网站都是使用的Dreamweaver创建静态的html文件,然后上传到服务器的。这种方式最简单而且直接,从今天的角度来看仍然还是最为稳定和高性能的,当然它最大的缺点就是难以维护,做一个公司简介,业务介绍之类的“公司网站”当然问题不大,但对于真正有点内容的门户,就基本上不可能维护起来了。虽然Dreamweaver有“模板”和“库”的方式可实现模块化的静态站构建,而且有相当强大的html重构功能,但仍然不足以对网站内的静态页内容进行管理和维护。 所以,这种情况一般都需要使用服务端的动态页技术,如ASP,PHP等。

到今天来看,服务端的动态技术得到了很强的发展,从JAVA的角度看过去,就可以看到眼花缭乱的服务端WEB技术,还可以看到各种复杂的架构和分层。而且,不少CMS系统都以生成静态页的方式来提升站点的性能。 其实,对于小型站来讲,CMS系统并不是必须的,有一个很好的工具可以使用:fmpp。

简单来讲,fmpp就是使用freemarker模板引擎来生成文件的工具,它有很多的用途,在这里,我用它来生成纯静态的Blog站,也就是本站 www.k99k.com

fmpp可以设置它的数据源,输出方式,编码等,足以满足一般网站的需求,而且因为基于模板技术,每个页面的每个细节都可以随意进行修改,而不会局限于某某系统的功能。于是就形成了以下目标:
  • 通过freemarker模板和数据文件在本地生成静态html文件,然后进行上传更新.
  • 每新添一篇文章,就是新写一个数据页,然后执行fmpp命令完成静态页生成,类别,标签页等也随之自动进行处理.
  • 可以控制每个内容页的keywords,description,title,html文件名信息,这是很少有cms系统能做全和做好的。
  • 自动生成面向google的sitemap文件,自动生成rss文件
  • 后期可以通过fmpp的front-end机制,设置一个内容输入界面,并自动完成FTP上传工作
现在除了最后一点,其他的均已实现,大家可以看看本站,就是这样炼成的,更新和修改起来也是非常方便快捷,所有的操作都在本机运行,主机上不需要任何服务端技术,一个简单的http服务器就行了,安全性和性能也是没说的了。
[继续阅读]

2009.04 11

Google AppEngine for java 的JDO测试

发表: keel 20:02:12 | 撰文 | JAVA Google AppEngine for java

研究了一下dataStore文档,并作了一个简单的留言板,没有用DEMO里的那个,自己做的更方便修改,省时间。

有几个心得:
  • 使用eclipse的google插件可以节省很多必要的麻烦,我在前文中已有说明。
  • google 的dataStore分为标准api和low api(底层api),标准api分为jdo和jpa两种。底层API看上去比较复杂,文档也少(实际上只有javadoc),而比较jdo和jpa,虽 然后者比较新,但显示google对jdo的支持更全面,从文档和DEMO可以看出。
  • 按google的建议,先创建一个PMF工厂,然后使用Query对象构造查询,删除和新增经测试问题都不大,关键是查询和index。
感觉最麻烦的就是索引(index)处理了,与SQL相比,这一部分比较不太一样。eclipse在build项目时会自动处理Query产生的 index,并在WEB-INF/appengine-generated/下生成datastore-indexes-auto.xml配置文件,如果有数据更新,还会生成local_db.bin,这实际上就是数据保存的文件了,删除这个文件数据就消失了,这个文件不会上传到googleApp,所以本地调试时生成的数据是不会在上传时与googleApp上的数据同步的。
[继续阅读]

Pages:     1 | 2 | 3  >>