- 浏览: 34591 次
- 性别:
- 来自: 深圳
最新评论
-
492920874:
请问可以提供Sophia框架代码学习吗?
微信公众平台的STRUTS -
492920874:
请问可以提供Sophia框架源码供学习吗?
Sophia快速入门 -
javatozhang:
devroller2 写道一般情况下打war包,会把第三方的j ...
Tomcat中将第三方jar移出你的WEB-INF/LIB -
devroller2:
一般情况下打war包,会把第三方的jar也一起打到web-in ...
Tomcat中将第三方jar移出你的WEB-INF/LIB -
SamuelGe:
然后你会发现,有很多找不到类的情况发生了
Tomcat中将第三方jar移出你的WEB-INF/LIB
文章列表
为什么要写这个文章?
1、前两天想到阿里来往注册一个公众号,但发现来往公众平台做的不是一般的烂!注册需要填写excel并发邮件申请,而且申请条件不是一般的苛刻,我的神!
2、看不惯腾讯的霸王条款、服务质量差(动不动屏蔽第三方自动回复)。
3、本来找个朋友基于微信平台创业,发现自己不是创业的料。
微信公众平台可以做什么?(上PP,求懂!)
什么是sophia?
什么是sophia?
Sophia是一个为方便开发基于微信公众平台应用程序的框架,类似于开发web应用的struts。 Sophia将微信用户回复的内容解析成各种指令以便app能识别和响应用户的请求,实现公众帐号的智能回复。
假设
我们假设你会开通微信公众平台的订阅号,并且知道如何设置高级模式-开发者模式。
用Sophia开发Hello world
如何快速理解和使用Sophia
背景:
用了某家的云,只能用fetchURL,也就是说主机不能访问外部服务。所以只能上传WAR包来部署app了。svn是不能用了的。
所以我们尽可能减小WAR包的体积,也就是将web-inf/lib目录中的第三方jar放到别的目录下。
方法:
0、创建一个目录,将你的app需要的第三方jar放到其他,比如extlib目录
1、修改tomcat配置文件${catalina.home}/conf/catalina.properties中的
common.loader值,将你的extlib目录按照原有的方式加到末尾。
2、现在你可以删除你的web-inf/lib中的第三方jar了。
当然,你自己 ...
问题1:在centos中用run.sh启动james没有问题,但通过运行james start命令启动失败。
诊断:打开bin目录下的wrapper.log看看是什么原因。根据日志发现用start命令启动james无法加载mysql驱动。
解决方法:
1、在conf目录中打开wrapper.conf,添加一条
wrapper.java.classpath.117=%REPO_DIR%/james-server-data-hbase-3.0-beta4.jar
wrapper.java.classpath.118=%REPO_DIR%/james-server-data-jcr-3.0-b ...
背景:
你有很多想法,每个想法都是一个独立域名的网站,而你的资源(机器性能:CPU、内存、磁盘)却有限!怎么办?
原理:
通过减少部署App实例来节约资源。
前提条件:
1、你要有一个固定的IP;
2、你有多个域名指向你的固定IP,比如a.com、b.com、c.com
要解决的问题:
1、你的App必须支持类似博客或者cms的功能。
显然roller是没问题的,类似的App比如WordPress
2、URL转换
URL映射是最关键的部分,需要将roller的博客url映射为域名的url,比如:http://ip/a/映射为http://www.a.com.
这里,使用apache + ...
Velocity是java世界中出现比较早,也比较成熟的、性能比较好的、应用也比较广泛的模板框架。
所谓模板,就是定义一套不变的模型,并用其生成一些动态的东西。最常见的是应用场景是动态网页,我们知道一些网页大部分内 ...
问题:Roller提供一个共享主题功能,如果很多人使用同一个共享主题,那么这个主题页面硬编码的东西(比如图片、公告等等)是不是都一样了?当然,如果是高级用户的话解决这个问题不是难题。
解决方法:将硬编码的内容初始化和参数化。比如图片的url等。在Ro2er中,已经开发了一个用户自定义参数功能,用户在此功能中设置的参数可以在页面通过$text.value("key")得到value。
另外,要初始化。当用户切换主题时,自动把主题相关的自定义参数化保存到参数表中,那么页面才能取得参数化。初始化在theme.xml中添加一些内容:
<userpara ...
如何界定恶意评论?Roller使用三个变量来判定,分别是:
1、用户的ip;
2、单位时间;
3、单位时间内评论的最大次数;
如果某个ip在单位时间内评论的次数大于指定的值,则将此ip加入黑名单。
实现过程如下:
在Roller中,关于评论处理是通过一个CommentServlet来处理的,CommentServlet在握住一个GenericThrottle对象,CommentServlet初始化时,读入上面所说的两个变量:单位时间和最大评论次数。
GenericThrottle类的作用是创建一个缓存,将每次提交的请求根据ip地址记录一次,并累计和缓存起来。
...
最近研究Roller的任务调度设计,自己也照猫和老虎写了个任务实现类,总发现我的任务总有问题:
如果设置为30分钟跑一次,总是不按照规则来。
跟踪了代码发现Roller登记租期的时候没有提交事务,导致释放租期的时候异常 ...
背景
以前看过Roller的任务调度,最近需要用到。虽然任务调度这方面的第三方支持包不少,比如quartz,但也不想那么麻烦加入这么重量级的框架。也不知道为什么Roller的设计不用quartz之类的调度框架,也许Roller项目开始的quartz还没有成熟吧。这些就无法去管了,问题是Roller的任务调度如果不是经常使用,很快就忘记了,所以决定以本文记录一下,以后参考。
类图
停了一段时间没有弄Roller了,好在之前写了一些东西,重新拾起来还是比较方便!最让人困惑的问题是roller的页面展现了。
总是按照原来的思维来看roller对页面的处理,所以总是很困惑。
总的来看,roller对博客页面的请求处理是这样的:
1、WeblogRequestMapper负责处理uri映射 、分析、转发;
2、PageServlet负责组织数据、查找volocity模板、缓存页面
3、通过vm模板展现数据。
每个页面都可以通过weblog对象来调用其他服务获取需要的数据,关键是怎么定位模板和缓存。
对java mail不是很熟悉,好久没有摆弄Roller了,之前也是能调出让Roller发邮件的,但不知道怎么回事忘记了。今天特别整了一下,也不知道是不是Roller的bug,反正经过我的修改能发邮件了,哈哈。
在MailUtil类的中:
1、
public static void sendMessage
(
String from,
String[] to,
String[] cc,
String[] bcc,
String s ...
roller使用acegi做为其认证模块,acegi是比较成功的一个安全与认证模块,相信很多项目中都有使用到。但是有些项目有自己的认证模块又想集成roller做二次开发,这时可能acegi是必须砍掉的。
下面说说如何简单去掉acegi,呵呵,不是很彻底!
通过搜索roller源代码,发现好几个类引用到acegi的东西,导致roller跟acegi耦合太强!roller启动时RollerContext必须被加载,这个类继承spring的ContextLoaderListener,所以roller启动的时候会去加载spring的配置文件。不想说那么多了,先说怎么做吧。
1、在 ...
由于很忙,主要是在roller上做二次开发,一直没有时间总结一下心得。有很多内容想记录下来,但感觉太多,太乱,没有很好的组织,一直就放着。今天简单说一下吧,希望对别人有点帮助。
如果你用roller做个博客网站,那么原来的主题模板肯定是不够用的,而且给你的业务没有关系,用起来那是相当的别扭。那么,如何为roller增加新的主题呢?下面就step-by-step吧。
这里说的是增加roller的共享主题,其他的就不说了。