<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:wfw="http://wellformedweb.org/CommentAPI/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:atom="http://www.w3.org/2005/Atom"
	xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
	xmlns:slash="http://purl.org/rss/1.0/modules/slash/"
	>

<channel>
	<title>lizongbo at 618119.com &#187; Google App Engine</title>
	<atom:link href="http://618119.com/tag/google-app-engine/feed" rel="self" type="application/rss+xml" />
	<link>http://618119.com</link>
	<description>工作,生活,java,apache,tomcat,Resin,mina,Hessian,Openfire,XMPP,RPC,Ubuntu</description>
	<lastBuildDate>Wed, 14 Apr 2010 13:15:36 +0000</lastBuildDate>
	<generator>http://wordpress.org/?v=2.9.2</generator>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
			<item>
		<title>Windows下编写google app engine jsp出现中文乱码问题的真正原因</title>
		<link>http://618119.com/archives/2009/04/12/148.html</link>
		<comments>http://618119.com/archives/2009/04/12/148.html#comments</comments>
		<pubDate>Sun, 12 Apr 2009 04:54:52 +0000</pubDate>
		<dc:creator>lizongbo</dc:creator>
				<category><![CDATA[Java]]></category>
		<category><![CDATA[encoding]]></category>
		<category><![CDATA[Google App Engine]]></category>
		<category><![CDATA[jsp]]></category>
		<category><![CDATA[jspc]]></category>

		<guid isPermaLink="false">http://618119.com/?p=148</guid>
		<description><![CDATA[Windows下编写google app engine jsp出现中文乱码问题的真正原因，是com.google.appengine.tools.admin.Application里启动javac没加-encoding参数导致.
在Linux下，因为一般都是LANG=zh_CN.UTF-8，因此就不会遇到这个问题了。
Windows下一般是取的默认的file.encoding为GBK，因此根据jsp生成的class文件就是乱码内容了。
验证流程如下：
1.首先重命名E:\Java\appengine-java-sdk-1.2.0\lib\shared\jsp\jasper-compiler-5.0.28.jar为 jasper-compiler-5.0.28.jar.bak。
然后在E:\Java\appengine-java-sdk-1.2.0\bin下运行 appcfg update E:\Java\workspace\testwe\war。
这个时候在命令行下会看到如下的出错信息。
E:\Java\appengine-java-sdk-1.2.0\bin&#62;java -cp &#8220;E:\Java\appengine-java-sdk-1.2.0\bin\\..\lib\appengine-tools-api.jar&#8221; com.google.appengine.tools.admin.AppCfg update e:\Java\workspace\testweb\war
Reading application configuration data&#8230;
2009-04-12 03:05:34.240::INFO:  Logging to STDERR via org.mortbay.log.StdErrLog
Beginning server interaction for lizongbo&#8230;
0% Creating staging directory
5% Scanning for jsp files.
8% Compiling jsp files.
Exception in thread &#8220;main&#8221; java.lang.NoClassDefFoundError: org/apache/jasper/JspC
at com.google.appengine.tools.development.LocalJspC.main(LocalJspC.java:
14)
Caused by: java.lang.ClassNotFoundException: org.apache.jasper.JspC
at java.net.URLClassLoader$1.run(URLClassLoader.java:200)
at java.security.AccessController.doPrivileged(Native Method)
at java.net.URLClassLoader.findClass(URLClassLoader.java:188)
at java.lang.ClassLoader.loadClass(ClassLoader.java:307)
at sun.misc.Launcher$AppClassLoader.loadClass(Launcher.java:301)
at java.lang.ClassLoader.loadClass(ClassLoader.java:252)
at java.lang.ClassLoader.loadClassInternal(ClassLoader.java:320)
&#8230; 1 more
java.lang.RuntimeException: [...]]]></description>
		<wfw:commentRss>http://618119.com/archives/2009/04/12/148.html/feed</wfw:commentRss>
		<slash:comments>2</slash:comments>
		</item>
		<item>
		<title>使用Google App Engine的URLFetchService实现类似phpproxy访问页面</title>
		<link>http://618119.com/archives/2009/04/11/147.html</link>
		<comments>http://618119.com/archives/2009/04/11/147.html#comments</comments>
		<pubDate>Fri, 10 Apr 2009 16:00:10 +0000</pubDate>
		<dc:creator>lizongbo</dc:creator>
				<category><![CDATA[Java]]></category>
		<category><![CDATA[Google App Engine]]></category>
		<category><![CDATA[phpproxy]]></category>

		<guid isPermaLink="false">http://618119.com/?p=147</guid>
		<description><![CDATA[使用Google App Engine的URLFetchService实现类似phpproxy访问页面,
今天接着体验google appEngine，参考文档写了个类似phpproxy以代理方式获取页面内容的Servlet。
phpproxy的功能很强大,我的程序很简单,只实现了简单的获取页面内容然后显示。
phpproxy的代码在：http://idea.hosting.lv/a/phpproxy/phpproxy-0.6/phpproxy.phps
我的页面在：
http://lizongbo.appspot.com/p?url=http://www.google.cn
URLFetchService的介绍在：http://code.google.com/intl/zh-CN/appengine/docs/java/urlfetch/
首先，web.xml的配置是：
[code]
&#60;/servlet-mapping&#62;
&#60;servlet&#62;
&#60;servlet-name&#62;HttpProxy&#60;/servlet-name&#62;
&#60;servlet-class&#62;com.lizongbo.gapp.HttpProxyServlet&#60;/servlet-class&#62;
&#60;/servlet&#62;
&#60;servlet-mapping&#62;
&#60;servlet-name&#62;HttpProxy&#60;/servlet-name&#62;
&#60;url-pattern&#62;/p&#60;/url-pattern&#62; &#60;!-- 写成/p/*居然没法匹配到/p--&#62;
&#60;/servlet-mapping&#62;
[/code]
com.lizongbo.gapp.HttpProxyServlet.java的代码为：
[code]
package com.lizongbo.gapp;
import java.io.IOException;
import java.io.PrintWriter;
import java.net.URL;
import java.util.Enumeration;
import java.util.Map;
import javax.servlet.http.*;
import com.google.appengine.api.urlfetch.*;
@SuppressWarnings("serial")
public class HttpProxyServlet extends HttpServlet {
public void doGet(HttpServletRequest request, HttpServletResponse response)
throws IOException {
String urlStr = request.getParameter("url");
java.net.URL url = null;
try {
url = new URL(urlStr);
if (!url.getHost().toLowerCase().endsWith("appspot.com")//不需代理本站
&#38;&#38; url.getPort() == url.getDefaultPort()) {//google限制了只能访问默认端口
URLFetchService urlFetchService = URLFetchServiceFactory
.getURLFetchService();
HTTPRequest req = new HTTPRequest(url, HTTPMethod.GET);
req.addHeader(new HTTPHeader("X-Fetchby",
"http;//lizongbo.appsport.com"));
HTTPResponse res = urlFetchService.fetch(req);
response.setStatus(res.getResponseCode());
response.reset();
response.addHeader("X-powerby", "http://lizongbo.appsport.com");
for (HTTPHeader [...]]]></description>
		<wfw:commentRss>http://618119.com/archives/2009/04/11/147.html/feed</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>Google App Engine Java runtime的file.encoding居然不是UTF-8</title>
		<link>http://618119.com/archives/2009/04/08/146.html</link>
		<comments>http://618119.com/archives/2009/04/08/146.html#comments</comments>
		<pubDate>Wed, 08 Apr 2009 15:45:56 +0000</pubDate>
		<dc:creator>lizongbo</dc:creator>
				<category><![CDATA[Java]]></category>
		<category><![CDATA[encoding]]></category>
		<category><![CDATA[Google App Engine]]></category>

		<guid isPermaLink="false">http://618119.com/?p=146</guid>
		<description><![CDATA[Google App Engine Java runtime的file.encoding居然不是UTF-8
Google App Engine支持Java了,下午在Windows下测试Google App Engine Java Servlet的中文是正常的，但是测试的jsp页面显示却是乱码，
参考：http://618119.com/archives/2009/04/08/145.html
于是晚上写了下面的代码来取出系统属性和环境变量来看：
[code]
		out.println("系统属性有：《br/》");
		Enumeration e1 = System.getProperties().propertyNames();
		String s1 = "";
		while (e1.hasMoreElements()) {
			String key = (String) e1.nextElement();
			String value = System.getProperty(key);
			out.println(key + "=" + value + "《br/》");
		}
		out.println("系统环境变量有：《br/》");
		for (Map.Entry《String, String》 et : System.getenv().entrySet()) {
			out.println(et.getKey() + "=" + et.getValue() + "《br/》");
		}
		out.println("你的请求属性有以下内容：《br/》");
		Enumeration e2 = req.getAttributeNames();
		while (e2.hasMoreElements()) {
			String key = (String) e2.nextElement();
			Object value = [...]]]></description>
		<wfw:commentRss>http://618119.com/archives/2009/04/08/146.html/feed</wfw:commentRss>
		<slash:comments>3</slash:comments>
		</item>
		<item>
		<title>Google App Engine支持Java了！</title>
		<link>http://618119.com/archives/2009/04/08/145.html</link>
		<comments>http://618119.com/archives/2009/04/08/145.html#comments</comments>
		<pubDate>Wed, 08 Apr 2009 10:25:44 +0000</pubDate>
		<dc:creator>lizongbo</dc:creator>
				<category><![CDATA[Java]]></category>
		<category><![CDATA[Google App Engine]]></category>

		<guid isPermaLink="false">http://618119.com/?p=145</guid>
		<description><![CDATA[Google App Engine支持Java了！
Google App Engine 开发团队在其官方博客正式宣布Google App Engine支持java，于是开通账户体验了一下。
体验流程如下：1.先创建账户，需要短信激活。再创建一个domain为  http://lizongbo.appspot.com/
2. Google App Engine Java SDK 1.2.0下载地址：
appengine-java-sdk-1.2.0.zip: http://googleappengine.googlecode.com/files/appengine-java-sdk-1.2.0.zip
中文页面没更新，所以要看英文下载页面：
http://code.google.com/intl/en/appengine/downloads.html
下载之后解压到D:\Java\appengine-java-sdk-1.2.0
3.Eclipse 插件下载：
下载安装步骤参考： http://code.google.com/intl/zh-CN/eclipse/docs/install-eclipse-3.4.html
http://dl.google.com/eclipse/plugin/3.4
我在插件更新里没选Google App Engine Java SDK 1.2.0和Google Web toolkit SDK 1.6.4
4.安装好插件之后，重启Eclipse，新建 Web Application Project，
在向导界面，将 Use Google Web Toolkit的钩取消掉，在Use Google App Engine 的右边，配置SDK目录,选择D:\Java\appengine-java-sdk-1.2.0。
工程名写testweb,包名写com.lizongbo.gapp
5.在创建好工程后，工程默认创建了一个testwebServlet。
6.修改testwebServlet的doGet方法，代码如下：
[code]
public void doGet(HttpServletRequest req, HttpServletResponse resp)
			throws IOException {
		resp.setContentType("text/html; charset=UTF-8");
		PrintWriter out = resp.getWriter();
		out.println("《!DOCTYPE HTML PUBLIC \"-"
				+ "//W3C//DTD HTML [...]]]></description>
		<wfw:commentRss>http://618119.com/archives/2009/04/08/145.html/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
	</channel>
</rss>
