2006年11月24日星期五

使用Axis开发Web Service程序

  今天是感恩节,差点又要在公司加班了。好在Web Service程序并不是特别难搞,下午终于在eclipse下调通过了,正确产生了服务器端和客户端的Java代码,apache的东西的确很不错。

  说道Web Service的程序开发,八个月前我加班调试公司和中国电信的商务领航系统的接口的时候,用的就是Web Service,Web Service有很多优点,使用Web Service可以在不同编程语言间实现数据交换,而我那时对Web Service也不熟,就由同事帮我生成了一大堆Web Service的框架代码,我则只单独开发业务代码。

  这次的另外一个项目也要用Web Service了,不过人手也少了,没有人帮做Web Service了,只好自己动手。

  好在开发前,有个同事先给我们不熟悉Web Service的程序员进行了一些培训,我才知道原来以前的Web Service都是可以自动生成代码的,而且也不难,试了一个下午客户端和服务器端的Web Service代码就都调试通过了,真不错。

  为了更多喜爱开发的程序员也能迅速了解Web Service的开发,我这里整理了一些通过Axis开发Web Service的一些要点,希望能让不熟悉Web Service的开发人员能够迅速掌握Web Service。

  一、Axis环境的安装

  1、安装环境 J2SE SDK 1.4,Tomcat 5.0,eclipse 3.2。

  2、到 http://xml.apache.org 网站下载Axis安装包。

  3、将Axis相关包文件放在WEB-INFlib目录下。

  4、Axis可选的包:activation.jar; mail.jar; xmlsec-1.4.Beta1.jar拷贝到WEB-INF目录下,生成客户端时候需要使用。

  Axis支持三种web service的部署和开发,分别为:

  1、Dynamic Invocation Interface (DII)

  2、Dynamic Proxy方式

  3、Stubs方式

  前两种方式我就不介绍了,同事告诉我他们自己都不使用前两种方式,他们建议我们使用Stubs方式,因此我就主要就介绍一下第三种方式。注意,我自己的Java源代码是放在D:workspace est目录下,Axis相关包文件放在D:workspace estWEB-INF目录下。

  二、编写wsdd发布web服务,编写stub client访问web服务

  1、编写服务端程序server,SayHello.java,编译server.SayHello.java

package server;
public class SayHello
{
    public String getName(String name)
    {
        return "hello "+name;
    }
}

  2、编写wsdd文件

  deploy.wsdd文件内容如下:

<deployment xmlns="http://xml.apache.org/axis/wsdd/" xmlns:java="http://xml.apache.org/axis/wsdd/providers/java">
 <service name="SayHello" provider="java:RPC">
  <parameter name="className" value="server.SayHello.getName"/>
  <parameter name="allowedMethods" value="*"/>
 </service>
</deployment>

  3、发布服务:

  编辑一个deploy.bat,Axis_Lib为axis.jar路径。内容如下:

set Axis_Lib=D:workspace estWEB-INFlib
set Java_Cmd=java -Djava.ext.dirs=%Axis_Lib%
set Axis_Servlet=http://localhost:8080/test/servlet/AxisServlet
%Java_Cmd% org.apache.axis.client.AdminClient -l%Axis_Servlet% deploy.wsdd

  执行这个批处理文件,这时候,如果提示成功的话,访问http://localhost:8080/test/services 就会显示服务列表。

  4、生成客户端client stub文件

  在浏览器上访问服务器端的服务,可以下载到WSDL文件,通过Axis的相关工具,可以自动从WSDL文件中生成Web Service的客户端代码。

  编写一个WSDL2Java.bat文件,其内容如下:

set Axis_Lib=D:workspace estWEB-INFlib
set Java_Cmd=java -Djava.ext.dirs=%Axis_Lib%
set Output_Path=D:workspace estsrc
set Package=server.SayHello
%Java_Cmd% org.apache.axis.wsdl.WSDL2Java -o%Output_Path% -p%Package% SayHello.wsdl

  执行这个批处理文件就可以生成client stub.

  生成的stub client文件列表为:SayHello.java,SayHelloService.java,SayHelloServiceLocator.java,SayHelloSoapBindingStub.java .

  5、编写客户端程序,编译并执行

  下面是一段junit测试客户端代码。

