web services DEMO
1、myeclips新建web项目xfireDemo,new-web service project(framework中选xfire)-next-next(勾选所有包)-finish。此时xfire环境已配置好,web.xml中生成了xfire服务:
<servlet>
<servlet-name>XFireServlet</servlet-name>
<servlet-class>org.codehaus.xfire.transport.http.XFireConfigurableServlet</servlet-class>
<load-on-startup>0</load-on-startup>
</servlet>
<servlet-mapping>
<servlet-name>XFireServlet</servlet-name>
<url-pattern>/services/*</url-pattern>
</servlet-mapping>
2、右击项目,new-other搜索webservice,选中web service ->next,选择以java bean的方式,并勾选create new java bean –>填写服务名称(HelloWebService)、包名 –>finish
此时将生成一个接口类和一个实现类,并且在WebService文件夹下的service.xml将注册该服务:
<service> <name>HelloWebService</name> <serviceClass>com.hjs.xfire.IHelloWebService</serviceClass> <implementationClass> com.hjs.xfire.HelloWebServiceImpl </implementationClass> <style>wrapped</style> <use>literal</use> <scope>application</scope> </service>
表示调用HelloWebService服务时,将会执行HelloWebServiceImpl类中的程序。
3,发布Web服务
启动tomcat 后,输入http://localhost:8080/xfireDemo/services将会出现如下:
Available Services:
- HelloWebService [wsdl]
- Generated by XFire ( http://xfire.codehaus.org )
列出调用的接口。点击wsdl链接,将会打开一个xml网页,最好将此网页另存一份。至此一个HelloWebService的web服务就发布成功了。这只是服务端,接下来使用客户端调用。
方式一:
myeclips中自带了web服务的客户端浏览器,打开此浏览器,右上角选择wsdl page,在框中输入web服务地址:http://localhost:8080/xfireDemo/services/HelloWebService?wsdl点击 go按钮,左侧将显示提供的服务列表,单击所要调用的服务,然后在右侧输入该服务需要的字符串参数,点击go按钮,将会在下方显示该服务执行后的返回值。
方式二:sdk方式的客户端
编写客户端类:
/**
* sdk方式客户端
* 执行此程序前,需要先启动web服务端
*
*/
import java.net.MalformedURLException;
import org.codehaus.xfire.XFireFactory;
import org.codehaus.xfire.client.Client;
import org.codehaus.xfire.client.XFireProxyFactory;
import org.codehaus.xfire.service.Service;
import org.codehaus.xfire.service.binding.ObjectServiceFactory;
import org.codehaus.xfire.transport.http.CommonsHttpMessageSender;
public class HelloWebServiceClient {
private static IHelloWebService iHelloWebService; //Service对象
private HelloWebServiceClient(){} //私有的构造方法
public static IHelloWebService getService(String serviceURL) throws MalformedURLException{
if(iHelloWebService == null){
//创建IHelloWebService的服务
Service srvcModel = new ObjectServiceFactory().create(IHelloWebService.class);
//创建xfire对象
XFireProxyFactory factory = new XFireProxyFactory(XFireFactory.newInstance().getXFire());
//调用wev服务
iHelloWebService = (IHelloWebService)factory.create(srvcModel,serviceURL);
//设置客户端调用的属性
Client client = Client.getInstance(iHelloWebService);
client.setProperty(CommonsHttpMessageSender.HTTP_TIMEOUT, "300");
client.setProperty(CommonsHttpMessageSender.DISABLE_KEEP_ALIVE, "true");
client.setProperty(CommonsHttpMessageSender.DISABLE_EXPECT_CONTINUE, "true");
}
return iHelloWebService;
}
public static void main(String[] args) {
try {
IHelloWebService service = HelloWebServiceClient.getService
("http://localhost:8080/xfireDemo/services/HelloWebService"); //通过ObjectServiceFactory、XFireProxyFactory方式来动态生成时需要把访问路径的WSDL去掉
System.out.println(service.example("你吃过中饭了吗?"));
} catch (MalformedURLException e) {
e.printStackTrace();
}
}
}
执行程序,调用web服务端。

浙公网安备 33010602011771号