摘要: 1. 多个MUST的组合不必多说,就是交集2. MUST和SHOULD的组合。是在MUST搜出来的doc里面,根据SHOULD的query进行打分。也就是说,SHOULD的query不会影响最终的HITS,只会提供打分依据。3. SHOULD的组合。如果最终的BooleanQuery只有SHOULD,那么搜出来的doc至少要满足一个SHOULD的query,也就是说是逻辑OR。那么在下面这段代码中,问题就出现了:代码的本意是在baseQuery的基础上和geoQuery做一个交集public Map<String, Query> buildGeoQuery(Query baseQu 阅读全文
posted @ 2012-04-18 12:00 狼里格朗 阅读(5000) 评论(2) 推荐(2) 编辑
摘要: 删除索引 IndexWriter提供deleteDocuments(Term term); //会删除索引文件里含有指定Term的所有Document。 IndexReader也提供了deleteDocuments(Term term);8. 更新索引 IndexWriter提供updateDocument(Term term, Document doc); //实际上是先删除再创建索引。9. 常用查询器 1) TermQuery : 按Term(关键字)查询。构造方法:TermQuery(Term t) Query query = new TermQuery(new Term("c 阅读全文
posted @ 2012-04-18 11:51 狼里格朗 阅读(428) 评论(0) 推荐(0) 编辑
摘要: 在Axis2中提供了一个Axis2模块(soapmonitor),该模块实现了与《WebService大讲堂之Axis2(9):编写Axis2模块(Module)》中实现的logging模块相同的功能,所不同的是,logging模块直接将SOAP请求与响应消息输出到Tomcat控制台中,而soapmonitor模块利用applet直接在页面中输出SOAP请求和响应消息。 下面是配置和使用soapmonitor模块的步骤: 第1步:部署Applet和Servlet 由于axis2默认情况下已经自带了soapmonitor模块,因此,soapmonitor模块并不需要单独安装。但applet所涉. 阅读全文
posted @ 2012-04-16 10:37 狼里格朗 阅读(278) 评论(0) 推荐(0) 编辑
摘要: Axis2可以通过模块(Module)进行扩展。Axis2模块至少需要有两个类,这两个类分别实现了Module和Handler接口。开发和使用一个Axis2模块的步骤如下:1.编写实现Module接口的类。Axis2模块在进行初始化、销毁等动作时会调用该类中相应的方法)。2.编写实现Handler接口的类。该类是Axis2模块的业务处理类。3.编写module.xml文件。该文件放在META-INF目录中,用于配置Axis2模块。4.在axis2.xml文件中配置Axis2模块。5.在services.xml文件中配置Axis2模块。每一个Axis2模块都需要使用<module>元 阅读全文
posted @ 2012-04-16 10:36 狼里格朗 阅读(371) 评论(0) 推荐(0) 编辑
摘要: 在前面几篇文章中都是使用同步方式来调用WebService。也就是说,如果被调用的WebService方法长时间不返回,客户端将一直被阻塞,直到该方法返回为止。使用同步方法来调用WebService虽然很直观,但当WebService方法由于各种原因需要很长时间才能返回的话,就会使客户端程序一直处于等待状态,这样用户是无法忍受的。 当然,我们很容易就可以想到解决问题的方法,这就是多线程。解决问题的基本方法是将访问WebService的任务交由一个或多个线程来完成,而主线程并不负责访问WebService。这样即使被访问的WebService方法长时间不返回,客户端仍然可以做其他的工作。我们可. 阅读全文
posted @ 2012-04-16 10:35 狼里格朗 阅读(468) 评论(0) 推荐(0) 编辑
摘要: 在现今的Web应用中经常使用Spring框架来装载JavaBean。如果要想将某些在Spring中装配的JavaBean发布成WebService,使用Axis2的Spring感知功能是非常容易做到的。 在本文的例子中,除了<Tomcat安装目录>\webapps\axis2目录及该目录中的相关库外,还需要Spring框架中的spring.jar文件,将该文件复制到<Tomcat安装目录>\webapps\axis2\WEB-INF\lib目录中。 下面先建立一个JavaBean(该JavaBean最终要被发布成WebService),代码如下: packageserv 阅读全文
posted @ 2012-04-16 10:34 狼里格朗 阅读(305) 评论(0) 推荐(0) 编辑
摘要: 在《WebService大讲堂之Axis2(5):会话(Session)管理》一文中介绍了如何使用Axis2来管理同一个服务的会话,但对于一个复杂的系统,不可能只有一个WebService服务,例如,至少会有一个管理用户的WebService(用户登录和注册)以及处理业务的WebService。象这种情况,就必须在多个WebService服务之间共享会话状态,也称为跨服务会话(Session)管理。实现跨服务会话管理与实现同一个服务的会话管理的步骤类似,但仍然有一些差别,实现跨服务会话管理的步骤如下:实现跨服务的Session管理需要如下三步:1.使用MessageContext和Servic 阅读全文
posted @ 2012-04-16 10:33 狼里格朗 阅读(255) 评论(0) 推荐(0) 编辑
摘要: WebService给人最直观的感觉就是由一个个方法组成,并在客户端通过SOAP协议调用这些方法。这些方法可能有返回值,也可能没有返回值。虽然这样可以完成一些工具,但这些被调用的方法是孤立的,当一个方法被调用后,在其他的方法中无法获得这个方法调用后的状态,也就是说无法保留状态。读者可以想象,这对于一个完整的应用程序,无法保留状态,就意味着只依靠WebService很难完成全部的工作。例如,一个完整的应用系统都需要进行登录,这在Web应用中使用Session来保存用户登录状态,而如果用WebService的方法来进行登录处理,无法保存登录状态是非常令人尴尬的。当然,这也可以通过其他的方法来解决, 阅读全文
posted @ 2012-04-16 10:32 狼里格朗 阅读(328) 评论(0) 推荐(0) 编辑
摘要: 在《WebService大讲堂之Axis2(2):复合类型数据的传递》中讲过,如果要传递二进制文件(如图像、音频文件等),可以使用byte[]作为数据类型进行传递,然后客户端使用RPC方式进行调用。这样做只是其中的一种方法,除此之外,在客户端还可以使用wsdl2java命令生成相应的stub类来调用WebService,wsdl2java命令的用法详见《WebService大讲堂之Axis2(1):用POJO实现0配置的WebService》。 WebService类中包含byte[]类型参数的方法在wsdl2java生成的stub类中对应的数据类型不再是byte[]类型,而是javax... 阅读全文
posted @ 2012-04-16 10:31 狼里格朗 阅读(477) 评论(0) 推荐(0) 编辑
摘要: 用Axis2实现Web Service,虽然可以将POJO类放在axis2\WEB-INF\pojo目录中直接发布成Web Service,这样做不需要进行任何配置,但这些POJO类不能在任何包中。这似乎有些不方便,为此,Axis2也允许将带包的POJO类发布成Web Service。 先实现一个POJO类,代码如下: packageservice; publicclassMyService { publicStringgetGreeting(Stringname) { return"您好"+name; } publicvoidupdate(Stringdata) { Sy 阅读全文
posted @ 2012-04-16 10:30 狼里格朗 阅读(333) 评论(0) 推荐(0) 编辑