怎么使用WebService中的自定义类型

Tarquila 2004-11-09 10:51:48
我想要WebService得方法返回自定义类型,也就是一个Object的实例。不知道怎么返回。我写好代码了,但是报错。各位大哥请帮个忙把。

我是Tomcat+Axis.

Book类
package com.bookstore.model;

public class Book {
private String name;
private String ISDN;
private int page;

public String getISDN() {
return ISDN;
}

public String getName() {
return name;
}

public int getPage() {
return page;
}

public void setISDN(String string) {
ISDN = string;
}

public void setName(String string) {
name = string;
}

public void setPage(int i) {
page = i;
}
}

BookSvc类,具体发布出来的类
package com.bookstore;

import com.bookstore.model.Book;

public class BookSvc {

public Book getBook() {
Book b = new Book();
b.setISDN("abcd");
b.setName("Dead line");
b.setPage(100);
return b;
}
}

但是我运行的时候老师报错(http://localhost:8080/WebServiceDemo/services/BookSvc?method=getBook)
AXIS error
Sorry, something seems to have gone wrong... here are the details:

Fault - ; nested exception is:
java.io.IOException: No serializer found for class com.bookstore.model.Book in registry org.apache.axis.encoding.TypeMappingImpl@33c658
AxisFault
faultCode: {http://schemas.xmlsoap.org/soap/envelope/}Server.userException
faultSubcode:
faultString: java.io.IOException: No serializer found for class com.bookstore.model.Book in registry org.apache.axis.encoding.TypeMappingImpl@33c658
faultActor:
faultNode:
faultDetail:


请那个知道的兄弟帮个忙,一定送分谢谢了。
...全文
239 4 打赏 收藏 转发到动态 举报
写回复
用AI写文章
4 条回复
切换为时间正序
请发表友善的回复…
发表回复
rainight 2004-11-09
  • 打赏
  • 举报
回复
在你的server-config.xml中要加入
<typeMapping/>,把你的Book注册进去,类似这样的:

<typeMapping
encodingStyle="http://schemas.xmlsoap.org/soap/encoding/"
qname="ns2:SubjectBaseInfo"
languageSpecificType="java:com.bookstore.model.Book"
serializer="org.apache.axis.encoding.ser.BeanSerializerFactory"
deserializer="org.apache.axis.encoding.ser.BeanDeserializerFactory"
name="SubjectBaseInfo" regenerateElement="true" xmlns:ns2="http://bookstore.com"/>
yaray 2004-11-09
  • 打赏
  • 举报
回复
被传递的对象需要实现java.io.Serializable接口
usabcd 2004-11-09
  • 打赏
  • 举报
回复
自定义类型需要声明序列化器。所谓序列化就是告诉Axis怎样将你的对象用xml传输,反之亦然。
你这个是标准的Value Object
使用Axis内置的序列化器即可
BeanSerializerFactory
BeanDeserializerFactory
客户端和服务端都要声明。
参考Axis示例中的
faults/EmployementClient.java
faults/deploy.wsdd
yaray 2004-11-09
  • 打赏
  • 举报
回复
public class Book implements Serializable{
...
}

67,515

社区成员

发帖
与我相关
我的任务
社区描述
J2EE只是Java企业应用。我们需要一个跨J2SE/WEB/EJB的微容器,保护我们的业务核心组件(中间件),以延续它的生命力,而不是依赖J2SE/J2EE版本。
社区管理员
  • Java EE
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