最近在做Android使用ksoap2包调用Webservice,自己写了Webservice发布在Jboss上做测试时,
出现javax.xml.bind.UnmarshalException,异常内容为
Caused by: javax.xml.bind.UnmarshalException: unexpected element (uri:"http://apj.vote.webservice.com", local:"arg0"). Expected elements are <{}arg0>
原因:服务器端的Webservice的接口方法的参数没有设置好参数名称和命名空间
解决办法,使用@WebParam注解添加参数名称和命名空间
例如:
接口代码:
package com.apj.webservice;
import javax.jws.WebMethod;
import javax.jws.WebParam;
import javax.jws.WebResult;
import javax.jws.WebService;
@WebService(targetNamespace = "http://apj.vote.com", name = "VoteWebService", serviceName = "VoteWebService")
public interface VoteWebService {
@WebResult(name="return",targetNamespace="http://apj.vote.com")
@WebMethod
public String vote(@WebParam(name = "teamid",targetNamespace="http://apj.vote.com") long teamid);
}
实现类
package com.apj.webservice.impl;
import javax.ejb.Remote;
import javax.ejb.Stateless;
import javax.inject.Inject;
import javax.jws.WebMethod;
import javax.jws.WebParam;
import javax.jws.WebResult;
import javax.jws.WebService;
import javax.persistence.EntityManager;
import javax.persistence.PersistenceContext;
import org.jboss.logging.Logger;
import com.apj.model.Team;
import com.apj.webservice.VoteWebService;
@WebService(targetNamespace = "http://apj.vote.com", name = "VoteWebService", serviceName = "VoteWebService")
@Stateless
@Remote(VoteWebService.class)
public class VoteWebServiceImpl implements VoteWebService {
@WebResult(name="return",targetNamespace="http://apj.vote.com")
@WebMethod
public String vote(@WebParam(name = "teamid",targetNamespace="http://apj.vote.com") long teamid) {
System.out.println("team id ====" + teamid);
return teamid + "";
}
}
分享到:
相关推荐
2. **JAXB组件**:`javax.xml.bind`和`com.sun.xml.bind`等,用于XML与Java对象之间的自动转换。JAXB使得数据能在XML文档和Java对象间轻松地进行绑定和反绑定,简化了Web服务的数据处理。 3. **WSDL生成与解析**:...
`javax.xml.bind`包包含了如`Unmarshaller`和`Marshaller`等核心类,它们可以将Java对象转换为XML,反之亦然。 3. **木材sa-jaxb-runtime.jar**: 这是JAXB运行时库,包含了JAXB API的具体实现。在编译时,JAXB ...
相关的类主要在`javax.xml.bind`包下。 4. **JAF (Java Activation Framework)**:此框架用于处理MIME多部分对象,比如电子邮件中的附件。在WebService中,当涉及到复杂的数据交换时,JAF可以帮助解析和创建MIME...
3. `com.sun.xml.bind.jar`:JAXB(Java Architecture for XML Binding)的实现,用于将Java对象转换为XML格式,反之亦然。 JAX-RS则是用于创建RESTful Web服务的标准API,它简化了构建HTTP服务的步骤,使得开发者...
`javax.xml.bind.JAXBContext`和`javax.xml.bind.Marshaller`等类用于实现这一功能。 4. **StAX(Streaming API for XML)**:StAX是一种流式解析API,它允许开发者通过迭代器逐个处理XML事件,提供了向前和向后...
本篇文章将深入探讨如何创建一个基础的Web服务,并解决可能出现的错误。 首先,创建一个Web服务服务器端程序。使用JDK 6及以上版本是必要的,因为JAX-WS在这些版本中得到支持。以下是一个简单的示例: ```java ...
import javax.xml.bind.annotation.XmlElement; import javax.xml.bind.annotation.XmlRootElement; @XmlRootElement(name=getWeatherbyCityName,namespace=http://WebXml.com.cn/) public class CityReq { ...
- `javax.xml.bind.annotation.jar`: 包含JAXB的注解定义。 4. **HTTP客户端**: 为了通过HTTP/HTTPS协议发送请求,可能需要: - `httpclient.jar`: Apache HttpClient库,提供HTTP通信功能。 - `...