import java.net.URL;
import junit.framework.Test;
import junit.framework.TestCase;
import junit.framework.TestSuite;

public class TestWSClient extends TestCase {

    public TestWSClient(String string) {
        super(string);
    }

    public void SayHelloClient() throws Exception {

        SayHelloService service = new SayHelloServiceLocator();
        SayHello_PortType client = service.getSayHello() ;
        String retValue = client.getName("clientname");
        System.out.println(retValue);

    }

    public static Test suite() {
        TestSuite suite = new TestSuite();
        suite.addTest(new TestWSClient("SayHelloClient"));
        return suite;
    }
}

  至此,整个服务器端和客户端的Web Service框架代码就完成了,剩下的就是在里面加入你的业务代码了,怎么样,Web Service并不难开发吧。

2006年11月23日星期四

百度搜藏即将发布

  百度即将发布一个全新的中文网摘服务:百度搜藏,名字感觉比较怪。现在百度搜藏的主页已经能访问,上面写的是“即将发布,敬请关注”,据说这个服务将在本月底之前开发完成并上线。

  百度在百度搜藏主页上介绍了这个产品的一些特点,比如:

  全文收藏:不仅能收藏网址,更能自动收藏全文

  快速查找:在您收藏的海量信息中,快速、准确地找到所需资料

  网页快照:不必担心网页链接失效,您可以通过“快照”快速浏览页面内容

  轻松便捷:只需连接互联网,就能随时随地收藏和使用

  分享资源:和朋友分享自己喜欢的网址,或享用他人的收藏

  这些功能看起来没有什么特色,大部分中文的网摘系统都有类似的功能,而且我觉得其网页快照功能可能会产生版权上的纠纷,搞不好会给目标网站带来不良的影响。

  对于网摘服务,我也用了很多,感觉用的最顺手的就是del.icio.us的服务,网摘需要有的功能其全都有,也没有广告,虽然在使用的过程中,我发现del.icio.us的用户显示页面对中文用户不是特别友好,交互性也不强,最主要的是没有中文界面和域名难记,这些问题会影响其中文用户的普及。

  del.icio.us的这些缺点也是可以解决的,比如我通过程序在del.icio.us的基础上增加了一个WordPress的新界面的blog,这个新界面对用户访问是非常友好的,新地址和原有的del.icio.us内容还会实时同步更新,这都多亏了del.icio.us强大的API支持。

  del.icio.us最大的优点也正在这里,她给用户创造了价值,用户反过来又会给del.icio.us带来价值,大家各取所需,一个品牌价值自然也就起来了。

  百度搜藏地址:http://cang.baidu.com/

2006年11月22日星期三

BlogSpot模版资源列表

  首先是关于Google Blogger的一则快讯,我站一位杨读者首先发现,今天下午17点的时候,BlogSpot又可以正常访问了,我于是立刻尝试了一下,证实深圳电信和上海电信都可以正常访问BlogSpot,这对于大多数人来说都是一个好消息。

  Google Blogger在中国可谓多灾多难,今天八月份解封后在国内引起很大反响,BlogSpot的中文用户数猛增,对于这样一个功能强大而且速度飞快的免费Blog空间,获得中国用户的青睐也是理所当然的。然而可惜的是,今年十月份BlogSpot再次无法访问,不过今天BlogSpot忽然又访问正常,不得不令人慨叹世事多变啊。

  既然BlogSpot已经可以访问了,我这里就收集一些BlogSpot的模版,来源于the ultimate blog template list,大家可以继续倒腾自己的BlogSpot了。

2006年11月21日星期二

