2007年1月17日星期三

2007-1-16 星期二

Today,webservice,axis,jbuilder2006

       今天做了两个基于Tomcat的webservice,Tomcat本身不支持webservice,需要有一个axis的插件,说白了就是jar包来支持,webservice利用xml基于soap协议传输来调用远程方法,在客户端和服务器端都有业务提供类的一个接口,他们通过wsdl语言来定义提供的哪些服务,客户端解析服务器端提供的wsdl生成业务类的接口,这样客户端就可以远程调用了。

       利用jbuilder2006构建webservice是很简单的,所有复杂的都自动生成了,但其中还是有些一些bug,比如今天遇到的,建立了一个web应用程序用来提供服务,在通过向导添加webservice服务器端的时候,就是不出现先前建好的web应用,最后在网上查原来是:在JBuilder 2006中建立WebService的服务器端程序的时候,不管怎么试都是卡在建立WEB MODULE这个地方了。主要是JB2006自带的TOMCAT的问题--------把建立WEB MODULE时的 SERVLET版本改成SERVLET 2.3,JSP版本改成JSP1.2就不会卡住了。晕。

       昨天看effective java,第一条,试着用静态工厂方法替代构造函数,原因有:

1、静态工厂方法有名字,可以让人知道这个对象构造出来是什么,比如一个类需要提供几个构造函数,它们有不同的函数原形(函数原型包括函数名和函数的参数但不包括函数的返回类型),这样很可能让用户不能清楚地知道每个构造函数是做什么用的,除非去看文档,而将其中几个构造函数用静态工厂方法代替,解决了这个问题。

2、静态工厂方法可以返回不同的对象,这特别适用于面向接口编程,按照提供的参数可以返回接口的不同的实现。

3、静态工厂方法可以不象构造函数那样每次都创建新的对象,可以是单立的,也可以不创建重复的对象,也就是如果两个对象的属性值相等就不创建新的返回已经存在的。

另外,还提到了静态工厂方法的缺点,1、如果一个类将构造函数设成了private的,用静态工厂方法来创建对象,那么这个类将不能被继承,因为子类不能调用父类的构造方法(已设成私有)。2、静态工厂方法跟其它静态方法没有任何区别,所以必须给它们起一个合适的名字,比如getInstance().,这种说法破坏了已有的规则,但规则,对象都是由构造函数创建的,但使用静态工厂方法又有它的独到的好处。所以在取舍上,作者这样说,在实际开发中,如果没有足够的理由,还是老老实实的使用构造方法来创建对象,毕竟这是已有的规则。

没有评论:

发表评论