2008-07-23

the jsp-config trap

There will be conflict if configure the servlet and jsp-config the same pattern as below :

<servlet-mapping>
  <url-pattern>/system/*</url-pattern>
</servlet-mapping>

<jsp-property-group>
  <url-pattern>/system/*</url-pattern>

if a request came, "/system/watch" for example, Tomcat will pass the request to the jsp container,
since jsp container cannot found any jsp fit this request, an http 404 would be returned.

I spent 3 hours and worked it out. here i list out some related resource :
1. the request process diagram
http://tomcat.apache.org/tomcat-6.0-doc/architecture/requestProcess.html
2. org.apache.catalina.core.StandardContext  : how the war context was loaded.

2008-05-23

控制Bundle的启动

在开放RCP程序时, 由于ActivationPolicy的存在(这是个优点, 保证OSGi只加载需要的Bundle), spring的osgi-extender并不能自动start, 这导致所有基于spring-osgi的bundle只能愣在那起不了作用.

启动osgi-extender的方法是: 在config.ini里的osgi.bundles项里, 加入

org.springframework.bundle.osgi.extender@start

这个OSGi能识别并且确保会执行Activator.start()方法.
目前, 俺仅找到这么一个方式被证明是正确的, 之前也尝试过写另一个Bundle来激活它, 可那个bundle本身都没被激活...
小发现: osgi.extender被start过一次后(通过console), 之后每次都会自动启动.
小小发现: org.eclipse.update.configurator不依赖于org.eclipse.update.core, 并且, 是它负责启动plugins/目录下的所有插件, 这就是为啥它的启动顺序排第三:

org.eclipse.update.configurator@3:start


2008-05-16

Eclipse Monkey -- Eclipse 的脚本

Eclipse Monkey 是Dash下的兴趣项目, 由Aptana贡献,提供给Eclipse插件开发者使用。

它是用javascript书写的, 用来支持在Eclipse运行时期执行一些操作, 就像可以通过Firebug提供的JS输入接口可以窥探页面DOM信息,  Eclipse Monkey可以访问整个运行时的上下文,  比如获得当前选中的Editor并插入一段数字,  激活/停止某个bundle/plugin.

1.安装与运行
通过update site , 安装后重启. 在菜单栏会出现"script"项, 选sample, 会自动在生成出一些sample脚本. 然后再看菜单栏的"script"项, 就会看到sample脚本已经可以执行了.如果想写自己的脚本, 就复制任意一个sample, 然后选"script"项下的"paste new script"
2.语法与规则
注意文件最上几行的注释是元数据, 譬如Menu, Listener, DOM等, 不能省略.一般情况下main方法是执行入口, 如果是listener, 则依赖所触发的事件去调用相应的方法.
DOM里有已经定义好的对象, 比如editors, views等. 如获得当前激活的Editor的代码就是:
var ae = editors.activEditor;
这个不好用, 限制太多. 通过Packages就非常灵活了.Packages后面跟类的全限定名, 就能访问到这个类, 俺的喜好, 从Packages.org.eclipse.core.runtime.Platform基本上什么都能访问到.
Listener可以监听并执行脚本, 比如键盘监听, Editor/View被选中的监听.
3.延伸阅读
Aptana在EclipseCon的PPT以及Demo代码

2008-04-03

通过电脑收发短信

基本结构是, 用电脑控制手机收发短信.

手机收发短信, 就象电脑上网需要一个猫一样, 也有一个"GSM-modem". 插入SIM卡后, 就相当于给猫输入了用户名, 密码, 然后就可以打电话/发短信了.

电脑与手机的数据传输, GSM在这方面有个规范, 叫做"AT", 所有与"GSM-modem"的交互都是在这个协议上进行的. 在编程层次上, 这属于串口编程

大概流程是这样的

Nokia的手机除了早期出品的外, 基本上都可以通过pc suite实现这个功能, 它封装了这些交互细节. 我用的nokia 1116, 不被pc suite支持, 接口规范用的是FBUS, 在nokia官方网站上找不到相应的驱动程序, 不过有第三方的, 叫做"mobiMB".有破解版.

市面上, 有种东西叫做"短信猫" , 基本上就是这个意思. 不用自己去diy了 :)

2008-01-07

TPTP agent-controller 配置

 配置AgentController以profilejava程序.(用eclipse callisto版本的tptp)
先设置AGENT_HOME=D:\dev\eclipseCallisto\plugins\org.eclipse.hyades.execution.win32.x86_4.2.2.v200701141614
然后在jboss启动里加上下面的参数:
-XrunpiAgent:server=standalone,filters=tptp.profile.filters.txt,file=profilejboss.trcxml
启动程序, 然后打开eclipse, 通过远程方式连1002端口就可以了.

其中tptp.profile.filters.txt是用来过滤profile的对象的, 内容/格式如下:
com.eha.*   *    include
*           *    exclude
包名   函数名  过滤掉/包含

其中profilejboss.trcxml是在"standalone"模式下, 收集的数据, 这个可以被eclipse tptp打开.

最后说一下agent:server的4种模式:standalone, enabled, controlled, application
stantalone, 不需要通过eclipse做什么事, 完全独立运行, 最后会得出一个*.trcxml文件, 保存了profile的数据.
enabled, 默认的, 只有客户端请求时才采集数据, 否则什么也不做.
controlled, 加载agent的时候会暂停正常的java程序, 直到有客户端连上agent:server为止才恢复java程序运行.
application, 跟enabled没啥区别.
除了standalone模式外, 其它的都只根据请求产生xml片断(fragment).