FireFox导入导出Cookies和收藏夹的方法

  FireFox是一个常用的浏览器,扩展插件众多,和IE相比有很多优点,不过有些细小的地方似乎考虑的不太好,比如用户经常会碰到系统重新安装等问题,这就需要导入导出FireFox浏览器的Cookies和收藏夹,然而遗憾的是,FireFox默认只提供了导入IE的Cookies和收藏夹的功能,经过一些尝试,我这里找到一个手动导入导出FireFox的Cookies和收藏夹的方法。

  首先,打开“我的电脑”,点“工具”-“文件夹选项”-“查看”,选中“显示所有文件和文件夹”,然后打开文件夹C:Documents and Settings你的用户名Application DataMozillaFirefoxProfiles随机目录,注意最后一个文件夹是一个随机目录。进入这个目录后,找到cookies.txt和bookmarks.html两个文件,这两个文件就是Cookies和收藏夹文件,复制出这两个文件到另外一台机器上的类似目录下,覆盖同名文件,就完成了FireFox的Cookies和收藏夹的导出和导入。

  另外,FireFox的收藏夹(书签)也可以通过菜单选项直接导出,具体方法是:打开Firefox,点击“书签 -> 书签管理”启动书签管理器,点击“文件 -> 导出”来备份现有的书签。在另一台机器上,再用书签的“导入”功能把备份的书签导入到新的Firefox的配置中即可。

  最后一个方法是使用FireFox插件。如果你感觉自己信任Google的话,可以安装一下Google开发的Google Browser Sync(Google浏览器同步)插件,可以将你FireFox各种设置比如书签、历史记录、保存的密码及cookies保存进你自己的Google帐号里,在另外一台机器上可以使用Google帐号登录同步浏览器的内容。当然,请不要在网吧等不安全的地方使用这个插件,否则会带来很大的安全问题。

  安装这个插件,请使用FireFox进入下面的链接后就可以开始安装:http://tools.google.com/firefox/browsersync/install.html

2006年11月19日星期日

Yahoo卫星地图服务发布

  继Google的地图服务Google Maps和微软的地图MSN Maps之后,Yahoo周三宣布新推出了正式版本的包含卫星图像的Yahoo Maps。雅虎宣称,与竞争对手相比,他们的这项服务现在提供了“最好的全球地图数据媒体解决方案”。

  Yahoo Maps的表现形式用Macromedia的Flash来实现,而表现层的产生则使用了Macromedia Flex。Yahoo Maps也提供API开发接口供程序员使用。

  相比来说,Google提供卫星地图服务是最早的,其卫星地图的确非常不错,但是对于中国来说,其普通的交通地图是个空白实在令人遗憾。微软后来也提供卫星地图服务,其卫星地图对于中国的分辨率非常差,但是对于美国却有极高清晰度的鸟瞰图(如下图所示),鸟瞰图的清晰度令人震惊。

微软卫星地图

自由女神像鸟瞰图,清晰地令人震惊

  虽然微软对于中国的卫星地图不怎么,清晰度非常低,不过对于中国的交通地图还是可圈可点的。以北京为例(参见下面的截图),我们发现北京周边地区的详细地名都用拼音标记出来,这一点比Google做的好多了。

微软地图服务

微软的交通地图,标注甚为详细

  Yahoo Maps的表现又是如何呢?同样是北京的交通地图,Yahoo显示的是下面的界面,只有很少几个标注,由下图可以看出,Yahoo在中国地理上下的功夫比微软小的多。

YAHOO地图服务

Yahoo的交通地图,标注很少

  不过值得注意的是,Yahoo Maps的卫星地图对于中国网民来说是一个惊喜,因为Yahoo Maps的中国卫星地图也提供高清晰度的地图,粗略的看了一下,基本上中国的大城市都有高清晰地图,不过覆盖的城市范围似乎比Google Maps要少。

  下面是北京天安门的放大到最大的卫星地图,我很惊讶其卫星图片质量,感觉清晰度不亚于Google,这样的清晰度其实还可以继续放大的,不知道Yahoo为什么不让图片再放大一些。

北京天安门地图

  下面是深圳荔枝公园附近地区的卫星图片。

