Java Jax Ws解组错误

Java Jax Ws解组错误,java,web-services,soap,jboss,wsdl,Java,Web Services,Soap,Jboss,Wsdl,我在Jax-Ws上遇到了一个问题,而且在网上搜索了一天之后,我没有找到有效的解决方案。 我正在本地jboss eap7上运行Soap Ws 我的wsdl的相关片段如下所示: <xs:complexType name="simpleTravelingDay"> <xs:sequence> <xs:element name="gid" type="xs:string"/> <xs:element name="dayType" type="xs:lon

我在Jax-Ws上遇到了一个问题,而且在网上搜索了一天之后,我没有找到有效的解决方案。 我正在本地jboss eap7上运行Soap Ws

我的wsdl的相关片段如下所示:

<xs:complexType name="simpleTravelingDay">
<xs:sequence>
  <xs:element name="gid" type="xs:string"/>
  <xs:element name="dayType" type="xs:long"/>
  <xs:element name="date" type="xs:dateTime"/>
  <xs:element name="projectId" type="xs:long"/>

我的Web服务如下所示:

@WebService(name = "TravelTrackerWS")
public interface TravelTrackerWSLocal {

  @WebMethod(operationName = "fillSimpleTravelingDays")
  public WsAnswer fillSimpleAndTravelingDays(
      @XmlElement(required = true, nillable = false) @WebParam(name = "SimpleAndTravelingDays") List<SimpleTravelingDay> days)
      throws InsufficientRightsException;
  <soapenv:Header/>
   <soapenv:Body>
  <ser:fillSimpleTravelingDays>
     <!--1 or more repetitions:-->
     <SimpleAndTravelingDays>
        <gid>Z0030UDK</gid>
        <date>2014-10-31</date>
        <country>AU</country>
        <projectId>a</projectId>
     </SimpleAndTravelingDays>
  </ser:fillSimpleTravelingDays>
@WebService(name=“TravelTrackerWS”)
公共接口TravelTrackersLocal{
@WebMethod(operationName=“fillSimpleTravelingDays”)
公共WSResponse Fill SimpleAndTravelingDays(
@XmlElement(必需=true,nillable=false)@webgram(name=“SimpleAndTravelingDays”)列表天数
投掷不足性感觉;
}

如果我提出这样的请求:

@WebService(name = "TravelTrackerWS")
public interface TravelTrackerWSLocal {

  @WebMethod(operationName = "fillSimpleTravelingDays")
  public WsAnswer fillSimpleAndTravelingDays(
      @XmlElement(required = true, nillable = false) @WebParam(name = "SimpleAndTravelingDays") List<SimpleTravelingDay> days)
      throws InsufficientRightsException;
  <soapenv:Header/>
   <soapenv:Body>
  <ser:fillSimpleTravelingDays>
     <!--1 or more repetitions:-->
     <SimpleAndTravelingDays>
        <gid>Z0030UDK</gid>
        <date>2014-10-31</date>
        <country>AU</country>
        <projectId>a</projectId>
     </SimpleAndTravelingDays>
  </ser:fillSimpleTravelingDays>

Z0030UDK
2014-10-31
金
A.

我得到一个解组错误,这是正确的,因为“a”是一个字符串,不长

    <soap:Envelope xmlns:soap="http://schemas.xmlsoap.org/soap/envelope/">
   <soap:Body>
      <soap:Fault>
         <faultcode>soap:Client</faultcode>
     <faultstring>Unmarshalling Error: For input string: "a"</faultstring>
  </soap:Fault>

soap:客户端
解组错误:对于输入字符串:“a”

我现在的问题是。如何捕获解组错误,以便抛出一般错误消息而不是解组错误


我希望任何人都能帮助我

您可以使用
ValidationEventHandler
更改错误消息

例如:

要将端点配置为使用此处理程序,可以添加一个将处理程序插入上下文的拦截器

public class ValidationInterceptor extends AbstractPhaseInterceptor<Message> {


    public ValidationInterceptor() {
        super(Phase.READ);
    }

    public void handleMessage(Message message) throws Fault {
        message.setContextualProperty("jaxb-validation-event-handler", new MyValidationEventHandler());

    }

}
在JBoss 7中,为了实现这一点,您必须将依赖项添加到cxf:



您可以在中看到完整的示例:

错误是因为您在pojo(java类)中将数据类型定义为“long”,但您正在尝试发送一个字符形式的“a”。您可以在Camel-Route或Java类中以多种方式使用自定义异常处理此问题。我为日期时间字段写了完全相同的东西,下面是编写代码的基本示例。步骤: 1.编写CustomException.java(MyException扩展异常) 2.从Camel路由(doTry()…doCatch(MyException.class)到异常(new MyException)…end())调用它,类似这样。 或者您可以作为OneException(MyException.class)调用,但这将充当全局异常。
3.瞧!!如果您需要进一步的帮助,请在此处告诉我:-)

您好,谢谢您的快速回答。我尝试了您的解决方案,但SchemaValidation处理程序似乎需要ValidationErrorHandler而不是DefaultValidationEventHandler。所以我尝试了这个解决方案:`公共类WsValidationEventHandler扩展ValidationErrorHandler{@Override public void warning(最终SAXParseException异常)抛出SAXException{throw exception;}@Override public void error(最终SAXParseException异常)抛出SAXException{throw exception;}@Override public void fatalError(最终SAXParseException异常)抛出SAXParseException{throw exception;}}}`但似乎没有使用这些方法,因为我收到了与以前相同的错误消息。我刚刚意识到我得到了一个com.sun.istack.SAXParseException2。saxparseexception中的2是否会导致此问题?@basbe我在jboss AS 6中使用了此解决方案,并按预期工作。您使用的是哪个版本的jboss?我使用的是jboss eap6.1。您使用的是哪种方案?com.sun.xml.ws.developer?欢迎使用SO,请参考此文档以更好地展示您的问题/答案: