在用XFire开发webservice时,遇到一个问题,当需要取得对象时,则报如下错误:
Exception in thread "main" org.codehaus.xfire.XFireRuntimeException: Could not invoke service.. Nested exception is org.codehaus.xfire.fault.XFireFault: Couldn't instantiate class. com.xfire.pojo.Student
org.codehaus.xfire.fault.XFireFault: Couldn't instantiate class. com.xfire.pojo.Student
at org.codehaus.xfire.aegis.type.basic.BeanType.readObject(BeanType.java:196)
at org.codehaus.xfire.aegis.AegisBindingProvider.readParameter(AegisBindingProvider.java:169)
at org.codehaus.xfire.service.binding.AbstractBinding.read(AbstractBinding.java:206)
at org.codehaus.xfire.service.binding.WrappedBinding.readMessage(WrappedBinding.java:51)
at org.codehaus.xfire.soap.handler.SoapBodyHandler.invoke(SoapBodyHandler.java:42)
at org.codehaus.xfire.handler.HandlerPipeline.invoke(HandlerPipeline.java:131)
at org.codehaus.xfire.client.Client.onReceive(Client.java:406)
at org.codehaus.xfire.transport.http.HttpChannel.sendViaClient(HttpChannel.java:139)
at org.codehaus.xfire.transport.http.HttpChannel.send(HttpChannel.java:48)
at org.codehaus.xfire.handler.OutMessageSender.invoke(OutMessageSender.java:26)
at org.codehaus.xfire.handler.HandlerPipeline.invoke(HandlerPipeline.java:131)
at org.codehaus.xfire.client.Invocation.invoke(Invocation.java:79)
at org.codehaus.xfire.client.Invocation.invoke(Invocation.java:114)
at org.codehaus.xfire.client.Client.invoke(Client.java:336)
at org.codehaus.xfire.client.XFireProxy.handleRequest(XFireProxy.java:77)
at org.codehaus.xfire.client.XFireProxy.invoke(XFireProxy.java:57)
at $Proxy0.getStudentByName(Unknown Source)
at com.xfire.TestClient.main(TestClient.java:31)
Caused by: java.lang.InstantiationException: com.xfire.pojo.Student
at java.lang.Class.newInstance0(Unknown Source)
at java.lang.Class.newInstance(Unknown Source)
at org.codehaus.xfire.aegis.type.basic.BeanType.readObject(BeanType.java:109)
... 17 more
Student.java
package com.xfire.pojo;
public class Student {
private String name;
private int age;
public Student(String name,int age)
{
this.name=name;
this.age=age;
}
public int getAge() {
return age;
}
public void setAge(int age) {
this.age = age;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
}
接口ITestService.java
package com.xfire;
import com.xfire.pojo.Student;
public interface ITestService {
public String example(String message);
public Student getStudentByName(String name);
public int sum(int c1,int c2);
}
实现类:ITestServiceImpl.java
package com.xfire;
import com.xfire.pojo.Student;
//Generated by MyEclipse
public class TestServiceImpl implements ITestService {
private StudentUtility utility;
public TestServiceImpl()
{
utility=new StudentUtility();
}
public String example(String message) {
return message;
}
public Student getStudentByName(String name) {
return utility.getStudentByName(name);
}
public int sum(int c1, int c2) {
return c1+c2;
}
}
业务类:StudentUtility.java
package com.xfire;
import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
import com.xfire.pojo.Student;
public class StudentUtility {
private Map<String, Student> studentmap;
public StudentUtility()
{
studentmap=new HashMap<String, Student>();
studentmap.put("Alvin", new Student("Alvinqq",25));
studentmap.put("ZengQi", new Student("ZengQi",25));
studentmap.put("Shirley", new Student("Shirley",23));
}
public Student getStudentByName(String name)
{
return studentmap.get(name);
}
public List<Student> getStudents()
{
List<Student> list=new ArrayList<Student>();
Set<String> key=new HashSet<String>();
key=studentmap.keySet();
Iterator<String> iter=key.iterator();
while(iter.hasNext())
{
list.add(studentmap.get(iter.next()));
}
return list;
}
}
客户端调用类:TestClient.java
package com.xfire;
import java.net.MalformedURLException;
import org.codehaus.xfire.XFireFactory;
import org.codehaus.xfire.client.XFireProxyFactory;
import org.codehaus.xfire.service.Service;
import org.codehaus.xfire.service.binding.ObjectServiceFactory;
import com.xfire.pojo.Student;
public class TestClient {
/**
* @param args
*/
public static void main(String[] args) {
Service service=new ObjectServiceFactory().create(ITestService.class);
XFireProxyFactory factory=new XFireProxyFactory(XFireFactory.newInstance().getXFire());
String url="http://localhost/webServiceXFire/services/TestService";
try {
ITestService srv=(ITestService) factory.create(service,url);
String result=srv.example("Hello");
System.out.println(result);
System.out.println(srv.sum(2, 6));
System.out.println(srv.getStudentByName("Alvin").getAge()); } catch (MalformedURLException e) {
e.printStackTrace();
}
}
}
找了好久,原因Student.java缺少一个无参构造,加上就可以了
分享到:
相关推荐
webservice Xfire 源碼整合
XFire(现在称为Apache CXF)是一个流行的开源Java框架,用于构建和消费Web服务。它支持多种协议和服务模型,包括SOAP、RESTful、WS-*规范等,使得开发者能够方便地实现Web服务功能。 本示例将带你了解如何配置...
webservice xfire 需要的架包
【标题】"webService-xfire入门doc" 涉及的是Web服务技术中的XFire框架,这是一款用于构建和消费Web服务的开源Java库。XFire是早期流行的Web服务实现,它允许开发者轻松地将Java对象转换为Web服务,反之亦然。 ...
在IT领域,Xfire的.jar包通常包含了用于构建或运行Xfire Web服务的相关组件和库。 首先,我们需要理解.jar文件是什么。.jar(Java Archive)是Java平台上的一种归档文件格式,主要用于集合多个类文件、相关的元数据...
标题“Xfire调用WebService无法传递参数问题”暗示了开发者在尝试使用Xfire框架时遇到了参数无法正常传递到Web服务的情况。这可能涉及到多个方面,如编码问题、序列化错误、类型不匹配或者配置不正确等。以下是一些...
总结来说,"webservice XFire xml解析"这个项目涉及到Java Web服务开发,使用了XFire作为框架,XML作为数据交换格式,并在JDK 1.6和Tomcat 6.0环境下运行。通过学习和实践这个项目,你可以掌握Web服务的创建、部署、...
【标题】中的“webservice xfire整合spring(webservice配置采用注解)”是指将Xfire,一个早期的Web服务框架,与Spring框架结合使用,其中Web服务的配置通过Spring的注解方式进行。这种方式简化了配置,提高了开发...
XFire是Java平台上的一个开源Web服务框架,它简化了创建和消费Web服务的过程。本篇文章将深入探讨如何使用XFire客户端调用Web服务,以及对象传递在Web服务开发中的应用。 首先,理解Web服务的基本概念至关重要。Web...
在这个“webservice xfire spring2.0完整实例”中,我们将会探讨如何结合XFire 1.2.6和Spring 2.0来创建和消费Web服务。首先,我们需要理解Spring 2.0中的Web服务抽象层,即Spring Web Services模块。这个模块提供了...
标题"Xfire调用webservice无法接收到参数问题解决"指出的核心问题是:当使用Xfire作为客户端调用Web服务时,服务端无法正确接收到传递的参数。这可能是由于多种原因引起的,如: 1. **XML序列化与反序列化问题**:...
【WebService XFire开发指南】 在IT行业中,WebService是一种基于开放标准(如SOAP、WSDL和UDDI)的协议,允许不同系统之间的应用程序通过互联网进行通信。它提供了一种松散耦合的方式,使得分布式系统可以共享数据...
Flex4和WebService XFire是两种在开发Web应用程序时常用的技术。Flex4是Adobe Flex框架的第四个主要版本,主要用于构建富互联网应用程序(RIA),提供强大的客户端用户体验。它使用ActionScript编程语言,基于MXML和...
"Java 使用 XFire 调用 webService 接口" 在本文中,我们将学习如何使用 XFire 框架在 Java 中调用 webService 接口。XFIRE 是一个基于 Java 的开源框架,用于简化 Web 服务的开发和集成。下面,我们将通过一个简单...
【标题】: 使用XFire发布WebService 在Web服务的世界中,XFire是一个强大的开源框架,它使得开发和部署Web服务变得简单。XFire是Apache CXF的前身,它提供了全面的WS-*支持,包括SOAP、WSDL、UDDI、MTOM等标准,...
Web服务在IT行业中扮演着重要的角色,允许不同的系统和应用程序之间进行数据交换和通信。而XFire是一个已不再维护的开源Java Web服务框架,它曾经是Apache CXF的...如果有任何问题,参考相关博客或文档以获取更多帮助。
在"webService xfire学习资料及jar包"中,我们主要关注的是XFire如何被用于创建和消费Web服务,以及它所包含的官方jar包。XFire的核心优势在于其简单易用的API和对SOAP(Simple Object Access Protocol)协议的良好...
1. webservice xfire的完整demo,下载后可以直接导入eclipse调试。 2. 包括客户端和服务端,服务端需要部署到tomcat等web容器,启动服务端后可以通过客户端测试调用结果。 3. 工程已经将依赖的jar包一起包含,不需要...