<?xml version="1.0" encoding="UTF-8" ?>
<rss version="2.0">
  <channel>
    <title>Foxswily</title>
    <description></description>
    <link>http://foxswily.javaeye.com</link>
    <language>UTF-8</language>
    <copyright>Copyright 2003-2008, JavaEye.com</copyright>
    <docs>http://blogs.law.harvard.edu/tech/rss</docs>
    <generator>JavaEye - 做最棒的软件开发交流社区</generator>
      <item>
        <title>还是把文章留到自己的博客吧</title>
        <author>Foxswily</author>
        <description>
          <![CDATA[
          <br/>
          作者: <a href="http://foxswily.javaeye.com">Foxswily</a>&nbsp;
          链接：<a href="http://foxswily.javaeye.com/blog/223682" style="color:red;">http://foxswily.javaeye.com/blog/223682</a>&nbsp;
          发表时间: 2008年08月03日
          <br/><br/>
          声明：本文系JavaEye网站发布的原创博客文章，未经作者书面许可，严禁任何网站转载本文，否则必将追究法律责任！
          <br/><br/>
          讨论redirect with data 的帖子竟然成了新手帖，看来这么“弱智”的问题难登大雅之堂，正经版面要留给大侠们发博大精深的精品呢。还是把文章留到自己的博客得了。<br />    对比在国外论坛、新闻组的讨论方式，国内的风气还是英雄崇拜式的。套用郭德纲的话，你什么门户，师父是谁？没门户也想搞技术？死去吧你。<img src="/images/smiles/icon_biggrin.gif"/>
          <br/>
          <span style="color:red;">
            <a href="http://foxswily.javaeye.com/blog/223682#comments" style="color:red;">本文的讨论也很精彩，浏览讨论>></a>
          </span>
          <br/><br/><br/>
          <span style="color:#E28822;">JavaEye推荐</span>
          <br/>
          <ul class='adverts'><li><a href='/adverts/42' target='_blank'><span style="color:red;font-weight:bold;">搜狐网站诚聘Java、PHP和C++工程师</span></a></li><li><a href='/adverts/41' target='_blank'><span style="color:red;font-weight:bold;">北京: 千橡集团暨校内网诚聘软件研发工程师</span></a></li></ul>
          <br/><br/><br/>
          ]]>
        </description>
        <pubDate>Sun, 03 Aug 2008 22:03:27 +0800</pubDate>
        <link>http://foxswily.javaeye.com/blog/223682</link>
        <guid>http://foxswily.javaeye.com/blog/223682</guid>
      </item>
      <item>
        <title>FreeMarker验证xml、tld报错</title>
        <author>Foxswily</author>
        <description>
          <![CDATA[
          <br/>
          作者: <a href="http://foxswily.javaeye.com">Foxswily</a>&nbsp;
          链接：<a href="http://foxswily.javaeye.com/blog/179331" style="color:red;">http://foxswily.javaeye.com/blog/179331</a>&nbsp;
          发表时间: 2008年04月03日
          <br/><br/>
          声明：本文系JavaEye网站发布的原创博客文章，未经作者书面许可，严禁任何网站转载本文，否则必将追究法律责任！
          <br/><br/>
          一个小的web应用，使用了Stripes+FreeMarker，打开ftl文件时Tomcat了一堆xml文件格式错误，其中包括web.xml和tld的错误。追查了半天，确定是Freemarker造成的。最初修改了log配置，把FreeMarker的错误屏蔽掉，结果发现，这个错误直接报到Tomcat去了。没办法，查Freemarker的代码freemarker.ext.jsp.TaglibFactory中379行<br /><pre name="code" class="java">	factory.setValidating(true);</pre><br />这里设置了校验，而且没有默认的ErrorHandler，没时间细追查，简单粗暴的把这里的校验关掉，世界安静了。<br />遗留问题：<br />Freemarker管的面太宽了，classpath内的东西都要伸手，这点很烦很郁闷。<br />如果设置ErrorHandler应该可以捕获错误，转而输出到指定的log上。<br />web.xml明明没有错误，服务运行的好好的，用jsp做前端一切正常，为什么Freemarker会校验错误？Servlet 2.4标准改用xml schema造成的？tld同样。
          <br/>
          <span style="color:red;">
            <a href="http://foxswily.javaeye.com/blog/179331#comments" style="color:red;">本文的讨论也很精彩，浏览讨论>></a>
          </span>
          <br/><br/><br/>
          <span style="color:#E28822;">JavaEye推荐</span>
          <br/>
          <ul class='adverts'><li><a href='/adverts/41' target='_blank'><span style="color:red;font-weight:bold;">北京: 千橡集团暨校内网诚聘软件研发工程师</span></a></li><li><a href='/adverts/42' target='_blank'><span style="color:red;font-weight:bold;">搜狐网站诚聘Java、PHP和C++工程师</span></a></li></ul>
          <br/><br/><br/>
          ]]>
        </description>
        <pubDate>Thu, 03 Apr 2008 17:25:22 +0800</pubDate>
        <link>http://foxswily.javaeye.com/blog/179331</link>
        <guid>http://foxswily.javaeye.com/blog/179331</guid>
      </item>
      <item>
        <title>总结DWR的ReverseAjax应用</title>
        <author>Foxswily</author>
        <description>
          <![CDATA[
          <br/>
          作者: <a href="http://foxswily.javaeye.com">Foxswily</a>&nbsp;
          链接：<a href="http://foxswily.javaeye.com/blog/128444" style="color:red;">http://foxswily.javaeye.com/blog/128444</a>&nbsp;
          发表时间: 2007年09月30日
          <br/><br/>
          声明：本文系JavaEye网站发布的原创博客文章，未经作者书面许可，严禁任何网站转载本文，否则必将追究法律责任！
          <br/><br/>
          DWR提供了ReverseAjax技能，也就是服务器端主动更新客户端，或者说推模式。实际是长连接或轮循方式实现。各页面有对应的ScriptSession，用来存放需要发送到页面的内容。需要推到页面时，设置ScriptSession即可。<br />
<br />
实际应用上有些不方便的地方(rq2_79提出此问题在<strong><a href="http://www.javaeye.com/post/387395" target="_blank">http://www.javaeye.com/post/387395</a></strong>)，常规情况只能在DWR公开的方法(dwr.xml内include的方法)内实现。由于WebContext需要DwrServlet创建，所以在DWR公开方法之外的地方WebContextFactory.get();会返回null，无法继续使用。<br />
<br />
DWR使用了准Ioc方式统一创建各功能模块，在DwrServlet中的Container承担此责任，默认为DefaultContainer。在不能得到WebContext的情况下，能直接得到ScriptSessionManager也可以取得最终的ScriptSession。直接new DefaultScriptSessionManager不能得到已经注册的页面，必须通过Container取得。现在问题变成如何取得Container了。DwrServlet有一个public 的getContainer，简单粗暴的改成 staitc，同样，container 也static，一切ok。<br />
在需要推到页面的地方，随便调用吧。<br />
<div class="code_title">java 代码</div>
<div class="dp-highlighter">
<div class="bar">&nbsp;</div>
<ol class="dp-j" start="1">
    <li class="alt"><span><span>Container&nbsp;container&nbsp;=&nbsp;DwrServlet.getContainer();&nbsp;&nbsp;</span></span></li>
    <li class=""><span>ScriptSessionManager&nbsp;ssm&nbsp;=&nbsp;(ScriptSessionManager)&nbsp;container.getBean(ScriptSessionManager.<span class="keyword">class</span><span>.getName());&nbsp;&nbsp;</span></span></li>
    <li class="alt"><span>Collection&lt;ScriptSession&gt;&nbsp;sessions&nbsp;=&nbsp;ssm.getScriptSessionsByPage(<span class="string">&quot;/dwrt/&quot;</span><span>);&nbsp;&nbsp;</span></span></li>
    <li class=""><span>Util&nbsp;utilAll&nbsp;=&nbsp;<span class="keyword">new</span><span>&nbsp;Util(sessions);&nbsp;&nbsp;</span></span></li>
    <li class="alt"><span>ScriptBuffer&nbsp;s&nbsp;=&nbsp;<span class="keyword">new</span><span>&nbsp;ScriptBuffer();&nbsp;&nbsp;</span></span></li>
    <li class=""><span>s.appendScript(<span class="string">&quot;alert(&quot;</span><span>);&nbsp;&nbsp;</span></span></li>
    <li class="alt"><span>s.appendData(<span class="string">&quot;something&nbsp;funny&nbsp;here!&quot;</span><span>);&nbsp;&nbsp;</span></span></li>
    <li class=""><span>s.appendScript(<span class="string">&quot;);&quot;</span><span>);&nbsp;&nbsp;</span></span></li>
    <li class="alt"><span>utilAll.addScript(s);&nbsp;&nbsp;</span></li>
</ol>
</div>
          <br/>
          <span style="color:red;">
            <a href="http://foxswily.javaeye.com/blog/128444#comments" style="color:red;">本文的讨论也很精彩，浏览讨论>></a>
          </span>
          <br/><br/><br/>
          <span style="color:#E28822;">JavaEye推荐</span>
          <br/>
          <ul class='adverts'><li><a href='/adverts/42' target='_blank'><span style="color:red;font-weight:bold;">搜狐网站诚聘Java、PHP和C++工程师</span></a></li><li><a href='/adverts/41' target='_blank'><span style="color:red;font-weight:bold;">北京: 千橡集团暨校内网诚聘软件研发工程师</span></a></li></ul>
          <br/><br/><br/>
          ]]>
        </description>
        <pubDate>Sun, 30 Sep 2007 11:58:00 +0800</pubDate>
        <link>http://foxswily.javaeye.com/blog/128444</link>
        <guid>http://foxswily.javaeye.com/blog/128444</guid>
      </item>
      <item>
        <title>与性能优化相关探索</title>
        <author>Foxswily</author>
        <description>
          <![CDATA[
          <br/>
          作者: <a href="http://foxswily.javaeye.com">Foxswily</a>&nbsp;
          链接：<a href="http://foxswily.javaeye.com/blog/127572" style="color:red;">http://foxswily.javaeye.com/blog/127572</a>&nbsp;
          发表时间: 2007年09月27日
          <br/><br/>
          声明：本文系JavaEye网站发布的原创博客文章，未经作者书面许可，严禁任何网站转载本文，否则必将追究法律责任！
          <br/><br/>
          用纯html+DWR(ver 2.0.1)做了个小站，由于基本上都是单机在跑，不怎么关注带宽等等限制(图片几百k的都有)。总算有时间简单优化一下，在做request、respose压缩的时候，想起来dwr的js部分自带个压缩参数，在Tomcat端压缩的基础上还能再优化一点。web.xml里加上这个启动参数。<br /><br /><pre name="code" class="java">  &lt;init-param>
     &lt;param-name>scriptCompressed&lt;/param-name>
     &lt;param-value>true&lt;/param-value>
  &lt;/init-param>
</pre><br /><br />能看到传过来的js去掉了注释和一些空格，进一步在dwr网站帮助里发现隐藏参数compressionLevel，参考org.directwebremoting.util.JavascriptUtil，发现可以进一步压缩js体积。本着能压一点是一点的精神，再增加一个参数<br /><pre name="code" class="java">  &lt;init-param>
     &lt;param-name>compressionLevel&lt;/param-name>
     &lt;param-value>63&lt;/param-value>
  &lt;/init-param>
</pre><br />结果发现报错，细读代码，发现COMPRESS_SHRINK_VARS功能还没有实装，难怪这个参数没有公开出来，跳过这个参数，把param-value改成47，能通过了，页面报错，engine.js util.js都有错误。还好事前看到COMPRESS_REMOVE_NEWLINES里有警告，js中默认会补齐行为缺少的分号，而一旦没有换行符，就会报错。<br />拿来两个js一通改，终于搞定，再开页面，js体积大大减小了。<br /><br />体会：注释很重要，有加注释的习惯绝对是一宝。<br />      不能盲目崇拜，满以为dwr自身警告过的错误自己就不会犯....
          <br/>
          <span style="color:red;">
            <a href="http://foxswily.javaeye.com/blog/127572#comments" style="color:red;">本文的讨论也很精彩，浏览讨论>></a>
          </span>
          <br/><br/><br/>
          <span style="color:#E28822;">JavaEye推荐</span>
          <br/>
          <ul class='adverts'><li><a href='/adverts/41' target='_blank'><span style="color:red;font-weight:bold;">北京: 千橡集团暨校内网诚聘软件研发工程师</span></a></li><li><a href='/adverts/42' target='_blank'><span style="color:red;font-weight:bold;">搜狐网站诚聘Java、PHP和C++工程师</span></a></li></ul>
          <br/><br/><br/>
          ]]>
        </description>
        <pubDate>Thu, 27 Sep 2007 13:46:07 +0800</pubDate>
        <link>http://foxswily.javaeye.com/blog/127572</link>
        <guid>http://foxswily.javaeye.com/blog/127572</guid>
      </item>
  </channel>
</rss>