微信公众账号与网站信息对接_JAVA_编程开发_程序员俱乐部

中国优秀的程序员网站程序员频道CXYCLUB技术地图
热搜:
更多>>
 
您所在的位置: 程序员俱乐部 > 编程开发 > JAVA > 微信公众账号与网站信息对接

微信公众账号与网站信息对接

 2013/7/10 18:35:21  zhaoyanfangeye  程序员俱乐部  我要评论(0)
  • 摘要:最近做了一个微信公众账号连接网站的一些工作,网站直接用的是新浪的sae,在做这些的时候遇到了一些问题,所以在此总结一下:(1)分布式session问题在微信公众账号请求服务器与pc请求服务器有所不同,公众账号请求服务器时,每次请求都会产生不同的session,而pc在一个浏览器请求信息时每次请求session都一样的,所以要用公众账号请求服务器往session中存放值用request.getSession().setAttribute()是行不通的,还是另走别路吧,我这块用的是分布式缓存
  • 标签:网站
    最近做了一个微信公众账号连接网站的一些工作,网站直接用的是新浪的sae,在做这些的时候遇到了一些问题,所以在此总结一下:
(1)分布式session问题
    在微信公众账号请求服务器与pc请求服务器有所不同,公众账号请求服务器时,每次请求都会产生不同的session,而pc在一个浏览器请求信息时每次请求session都一样的,所以要用公众账号请求服务器往session中存放值用request.getSession().setAttribute()是行不通的,还是另走别路吧,我这块用的是分布式缓存,每次请求把值放到缓存中,key就是用户微信用户的id,value是存放该用户对应的值。(我之前还用了一种方式就是自己建一个缓存(建了一个hashMap),当程序放在一台服务器上是没有问题的,当启动多台服务器的时候就会有问题(我这块启动了4个JVM),因为用户第一次请求时把数据放在第一台jvm,当下次读取数据的时候有可能会去第二台JVM上取数据,所以就会出现问题)。当在pc端请求sae时,如果需要用到session共享是需要在web.xml文件中配置
class="xml">   
<distributable/>  
  <session-config>
      <session-timeout>30</session-timeout>
  </session-config>

如果没有session共享问题最好不要配,这也耗费性能。
(2) sae中的mysql连接池配置
   在sae中使用连接池的时候会无缘无故报错如下(我的连接池用的是c3p0):om.mysql.jdbc.exceptions.jdbc4.CommunicationsException: ....后面还有一堆就不写了。后来在看了一下sae的开发文档才明白,SAE的文档上面写,MySQL连接超时时间为30s,不是mysql默认的8小时,也就是说30s不作sql请求,mysql就会自动关闭所有连接,因此你设置的数据库连接池中的连接被强制回收并且没有任何的通知,导致数据库操作失败。新浪sae 的文档也有写,以下是应用新浪sae 的文档

为什么MySQL连接有时候会丢失?
    因为SAE的MySQL服务会将30秒内没做操作的连接回收,所以请根据实际情况配置你的连接池(如c3p0的idleConnectionTestPeriod和maxIdleTime建议设置为10)。

所以在c3p0的配置的时候一定要注意这个两个属性。
以下是在遇到问题时看到的以下网上资料
sae中连接池的标准配置http://blog.csdn.net/kaiwii/article/details/7873628
连接数据库的相关配置http://blog.csdn.net/a9529lty/article/details/7104351
c3p0的配置http://www.blogjava.net/Alpha/archive/2009/03/29/262789.html
mysql一些属性配置http://blog.csdn.net/z1988316/article/details/7976038

发表评论
用户名: 匿名