用CXF传递复杂的数据类型,比如dto
@XmlType(name = "Customer")
@XmlAccessorType(XmlAccessType.FIELD)
public class Customer {
private long id;
private String name;
private Date birthday;
public long getId() {
return id;
}
public void setId(long id) {
this.id = id;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public Date getBirthday() {
return birthday;
}
public void setBirthday(Date birthday) {
this.birthday = birthday;
}
}
interface
@WebService
public interface TestService {
String testString(String name);
int testInt(int a, int b);
List<String> testList(List<String> list);
Customer testObject(Customer c);
}
实现类
public Customer testObject(Customer c) {
Customer ct = new Customer();
ct.setId(2L);
ct.setName("11");
ct.setBirthday(new Date());
return ct;
}
测试类
public void testObject() {
try {
Customer ct = new Customer();
ct.setId(1L);
ct.setName("33");
ct.setBirthday(new Date());
Object obj[] = client.invoke("testObject", ct);
Customer cc = (Customer) obj[0];
System.out.println(ct.getBirthday());
} catch (Exception e) {
e.printStackTrace();
}
}
当调用的时候,报错
Caused by: javax.xml.bind.JAXBException: class com.infodms.ws.dto.Customer nor any of its super class is known to this context.
at com.sun.xml.bind.v2.runtime.JAXBContextImpl.getBeanInfo(JAXBContextImpl.java:594)
at com.sun.xml.bind.v2.runtime.XMLSerializer.childAsXsiType(XMLSerializer.java:648)
... 41 more
上网搜了一下,找不到合理的解释,把testObject的参数去掉,只留下返回值,报错
java.lang.ClassCastException: com.infodms.ws.test.Customer cannot be cast to com.infodms.ws.dto.Customer
奇怪了Customer类明明是dto包中的类怎么cxf认为是test包中的类,原来接口和实现类都是test包中的类,cxf在object和xml转换的时候会默认在同一个包下面找dto,如果找不到则报错,把这个dto跟接口和实现类放到同一个包下面,问题解决。
我如果不想把dto和接口放到同一个包下面又该怎么办呢?我们需要在dto的上面定义它的namespace,注意这个字符串跟包名的顺序是相反的
@XmlType(name = "Customer", namespace = "dto.ws.infodms.com")
问题解决。
分享到:
相关推荐
org.springframework.web.context.support.ServletContextPropertyPlaceholderConfigurer.class org.springframework.web.context.support.ServletContextResource.class org.springframework.web.context.support....
The default behavior of this method is to call addCookie(Cookie cookie) on the wrapped response object. addCookie(Cookie) - Method in interface javax.servlet.http.HttpServletResponse Adds the ...
javax.ejb.EntityContext.class javax.ejb.FinderException.class javax.ejb.Handle.class javax.ejb.HomeHandle.class javax.ejb.MessageDrivenBean.class javax.ejb.MessageDrivenContext.class javax.ejb....
javax.ejb.EntityContext.class javax.ejb.FinderException.class javax.ejb.Handle.class javax.ejb.HomeHandle.class javax.ejb.IllegalLoopbackException.class javax.ejb.Init.class javax.ejb.Local.class ...
Goals: This assignment is designed to reinforce the student's understanding of the use of hash tables as searchable containers. Outcomes: Students successfully completing this assignment would master...
org.hamcrest.core.AnyOf.class org.hamcrest.core.DescribedAs.class org.hamcrest.core.Is.class org.hamcrest.core.IsAnything.class org.hamcrest.core.IsEqual.class org.hamcrest.core.IsInstanceOf.class org...
javax.ejb.EntityContext.class javax.ejb.FinderException.class javax.ejb.Handle.class javax.ejb.HomeHandle.class javax.ejb.IllegalLoopbackException.class javax.ejb.Init.class javax.ejb.Local.class ...
大家好,今天给大家分享一下Android里的Context的一些用法. 这里大致可以分为两种:一是传递Context参数,二是调用全局的Context. 其实我们应用启动的时候会启动Application这个类,这个类是在AndroidManifest.xml...
结合`class.phpmailer.php`、`class.smtp.php`和`class.pop3.php`,我们可以构建出稳定的邮件系统,满足各种邮件应用场景的需求。对于初学者而言,理解并掌握PHPMailer的使用方法,将极大地提升其在PHP邮件处理方面...
printStackTrace is a method of the Throwable class. By using this method we can get more information about the error process if we print a stack trace from the exception. Runtime Errors Errors are ...
SqlHelper.class.php MyMiniSmarty.class.php emManage.php FenyePage.class.php Emp.class.php EmpModel.class.php Message.class.php Message.class.php MessageModel.class.php ............... 由于...
1) Before you do anything else, read the "Known problems" section of this document. 2) Install the source into a directory of your choice. The files are installed into three directories: DragDrop ...
This is today’s best beginner’s guide to writing C programs–and to learning skills you can use with practically any language. Its simple, practical instructions will help you start creating useful,...
This function gets the default window handle to the IME class. ImmGetDescription This function copies the description of the IME to the specified buffer. ImmGetGuideLine This function gets ...
发送邮件时需要的类库文件,测试支持qq邮箱、163邮箱
This is today’s best beginner’s guide to writing C programs–and to learning skills you can use with practically any language. Its simple, practical instructions will help you start creating useful,...
org.apache.commons.lang.ClassUtils.class org.apache.commons.lang.Entities$ArrayEntityMap.class org.apache.commons.lang.Entities$BinaryEntityMap.class org.apache.commons.lang.Entities$EntityMap....
The goal of this guide is to manage this complexity by describing in detail the dos and don'ts of writing C++ code. These rules exist to keep the code base manageable while still allowing coders to ...
This is a listing of all of the Microsoft Windows resources that the program uses. It includes the icons, bitmaps, and cursors that are stored in the RES subdirectory. This file can be directly ...
在这个名为"class-of-builtins.rar_class"的压缩包里,包含的两个文件——10.1.5-1.js和class-of-builtins.js,很可能是关于JavaScript中的内置类以及自定义类的示例或教程。 1. **JavaScript 中的类(Class)** ...