[答傻姑]如何用eclipse远程调试tomcat

01:38上午 九月 04, 2008 in category General by nile black

问:如何在eclipse远程调试tomcat?
答:先找到tomcat\bin\catalina.bat,在文件开头添加

set JAVA_OPTS=-server -Xdebug -Xnoagent -Djava.compiler=NONE -Xrunjdwp:transport=dt_socket,server=y,suspend=n,address=8888

重启启动Tomcat,在控制台就应该能够看到,下文类似的输出

Listening for transport dt_socket at address: 8888

在eclipse打开debug configurations对话框,新建一个remote debug,配置如下

注意两个端口要一致哦。

Comments[0]

[Groovy]用Groovy写Ant构建

11:02上午 九月 02, 2008 in category Java by nile black

用Ant做Java构建很方便,配置build.xml,build.properties就可以了。但是有些时候我们不得不重复的复制build.xml,不停的在不同的模块中间复制他们。懒人总会有新的办法,Groovy能够让你更懒。闲话不表,直接看一个简单的脚本吧。

class Build{
def project = 'test'
def dist_dir = 'bin'
def lib_dir = 'lib'
def src_dir = 'src'
def file_name = 'test'
def build_dir = 'classes'
def lib_nodeploy = 'lib-nodeploy'
def ant = new AntBuilder()
def build(){
ant.echo("build $project")
ant.mkdir(dir:"$build_dir")
def classpath = ant.path {
fileset(dir: "${lib_dir}"){
include(name: "**/*.jar")
}
fileset(dir: "${lib_nodeploy}"){
include(name: "**/*.jar")
}
}
ant.javac(srcdir:"${src_dir}",destdir:"${build_dir}",includes:'**/*.*',fork:'true',encoding:'UTF-8',classpath: "${classpath}")
return this;
}
def jar() {
ant.mkdir(dir: "${dist_dir}")
ant.jar(destfile: "${dist_dir}/${file_name}.jar", basedir: "${build_dir}")
return this;
}
}
new Build().build().jar()

Comments[0]

[答傻姑]ORA-12170:TNS:连接超时

05:56上午 九月 02, 2008 in category General by nile black

问:链接oracle数据库发生"ORA-12170:TNS:连接超时"错误
答:检查tnslistener是否启动,检查是否有防火墙。

Comments[0]

OSUG-Hangzhou第一次聚会

03:34下午 八月 30, 2008 in category General by nile black

2008-8-30 13:30-17:30,在InfoQ的发起组织下,OSUG-Hangzhou第一次聚会在杭州青藤茶馆举行。

本次杭州OpenSolaris/OpenSource User Group的活动主题是"体验基于OpenSolaris的Web/企业应用",主要分享嘉宾为Unix-Center.net社区积极分子黄立伟和知名博客dbanotes.net博主冯大辉,分享的主题分别为"我的OpenSolaris学习路程"和"设计可扩展的面向互联网应用的MySQL数据库" 等。届时来自Sun的 OpenSolaris工程师和推广人也会到现场,与大家一起讨论。OSUG是一个开发交流的场所,我们期望与会者都能够畅所欲言,与他人分享自己的点滴心得,形成一个"知识共享"的氛围。
http://www.unix-center.net/bbs/viewthread.php?tid=5419&extra=page%3D1

附:很荣幸邀请到正在杭州的Sun中国工程研究院Solaris技术专家张瑞华女士和彭坚翔先生,详细的解答了Groupers在关于OpenSolaris的或是初级或是高级的各种问题,给大家带来更多的收获。并有张老师(瑞华)提议成立了"杭州OpenSolaris/OpenSource User Group"。:)

会议视屏、记录在整理之后会在OSUG-Hangzhou中发布。

链接:
http://opensolaris.org/
https://groups.google.com/group/osug-hangzhou

Comments[0]

Grails下的工作流-grailsflow[一]

06:01上午 八月 28, 2008 in category General by nile black

关于什么是工作流,为什么工作流重要,以及Grails的伟大之类的就略去不说了。开门见山,来看看Grailsflow。

Grailsflow是jcatalog的一个产品。这次先看看他的界面和使用吧。[Demo]为增加点诱惑,贴出几个截图。


登录


主界面


定义流程


启动流程


待办


流程图

结:Grailsflow目前是0.2版本,还比较简陋,但是已经具有工作流的基本功能了。会纳入基于Grails的应用平台中。
下载地址:http://www.jcatalog.com/oss/grailsflow/download.html

Comments[0]

[答傻姑]Thread的jion方法什么用

10:25上午 八月 19, 2008 in category General by nile black

问:Thread的jion方法什么用?

答:请看Javadoc,明确说明:等待线程终止。假如另一个线程中断了当前线程,就会抛出InterruptedException,并且当前线程的终端状态被清除。

示例代码一:

public class TestThread {
   
public static void main(String arg[]) {
        System.
out.println("main started.");
        Thread[] ts =
new Thread[] { new WaitThread(1000), new WaitThread(2000) };
       
for(Thread t : ts)t.start();
       
try {
            ts[0].join();
        }
catch (InterruptedException e) {
            e.printStackTrace();
        }
        System.
out.println("main finished.");
    }
   
static class WaitThread extends Thread {
       
private int wait;
       
public WaitThread(int wait) {
           
this.wait = wait;
            setName(
"Wait" + wait);
        }
       
@Override
        public void run() {
            System.
out.println(getName() + " started ");
           
try {
                Thread.sleep(
wait);
            }
catch (InterruptedException e) {
                e.printStackTrace();
            }
            System.
out.println(getName() + " finished ");
        }
    }
}

运行结果一:

main started.

Wait1000 started

Wait2000 started

Wait1000 finished

main finished.(注意这里的位置,main线程在Wait2000之前结束了)

Wait2000 finished

 

把代码一稍作修改:

ts[0].join();

之后添加一行

ts[1].join();

等待两个线程结束。

运行结果二:

main started.

Wait1000 started

Wait2000 started

Wait1000 finished

Wait2000 finished

main finished.main线程在Wait2000之后结束。)

Comments[0]