六月 2009


javaee24 六 2009 11:36 上午

1,首先WAS6.1要升级到6.1.0.3或以上。
2,在WAS Console -> Application Servers -> <SERVER> -> Web Container Settings -> Web Container -> Custom Properties里,增加一个custom property,名字为com.ibm.ws.webcontainer.invokefilterscompatibility,值为true。
3、在WEB-INF/classes/struts.xml的配置文件里
<constant name=”struts.devMode” value=”false” />原来是true改为false

报错信息
[09-6-24 11:23:26:656 CST] 00000033 WebApp        E   [Servlet Error]-[/index.jsp]: java.lang.NullPointerException
at com.opensymphony.xwork2.util.FileManager$FileRevision.needsReloading(FileManager.java:209)
at com.opensymphony.xwork2.util.FileManager.fileNeedsReloading(FileManager.java:60)
at com.opensymphony.xwork2.config.providers.XmlConfigurationProvider.needsReload(XmlConfigurationProvider.java:325)
at org.apache.struts2.config.StrutsXmlConfigurationProvider.needsReload(StrutsXmlConfigurationProvider.java:168)
at com.opensymphony.xwork2.config.ConfigurationManager.conditionalReload(ConfigurationManager.java:220)
at com.opensymphony.xwork2.config.ConfigurationManager.getConfiguration(ConfigurationManager.java:61)
at org.apache.struts2.dispatcher.Dispatcher.getContainer(Dispatcher.java:774)
at org.apache.struts2.dispatcher.ng.PrepareOperations.createActionContext(PrepareOperations.java:74)
at org.apache.struts2.dispatcher.ng.filter.StrutsPrepareFilter.doFilter(StrutsPrepareFilter.java:59)
at com.ibm.ws.webcontainer.filter.FilterInstanceWrapper.doFilter(FilterInstanceWrapper.java:190)
at com.ibm.ws.webcontainer.filter.WebAppFilterChain.doFilter(WebAppFilterChain.java:130)
at com.ibm.ws.webcontainer.filter.WebAppFilterChain._doFilter(WebAppFilterChain.java:87)
at com.ibm.ws.webcontainer.filter.WebAppFilterManager.doFilter(WebAppFilterManager.java:832)
at com.ibm.ws.webcontainer.filter.WebAppFilterManager.doFilter(WebAppFilterManager.java:679)
at com.ibm.ws.webcontainer.servlet.ServletWrapper.handleRequest(ServletWrapper.java:566)
at com.ibm.ws.wswebcontainer.servlet.ServletWrapper.handleRequest(ServletWrapper.java:478)
at com.ibm.wsspi.webcontainer.servlet.GenericServletWrapper.handleRequest(GenericServletWrapper.java:122)
at com.ibm.ws.jsp.webcontainerext.AbstractJSPExtensionServletWrapper.handleRequest(AbstractJSPExtensionServletWrapper.java:226)
at com.ibm.ws.jsp.webcontainerext.AbstractJSPExtensionProcessor.handleRequest(AbstractJSPExtensionProcessor.java:285)
at com.ibm.ws.webcontainer.webapp.WebApp.handleRequest(WebApp.java:3444)
at com.ibm.ws.webcontainer.webapp.WebGroup.handleRequest(WebGroup.java:267)
at com.ibm.ws.webcontainer.WebContainer.handleRequest(WebContainer.java:815)
at com.ibm.ws.wswebcontainer.WebContainer.handleRequest(WebContainer.java:1466)
at com.ibm.ws.webcontainer.channel.WCChannelLink.ready(WCChannelLink.java:119)
at com.ibm.ws.http.channel.inbound.impl.HttpInboundLink.handleDiscrimination(HttpInboundLink.java:458)
at com.ibm.ws.http.channel.inbound.impl.HttpInboundLink.handleNewInformation(HttpInboundLink.java:387)
at com.ibm.ws.http.channel.inbound.impl.HttpInboundLink.ready(HttpInboundLink.java:267)
at com.ibm.ws.tcp.channel.impl.NewConnectionInitialReadCallback.sendToDiscriminators(NewConnectionInitialReadCallback.java:214)
at com.ibm.ws.tcp.channel.impl.NewConnectionInitialReadCallback.complete(NewConnectionInitialReadCallback.java:113)
at com.ibm.ws.tcp.channel.impl.AioReadCompletionListener.futureCompleted(AioReadCompletionListener.java:165)
at com.ibm.io.async.AbstractAsyncFuture.invokeCallback(AbstractAsyncFuture.java:217)
at com.ibm.io.async.AsyncChannelFuture.fireCompletionActions(AsyncChannelFuture.java:161)
at com.ibm.io.async.AsyncFuture.completed(AsyncFuture.java:136)
at com.ibm.io.async.ResultHandler.complete(ResultHandler.java:195)
at com.ibm.io.async.ResultHandler.runEventProcessingLoop(ResultHandler.java:743)
at com.ibm.io.async.ResultHandler$2.run(ResultHandler.java:873)
at com.ibm.ws.util.ThreadPool$Worker.run(ThreadPool.java:1473)

