`
alvinqq
  • 浏览: 185396 次
  • 性别: Icon_minigender_1
  • 来自: 深圳
社区版块
存档分类
最新评论

webservice XFire问题

阅读更多
在用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 源码整合

    webservice Xfire 源碼整合

    webservice xfire配置示例

    XFire(现在称为Apache CXF)是一个流行的开源Java框架,用于构建和消费Web服务。它支持多种协议和服务模型,包括SOAP、RESTful、WS-*规范等,使得开发者能够方便地实现Web服务功能。 本示例将带你了解如何配置...

    webservice xfire架包

    webservice xfire 需要的架包

    webService-xfire入门doc

    【标题】"webService-xfire入门doc" 涉及的是Web服务技术中的XFire框架,这是一款用于构建和消费Web服务的开源Java库。XFire是早期流行的Web服务实现,它允许开发者轻松地将Java对象转换为Web服务,反之亦然。 ...

    webservice Xfire .jar包

    在IT领域,Xfire的.jar包通常包含了用于构建或运行Xfire Web服务的相关组件和库。 首先,我们需要理解.jar文件是什么。.jar(Java Archive)是Java平台上的一种归档文件格式,主要用于集合多个类文件、相关的元数据...

    Xfire调用webservice无法传递参数问题

    标题“Xfire调用WebService无法传递参数问题”暗示了开发者在尝试使用Xfire框架时遇到了参数无法正常传递到Web服务的情况。这可能涉及到多个方面,如编码问题、序列化错误、类型不匹配或者配置不正确等。以下是一些...

    webservice XFire xml解析

    总结来说,"webservice XFire xml解析"这个项目涉及到Java Web服务开发,使用了XFire作为框架,XML作为数据交换格式,并在JDK 1.6和Tomcat 6.0环境下运行。通过学习和实践这个项目,你可以掌握Web服务的创建、部署、...

    webservice xfire整合spring(webservice配置采用注解)例子

    【标题】中的“webservice xfire整合spring(webservice配置采用注解)”是指将Xfire,一个早期的Web服务框架,与Spring框架结合使用,其中Web服务的配置通过Spring的注解方式进行。这种方式简化了配置,提高了开发...

    webservice xfire 客户端调用实现

    XFire是Java平台上的一个开源Web服务框架,它简化了创建和消费Web服务的过程。本篇文章将深入探讨如何使用XFire客户端调用Web服务,以及对象传递在Web服务开发中的应用。 首先,理解Web服务的基本概念至关重要。Web...

    webservice xfire spring2.0完整实例

    在这个“webservice xfire spring2.0完整实例”中,我们将会探讨如何结合XFire 1.2.6和Spring 2.0来创建和消费Web服务。首先,我们需要理解Spring 2.0中的Web服务抽象层,即Spring Web Services模块。这个模块提供了...

    Xfire调用webservice无法接收到参数问题解决

    标题"Xfire调用webservice无法接收到参数问题解决"指出的核心问题是:当使用Xfire作为客户端调用Web服务时,服务端无法正确接收到传递的参数。这可能是由于多种原因引起的,如: 1. **XML序列化与反序列化问题**:...

    WebService XFire开发指南

    【WebService XFire开发指南】 在IT行业中,WebService是一种基于开放标准(如SOAP、WSDL和UDDI)的协议,允许不同系统之间的应用程序通过互联网进行通信。它提供了一种松散耦合的方式,使得分布式系统可以共享数据...

    Flex4 +WebService XFire

    Flex4和WebService XFire是两种在开发Web应用程序时常用的技术。Flex4是Adobe Flex框架的第四个主要版本,主要用于构建富互联网应用程序(RIA),提供强大的客户端用户体验。它使用ActionScript编程语言,基于MXML和...

    java使用XFire调用webService接口

    "Java 使用 XFire 调用 webService 接口" 在本文中,我们将学习如何使用 XFire 框架在 Java 中调用 webService 接口。XFIRE 是一个基于 Java 的开源框架,用于简化 Web 服务的开发和集成。下面,我们将通过一个简单...

    使用XFire发布WebService

    【标题】: 使用XFire发布WebService 在Web服务的世界中,XFire是一个强大的开源框架,它使得开发和部署Web服务变得简单。XFire是Apache CXF的前身,它提供了全面的WS-*支持,包括SOAP、WSDL、UDDI、MTOM等标准,...

    webservice xfire jar包 spring

    Web服务在IT行业中扮演着重要的角色,允许不同的系统和应用程序之间进行数据交换和通信。而XFire是一个已不再维护的开源Java Web服务框架,它曾经是Apache CXF的...如果有任何问题,参考相关博客或文档以获取更多帮助。

    webService xfire学习资料及jar包

    在"webService xfire学习资料及jar包"中,我们主要关注的是XFire如何被用于创建和消费Web服务,以及它所包含的官方jar包。XFire的核心优势在于其简单易用的API和对SOAP(Simple Object Access Protocol)协议的良好...

    webservice xfire 的完整的demo例子,下载后即可运行

    1. webservice xfire的完整demo,下载后可以直接导入eclipse调试。 2. 包括客户端和服务端,服务端需要部署到tomcat等web容器,启动服务端后可以通过客户端测试调用结果。 3. 工程已经将依赖的jar包一起包含,不需要...

Global site tag (gtag.js) - Google Analytics