在sae搭建微信公众号服务器的常见错误

在sae平台上使用java搭建微信公众号服务器

微信公众号在非开发者模式下只能设置静态的消息回复机制和静态的消息推送,即不能根据关注者发送的内容做出回应,要想做到动态地回复关注者发送的内容,就需要使用开发者模式搭建一个服务器。

微信公众号服务器在通过验证后将关注者发送的消息转发到自己搭建的服务器上,在服务器上对微信服务器发出的内容做出响应后微信服务器会再将这部分内容转发给关注者,安利一个微信java开发的博客。

blog

因此搭建的服务器实现的基本功能就是对微信服务器转发的用户信息进行处理和相应,这里记录了一些我在使用sae的过程里遇到的问题:

JVM虚拟机日志中的错误,这部分错误主要是由于编写的java服务器不能正常工作引起的。

Unable to reach node goal: started

JVM由于某些问题没有启动,常见的错误有两种,一种是 java.lang.UnsupportedClassVersionError: … : Unsupported major.minor version 52.0 ,不支持的版本,即本地所使用的jdk版本不是sae平台支持的jdk版本。可以在项目属性里选择sae支持的jdk版本。

另一种是 javax.servlet.UnavailableException: Servlet class … is not a javax.servlet.Servlet ,就是编写的servlet不能被sae接受,通常情况就是本地使用的servlet-api.jar不是sae平台支持的版本,可以在导出时取消掉这部分内容。

Unable to reach node goal: undeployed

JVM不能正常部署,可能是由于同一个jar包重复导入或者导入了冲突的jar包。

JAVA_ERROR

HTTP日志中的error,这部分错误主要是由于servlet运行中的错误。除了考虑java项目中的本身错误以外,也要考虑sae平台是不是不支持引入的jar包或者jar包没有一起打包在war中的问题,通常会报NoClassDef以及ClassNotFound等错误,也比较好确定出错点。

IOException

java.security.InvalidAlgorithmParameterException

不知道是什么原因,用httpconnection访问某些url时会报这个异常,可能是出于安全的考虑吧,需要使用sae自己提供的fetchurl来访问这些url的数据,用起来挺方便的。

fetchurl