javaee24 六 2009 09:04 上午

YAML试图用一种比XML更敏捷的方式,来完成XML所完成的任务。其中JYaml(http://jyaml.sourceforge.net)是YAML的Java实现。yaml在perl、python、php中都有广泛的应用。

JSON(JavaScript Object Notation) 是一种轻量级的数据交换格式。易于人阅读和编写。同时也易于机器解析和生成。它基于JavaScript Programming Language, Standard ECMA-262 3rd Edition – December 1999的一个子集。 JSON采用完全独立于语言的文本格式,但是也使用了类似于C语言家族的习惯(包括C, C++, C#, Java, JavaScript, Perl, Python等)。这些特性使JSON成为理想的数据交换语言。

Protocol Buffers – Google’s data interchange format

Protocol Buffers被定义为一种数据描述语言(Data Description Language,DDL),广泛的应用于Google内部,用于结构化数据的描述、传输和存储。尽管其功能和用途与XML基本相似,但是 Protocol Buffers更为轻便。Google宣称其效率对于XML有很大提升,文本比XML要小3-10倍,而解析效率却提升至20-100倍。

http://www.infoq.com/cn/news/2008/07/google-protobuf

http://www.json.org/json-zh.html

http://www.ibm.com/developerworks/cn/xml/x-cn-yamlintro/

javaee24 六 2009 08:54 上午

Textile首先是一种标签语言,说白了就是用非html标签来表示html。

Textile is a lightweight markup language originally developed by Dean Allen and billed as a “humane Web text generator”. Textile converts its marked-up text input to valid, well-formed XHTML and also inserts character entity references for apostrophes, opening and closing single and double quotation marks, ellipses and em dashes.

Textile was originally implemented in PHP, but has been translated into other programming languages including Perl, Python, Ruby, ASP, Java and C#.

Textile is distributed under a BSD-style license and is included with, or available as a plugin for, several content-management systems.

Version 2.0 beta was released in 2004 as part of the Textpattern content management system.

Version 2.0 was released in 2006.

http://en.wikipedia.org/wiki/Textile_(markup_language)

Textile Homepage

javaee22 六 2009 11:36 上午

解决windows下subclipse穿过代理连接subversion服务器
1、cmd命令提示符输入 echo %APPDATA%
2、进入第一步输出的目录下,并找到Subversion目录(如C:\Documents and Settings\Administrator\Application Data\Subversion),注意此目录为隐藏目录。
3、在servers文件中的最后[global]后增加

http-proxy-host =192.168.1.1
http-proxy-port =80
http-proxy-username =username
http-proxy-password =password

参考资料

http://java.chinaitlab.com/Eclipse/761503.html

http://subversion.tigris.org/faq.html#proxy

javaee22 六 2009 09:18 上午

This pair of Javascript function can get or set the checked value of a group of radio buttons. These functions are specially designed for dynamic pages, and work without error with zero, one, or more radio buttons. Also, because the radio length is saved before looping, this function is much faster. Finally, the functions are granted to the public domain.
Source Code

// return the value of the radio button that is checked
// return an empty string if none are checked, or
// there are no radio buttons
function getCheckedValue(radioObj) {
if(!radioObj)
return “”;
var radioLength = radioObj.length;
if(radioLength == undefined)
if(radioObj.checked)
return radioObj.value;
else
return “”;
for(var i = 0; i < radioLength; i++) {
if(radioObj[i].checked) {
return radioObj[i].value;
}
}
return “”;
}

// set the radio button with the given value as being checked
// do nothing if there are no radio buttons
// if the given value does not exist, all the radio buttons
// are reset to unchecked
function setCheckedValue(radioObj, newValue) {
if(!radioObj)
return;
var radioLength = radioObj.length;
if(radioLength == undefined) {
radioObj.checked = (radioObj.value == newValue.toString());
return;
}
for(var i = 0; i < radioLength; i++) {
radioObj[i].checked = false;
if(radioObj[i].value == newValue.toString()) {
radioObj[i].checked = true;
}
}
}

原帖http://www.somacon.com/p143.php

javaee and spring and weblogic21 六 2009 06:36 下午

第1步
开发基于POJI的POJO的业务实现,最基本的我们经常那么干的

第2步
使用Spring的xml解耦合这些POJO实现
产生applicationContext-datasource.xml 等

第3步
消息驱动Bean开发继承自org.springframework.ejb.support.AbstractMessageDrivenBean
给消息驱动Bean注入第二步的Beanfactory,在onMessage(Message message)中调用beanFactory中的
POJO实现业务处理,消息驱动Bean是Spring工厂的消费类。

第4步
部署消息驱动Bean,消息驱动Bean是JMS的消息处理Bean

第5步
书写特定容器的配置文件绑定JNDI

附开发实例文件如下

weblogic-ejb-jar.xml
<?xml version=”1.0″ encoding=”UTF-8″?>
<!DOCTYPE weblogic-ejb-jar PUBLIC “-//BEA Systems, Inc.//DTD WebLogic 8.1.0 EJB//EN” “http://www.bea.com/servers/wls810/dtd/weblogic-ejb-jar.dtd”>
<weblogic-ejb-jar>
<description>Test</description>
<weblogic-enterprise-bean>
<ejb-name>MyMessageDrivenBean</ejb-name>
<message-driven-descriptor>
<pool>
<max-beans-in-free-pool>8</max-beans-in-free-pool>
<initial-beans-in-free-pool>1</initial-beans-in-free-pool>
</pool>
<destination-jndi-name>jms/DestMyMessageQueue</destination-jndi-name>
<initial-context-factory>weblogic.jndi.WLInitialContextFactory</initial-context-factory>
<provider-url>t3://localhost:7001</provider-url>
<!– 如果JMS和EJB容器不在一台机器上指定该JMS provider-url–>
<connection-factory-jndi-name>jms/MyMessageDrivenBean</connection-factory-jndi-name>
<jms-polling-interval-seconds>10</jms-polling-interval-seconds>
<!–jms-client-id>myMessageDrivenBean</jms-client-id–>
</message-driven-descriptor>
</weblogic-enterprise-bean>
</weblogic-ejb-jar>

META-INF/ejb-jar.xml
<?xml version=”1.0″ encoding=”UTF-8″?>
<!DOCTYPE ejb-jar PUBLIC “-//Sun Microsystems, Inc.//DTD Enterprise JavaBeans 2.0//EN” “http://java.sun.com/dtd/ejb-jar_2_0.dtd”>
<ejb-jar id=”ejb-jar_1″>
<description>ejb</description>
<display-name>ejb</display-name>
<enterprise-beans>
<message-driven id=”MessageDriven_1″>
<description>MyMessageDrivenBean</description>
<display-name>Name for MyMessageDrivenBean</display-name>
<ejb-name>MyMessageDrivenBean</ejb-name>
<ejb-class>service.MyMessageDrivenBean</ejb-class>
<transaction-type>Bean</transaction-type>
<message-driven-destination>
<destination-type>javax.jms.Queue</destination-type>
</message-driven-destination>
</message-driven>
</enterprise-beans>
<assembly-descriptor id=”AssemblyDescriptor_1″>
</assembly-descriptor>
</ejb-jar>

消息驱动Bean加载所需要的POJObeanFactory的Bean资源
beanRefContext.xml

<bean id=”businessBeanFactory”
>
<constructor-arg>
<list>
<value>applicationContext-datasource.xml</value>
<value>applicationContext.xml</value>
<value>applicationContext-service.xml</value>
</list>
</constructor-arg>
</bean>

消息驱动Bean
MyMessageDrivenBean.java

package service;

import javax.ejb.MessageDrivenBean;
import javax.ejb.MessageDrivenContext;
import javax.jms.JMSException;
import javax.jms.Message;
import javax.jms.MessageListener;
import javax.jms.ObjectMessage;
import javax.jms.TextMessage;

import org.apache.commons.logging.Log;
import org.apache.commons.logging.LogFactory;
import org.springframework.context.access.ContextSingletonBeanFactoryLocator;
import org.springframework.ejb.support.AbstractMessageDrivenBean;

public class MyMessageDrivenBean extends AbstractMessageDrivenBean implements
MessageDrivenBean, MessageListener {

private static final long serialVersionUID = 7819604050800044554L;

private static Log log = LogFactory.getLog(MyMessageDrivenBean.class); // log

/**
* for spring inject this property
*/
private MessageHandelService messageHandelService;

public MessageHandelService getMessageHandelService() {
return messageHandelService;
}

public void setMessageHandelService(
MessageHandelService messageHandelService) {
this.messageHandelService = messageHandelService;
}

protected void onEjbCreate() {
this.setMessageHandelService((MessageHandelService) getBeanFactory()
.getBean(“messageHandelService”));
/**
* 从spring 工厂bean中得到需要的业务实现,业务实现是基于POJI的POJO实现
* 本身消息驱动Bean只负责暴露接口JNDI来接受JMS的Queue并调用POJI的POJO实现处理业务逻辑
* 就是真正的业务逻辑是写在POJO中实现的 消息驱动Bean相对于Spring来说是Bean消费者
*/
}

public void onMessage(Message message) {

if (message instanceof ObjectMessage) { // 如果接受的消息是序列化后的对象,直接强制转换
ObjectMessage objMessage = (ObjectMessage) message;
MyDomain model = null;
try {
model = (MyDomain) objMessage.getObject();
} catch (JMSException e) {
e.printStackTrace();
}
}
// 业务处理调用接口
this.getMessageHandelService().doFoo();

if (message instanceof TextMessage) {

}

}

public void setMessageDrivenContext(
MessageDrivenContext messageDrivenContext) {
super.setMessageDrivenContext(messageDrivenContext);
setBeanFactoryLocator(ContextSingletonBeanFactoryLocator.getInstance());// 指定默认的beanRefContext.xml
setBeanFactoryLocatorKey(“businessBeanFactory”);
}

}

javaee21 六 2009 06:31 下午

JAVA 竖线|转义字符 |

在使用String.split方法分隔字符串时,分隔符如果用到一些特殊字符,可能会得不到我们预期的结果。

public String[] split(String regex)
Splits this string around matches of the given regular expression.
参数regex是一个 regular-expression的匹配模式而不是一个简单的String,他对一些特殊的字符可能会出现你预想不到的结果,比如测试下面的代码:

用竖线 | 分隔字符串,你将得不到预期的结果

String[] aa = “aaa|bbb|ccc”.split(“|”);
//String[] aa = “aaa|bbb|ccc”.split(“|”); 这样才能得到正确的结果

for (int i = 0 ; i <aa.length ; i++ ) {
System.out.println(“–”+aa);
}

用竖 * 分隔字符串运行将抛出java.util.regex.PatternSyntaxException异常,用加号 + 也是如此。

String[] aa = “aaa*bbb*ccc”.split(“*”);
//String[] aa = “aaa|bbb|ccc”.split(“*”); 这样才能得到正确的结果

for (int i = 0 ; i <aa.length ; i++ ) {
System.out.println(“–”+aa);
}

显然,+ * 不是有效的模式匹配规则表达式,用”*” “+”转义后即可得到正确的结果。

“|” 分隔串时虽然能够执行,但是却不是预期的目的,”|”转义后即可得到正确的结果。

还有如果想在串中使用”"字符,则也需要转义.首先要表达”aaaabbbb”这个串就应该用”aaaabbbb”,如果要分隔就应该这样才能得到正确结果:

String[] aa = “aaabbbbccc”.split(“”);

原帖子http://www.ziki.cn/blog/archives/1174816638.html

about-site21 六 2009 05:50 下午

dreamhostapps的wordpress升级到2.8啦,本博客(blog.baimusenlin.com)使用的dreamhostapps的免费的wordpress程序。虽然模板少了点又不能自己upload,虽然插件少了点又不能自己upload,但已经足够强大了,访问速度还不慢。免费的午餐我们还能对它有什么要求呢?

soft21 六 2009 12:55 下午

呵呵,成功办理动感地带预存300送150花费,预存300元,从下个月结日起,分12个月返还,每月返还25元,进入号码基本账户;赠送150元,从第13个月起,分6个月赠送,每月赠送25元,进入号码的赠送账户。

广州移动沟通100服务大厅

天河区
1.东圃营业厅 中山大道中433号鸫银商业大厦101、102铺(东圃大马路北面)
2.天河北路中信服务厅 天河北路中信广场2楼213、216铺
3.黄埔大道中营业厅 天河区黄埔大道中219号粤韵庭苑首层104号商铺
4.天河北芳草园营业厅 广州市天河区天河北路579号之一东侧芳草园首层3号
5.沙河龙洞营业厅 沙河镇龙眼洞商业广场龙涛货仓商场二楼
6.五山路服务厅 华南农业大学茶山小区9-10号首层(五山邮政局旁)
7.粤垦路服务厅 粤垦路620号之一、之二、之三后部(金燕花园首层)
8.广园东路服务厅 广州市天河区广园东路金贵东街1号楼208-308号商铺(农业银行旁、金贵加油站对面)
9.黄埔大道西 广州市天河区黄埔大道西459号首层(国防大厦往西,芯连芯电子城西侧20米)
10.龙口西路服务厅 龙口西路1号天利广场首层西南部
11.沙河服务厅 先烈东路310-316号一处春大厦首层东北部
12.体育西路服务厅 体育西路57号广东省工商行政管理局综合楼首层北侧
13.中山大道西棠下服务厅 中山大道西491号棠下棠利大厦首层
东山区
14.润粤服务厅 天河路13号润粤大厦
15.天星服务厅 梅东路62号
16.东湖西路服务厅 东湖西路45-47号首层
17.农林下路新裕营业厅 农林下路81号新裕大厦首层大堂
18.建设大马路营业厅 建设大马路8号(逸雅居)103A铺
19.中山三路服务厅 中山三路121号首层
20.文德路金德大厦服务厅 文德路67—69号(金德大厦首层北铺)
21.达道路金达大厦服务厅 达道路12号金达大厦首层
22.动感地带地王广场店 较场西路18号地王广场负一 层1038铺
23.动感地带广东工业大学店 广东工业大学本部北院学生宿舍4栋101房
越秀区 24.东风中路交易广场 东风中路268号广东省信通信产品交易广场104/105铺
25.大德路金艺大厦服务厅 大德318号金艺大厦首层
26.中山五路中旅 中山五路219号中旅商业城110/111铺
27.东风西路嘉和苑服务厅 东风西路148号嘉和苑首层7-8号铺
28.环市西营业厅 环市西路151号首层(原市集邮公司)
29.中山六路服务厅 中山六路325号首层(回民饭店旁)
30.北京路青年文化宫 北京路312号青年文化宫南门二楼
荔湾区
31.环市西路西湾 西湾路80-86号羊城西湾大厦首层
32.沿江西路西堤服务厅 沿江西路43号市邮政集邮公司营业厅
33.中山八路服务厅 中山八路27号富力商贸大厦1号铺
34.长寿西路文昌阁服务厅 荔湾区长寿西路80号103铺
海珠区
35.新港西路服务厅 海珠区新港西路235号愉景雅园首层西侧
36.宝岗大道南北广场服务厅 宝岗大道南北广场首层09、10号铺
37.江南大道中营业厅 广州市江南大道中153号中联数码科技广场A004、005铺
38.新港中路赤岗服务厅 新港中路535号117、118铺
39.工业大道中营业厅 工业大道中385号(保利百合花园前行50米)
40.江南大道南保华商城服务厅 江南大道南362号保华商城首层
41.晓港湾服务厅 南洲路北晓港湾英华街65-67号惠侨苑首层19、20号铺位
42.新港西路中大服务厅 新港西路146号顺华名庭首层
43.江南西江南花园服务厅 宝业路8号(江南西路与宝岗大道交界处西侧)
44.动感地带中山大学店 中山大学东北区346栋首层西侧
白云区 45.广园中路服务厅 广州市白云区广园中路203-207号河北大厦首层
46.同德围服务厅 西槎路同雅苑同雅街10号
47.江高服务厅 广州市白云区江高镇江同路149号美华商场首层(即江村工行侧)
48.钟落潭服务厅 广州市白云区钟落潭镇福龙路桥东北侧34号
49.太和服务厅 太和镇和乐路珊景新村和乐楼98、100号
50.解放北路金桂服务厅 解放北路1416号金桂园云华阁首层
51.人和镇服务厅 人和镇人和大马路兴达大厦北面3-4号
52.新市服务厅 机场路1003号(原广花五路厅)
53.同和中服务厅 广州大道北1421号圣地大厦首层102-11~17
54.石井镇服务厅 石井镇石潭路90号商铺
55.神山服务厅 神山镇神山大道西63号首层
56.增槎路螺涌围服务厅 增槎路12号(螺涌围)首层104铺
57.龙归服务厅 龙归镇兴龙路龙华花园首层北侧
59.良田服务厅 良田镇良城三路1~3号
60.嘉禾服务厅 旧广花路嘉禾路段望江村嘉禾街社区服务中心北侧自编1号
芳村区
61.芳村大道中服务厅 芳村大道中242号首层
黄埔区
62.黄埔大沙东服务厅 黄埔大沙东路3号首层西侧商铺
63.开发区青年路服务厅 开发区青年路124、126号
64.萝岗镇服务厅 萝岗镇萝岗圩荔红路2号


soft19 六 2009 10:09 下午

这几日了解了一下车,个人比较喜欢mpv,呵呵这种车现在比较趋向于家轿化,有个好听的名字大两厢车,以后买车就买这种吧,能装很多人呀,实用,售价在15w以内,如江淮瑞风,广本奥德赛, 海马H2,陆风风尚 ,东风日产骏逸,东风风行,长安杰勋等。大发森雅,虽然便宜,但汽车保有量少。在中国市场上由于底盘的不同以及尺寸的差异,分为大MPV和小MPV。大MPV为客车底盘,小MPV为轿车底盘;但是由于尺寸及功能的原因,别克GL8及广本奥德赛还是归到大MPV的阵营。 小MPV阵营中,普力马成为了当中的龙头老大。真希望森雅能有个好的发展啊,能够基于家轿的平台啊,你也知道中国人又要便宜,又爱面子,总不能跟个面包车似的吧。

广本奥德赛的外形和内饰都很棒,可就是价格高啊。mpv属于小众车,要是价格能在降到10w以内就好了。

http://auto.sohu.com/MPV/

http://blog.sina.com.cn/s/blog_4c109e7c010006zd.html

http://blog.sina.com.cn/s/blog_46be8d390100bsvb.html

下一页 »