深圳地图

  重庆的网民可能又要失望了,因为和Google Maps一样,Yahoo Maps同样对于重庆地区的卫星图片也不是高清晰的,但是对于成都却是高清晰的,成都的卫星图片如下图所示。

成都地图

  喜欢玩Google Maps的,推荐也玩一下Yahoo Maps,看看Yahoo提供的这个地图服务能否有一些新的发现和惊喜。

2006年11月18日星期六

锵锵三人行谈论百度贴吧

  昨天晚上浏览Blog,看到百度官方博客时候,发现一则电视预告消息,说晚上凤凰卫视的《锵锵三人行》会一起聊一下百度的贴吧。

  这可真有点意思,一看时间,正好十一点半,我这个很少看电视的人也产生了兴趣,于是打开电视,转到凤凰卫视,发现果然是窦文涛和百度的梁冬在聊天。

  聊天似乎没有什么主题,比较杂乱,从一个内容一下就跳到另一个内容,从百度贴吧,谈到网络暴民,其中还说到了“孟广美事件”,我早就预计窦文涛会在节目中为孟广美辩护,今天终于看到窦文涛为自己的同僚辩解了,不过到现在才做似乎晚了点吧,大概窦文涛也害怕引火烧身,唠唠叨叨说了一堆,拐弯抹角地解释半天,我听着都费劲。其实有些事情并不是什么原则性的错误,孟广美说的话有些不合适,说明她本身不成熟,道一下歉,事情总会过去,中国的网络暴民大多都是年轻学生,和他们纠缠只会浪费自己的宝贵时间。

  然后他们聊百度贴吧,以及一些特色贴吧。关于百度的城市贴吧,的确有一些有意思的内容,百度贴吧实际就是利用百度流量营造的一个巨大的论坛社区,人们可以在里面谈论一定限度的话题,对于一些中小城市来说,当地官员未必有足够的行政级别要求百度去删除任何他们不喜欢的文章,无法删除文章的时候,官员的心态也会发生了一些变化,有些会重视并解决一些贴吧上提出的问题,这也有一定的积极意义。当然,百度贴吧并不是所有话题都可以讲的,有一些话题就未必受欢迎,比如百度没有鸡吧

  总体来讲,这个聊天节目还是蛮不错的,梁冬在百度呆了这么长时间,对网络认识也比窦文涛强多了(看看他这篇文章:百度为甚么不干掉那些负面新闻?),窦文涛也应该好好补习一下自己的网络知识了。

  百度在凤凰卫视上做谈话节目,显然是为了扩大自己在电视用户中的影响力,毕竟电视是目前中国最大的传播媒体,喜欢看电视的人远远多于喜欢上网的人,让那些不上网的人也了解自己的产品,会增加不少潜在的用户,因此,网络公司上电视作秀的确是一个扩大影响力的好办法。

  没有看到这个节目的,可以在下周一中午12点在凤凰卫视看重播,在凤凰卫视的网站上稍后也会有音频版本的节目放上去。

2006年11月17日星期五

防火长城真是神仙啊

  今天发现几天前刚刚能够正常访问的维基百科又无法访问了,才知道,原来防火长城真是神仙啊。

  为什么说它是神仙呢?因为它是不可预知而神秘莫测的,其通天法术带给人们无边的恐惧。神仙的意智和思维方式是捉摸不透的,真是因为这些琢磨不透、难以预知的神秘力量,我们才会感到自身的命运无法受自己掌控,我们卑微、可怜,我们无法预知、更无法改变主宰我们的力量,我们只能祈求它的善意与怜悯。这就是我们的命运。

  人是无法和神对抗的,神仙是强大的,同时也是令人百思不得其解的。孔子说,“敬鬼神而远之”,鬼神不可以不敬,但是敬而远之。神之所以受人尊敬,不是因为它的完美,而是因为它的神秘。

  既然神仙是这么强大而神秘,那么我们再来揣测神仙的行为就显得不明智了。在目前这样一个时代里,多说无异,敬而远之吧。

  不知道要到什么时候,神仙才能够变成人。