使用eclipes的xfire插件,生成了Webservice的客户端代码
在调用时,报错,具体代码如下
调用client的TestClient代码
HelloWordServiceClient service=new HelloWordServiceClient();
HelloWordServicePortType type=service.getHelloWordServiceHttpPort();
System.out.println(type.sayHello("123"));
HelloWordServiceClient 类中的create0方法中报错,代码如下,错误行已在代码中标出:
/**
*
*以下为出错的方法
*/
private void create0() {
TransportManager tm = (org.codehaus.xfire.XFireFactory.newInstance().getXFire().getTransportManager());
HashMap props = new HashMap();
props.put("annotations.allow.interface", true);
AnnotationServiceFactory asf = new AnnotationServiceFactory(new Jsr181WebAnnotations(), tm, new AegisBindingProvider(new JaxbTypeRegistry()));
asf.setBindingCreationEnabled(false);
service0 = asf.create((com.tongtech.bjvsp.client.HelloWordServicePortType.class), props);//此处出错,提示HelloWordServicePortType不能为抽象类
{
AbstractSoapBinding soapBinding = asf.createSoap11Binding(service0, new QName("http://webservicedemo.rubyeye.net", "HelloWordServicePortTypeLocalBinding"), "urn:xfire:transport:local");
}
{
AbstractSoapBinding soapBinding = asf.createSoap11Binding(service0, new QName("http://webservicedemo.rubyeye.net", "HelloWordServiceHttpBinding"), "http://schemas.xmlsoap.org/soap/http");
}
}
报错信息如下:
Exception in thread "main" org.codehaus.xfire.annotations.AnnotationException: Service class cannot be abstract: com.tongtech.bjvsp.client.HelloWordServicePortType
at org.codehaus.xfire.annotations.AnnotationServiceFactory.assertValidImplementationClass(AnnotationServiceFactory.java:268)
at org.codehaus.xfire.annotations.AnnotationServiceFactory.create(AnnotationServiceFactory.java:177)
at org.codehaus.xfire.service.binding.ObjectServiceFactory.create(ObjectServiceFactory.java:284)
at com.tongtech.bjvsp.client.HelloWordServiceClient.create0(HelloWordServiceClient.java:59)
at com.tongtech.bjvsp.client.HelloWordServiceClient.<init>(HelloWordServiceClient.java:26)
at com.tongtech.bjvsp.testclient.TestClient.main(TestClient.java:14)
由于客户端的代码是自动生成,所以不知哪里有问题,还是我在写服务器端代码时出了错?
因为是根据wsdl生成的客户端代码,因此我认为服务端应该不存在问题。
本人对于xfire不是十分熟悉,希望指点一二,谢谢
分享到:
相关推荐
使用XFire根据WSDL生成客户端代码,可以大大简化开发过程,因为它自动生成了与服务接口对应的Java类和代理。以下是具体步骤: 1. **安装和配置XFire**:首先,确保已经下载并安装了XFire库。你可以通过Maven或...
在生成Java客户端代码后,调用Web服务的流程通常如下: 1. **初始化客户端**:创建服务接口的代理类实例,通常需要提供Web服务的URL。 2. **设置认证和配置**:如果Web服务需要身份验证或其他特定的HTTP头信息,...
1. **自动代码生成**:插件能够自动生成服务客户端和服务器端的代码,大大减少了开发者的手动工作量。只需提供WSDL(Web服务描述语言)文件,插件就能生成相应的Java代理类,使得调用Web服务如同调用本地方法一样...
XFire提供了生成WSDL文件的功能,允许开发者从Java类或者接口自动生成对应的WSDL定义,以便于服务的发布和消费。 在描述中提到"工作的地方不能上网更新",这意味着在离线环境下使用XFire插件生成WSDL文件。在这种...
2. 生成客户端代码:使用XFire的wsdl2java工具生成客户端代理类。 3. 创建客户端实例:在Java代码中创建代理类的实例,通常需要指定服务的地址。 4. 调用服务方法:通过代理类的方法调用远程服务,传递必要的参数。 ...
4. 在Xfire客户端代码中实例化并调用生成的代理类,传递必要的参数以执行Web服务操作。 5. 处理返回的结果,将数据展示或用于客户端逻辑。 在实际开发中,可能还需要考虑错误处理、安全性和性能优化等问题。例如,...
在本案例中,"Xfire的client.zip"是一个包含了Xfire客户端代码的压缩包,主要用于调用Web服务。 Xfire客户端代码是实现与Xfire服务器通信的代码库,它可能包含了多种语言的实现,如Java、C#或Python等。这些代码...
一旦WSDL文件被成功导入,XFire插件将自动生成与Web服务相关的客户端代码。这些代码通常包括接口定义、存根类和服务代理类等,可以直接用于调用Web服务。 #### 步骤四:测试和调用Web服务 最后,可以在Java项目中...
然后,实现这个接口并部署到服务器,Xfire会自动生成相应的WSDL文件,供客户端调用。 **3. 部署Web服务** Xfire允许你将Web服务部署到任何Servlet容器,如Tomcat。只需要将Xfire的库添加到项目的类路径中,然后在...
它提供了全面的工具集,包括自动代码生成、强大的数据绑定和灵活的配置选项,使开发者能够快速地创建符合SOAP标准的Web服务。 标题中的“xfire客户端包含所需要的jar”指的是,为了使用XFire客户端功能,你需要一...
在本实例中,我们将探讨如何利用XFire实现实时的远程调用,并查看提供的客户端代码(ClientFromInterface.java)和服务器端代码(WS_Server)。 首先,让我们深入了解XFire的基础知识。XFire是一个基于Java的Web...
可以使用XFire的wsdl2java工具自动生成这些代理类。 2. 初始化代理:在调用服务之前,需要初始化代理,通常包括设置服务地址和任何必要的认证信息。 3. 调用服务方法:通过代理类的对象调用Web服务的方法,传入...
3. **XFire客户端API**:XFire提供了客户端API,可以自动生成客户端代码,这些代码包含了调用Web服务的必要方法。开发者只需要传入参数,就可以执行服务调用。 4. **服务代理的生成**:通过WSDL文件,XFire可以生成...
XFire插件会自动生成WSDL(Web服务描述语言)文件,这是Web服务的标准接口定义。此外,它还能自动为你的服务创建客户端代理类,使得测试和调用服务变得容易。 在编码阶段,XFire支持注解驱动的开发模式,这意味着你...
它能自动生成客户端代理类,这些类可以直接调用远程服务的方法,就像调用本地方法一样,极大地降低了客户端开发的复杂性。 这个压缩包文件"xfireDemo"包含了实现xfire服务端和axis客户端所需的所有组件和jar包。...
总结来说,使用Xfire开发Web服务客户端涉及导入必要的jar包、配置服务信息、生成代理类以及编写调用代码。虽然Xfire已不再更新,但其简单易用的特点使其在某些场景下依然具有价值。对于新项目,推荐使用更现代的框架...
开发者只需要定义一个与服务接口匹配的Java接口,XFire会自动生成代理类,使得开发者可以像调用本地方法一样调用远程Web服务。这种方式降低了Web服务调用的复杂性,提高了开发效率。 2. **绑定配置(Binding ...
- 使用MyEclipse自动生成客户端代码(确保WSDL URL正确无误)。 - 自动生成的客户端代码会放在指定的包中(例如`client`包)。 - 在客户端代码中,可以通过`IHelloServiceClient`类调用WebService接口。 - 示例代码...
总的来说,Xfire提供了一个简单、高效的远程调用解决方案,尤其适合需要快速搭建服务端和客户端通信的应用场景。通过学习和实践Xfire的源码,开发者不仅可以掌握XML-RPC的基本原理,还能提升在分布式系统中的编程...
在实践中,你可能需要阅读和理解XFire的源代码,或者使用一些IDE插件(如Eclipse的CXF插件)来帮助你更好地集成和调试Web服务。 总之,XFire提供了一种简单的方法来构建和消费Web服务,特别适合初学者和小型项目。...