配置SAXParser以在WildFly上使用DOCTYPE处理XML文档

问题描述

接收异常

javax.servlet.servletexception: org.jboss.resteasy.plugins.providers.jaxb.JAXBUnmarshalException: javax.xml.bind.UnmarshalException
 - with linked exception:
[org.xml.sax.SAXParseException; lineNumber: 2; columnNumber: 10; DOCTYPE is disallowed when the feature "http://apache.org/xml/features/disallow-doctype-decl" set to true.]

使用RestEasy客户端api通过XML文档中的DOCTYPE声明查询RETSfule Web服务时。

运行时环境

WildFly是JBoss的Java EE应用程序服务器。

RestEasy是Wildfly中包含的JBoss的Java EE REST / RESTFul(JAX-RS)规范的实现。

下面的代码可以复制/显示该过程。

XML文档

<?xml version="1.0" standalone="no"?>
<!DOCTYPE retsjaxb SYstem "retsjaxb.dtd">
<retsJaxb>
<fname>Jack</fname>
<lname>Daxter</lname>
</retsJaxb>

JAXB

import javax.xml.bind.annotation.XmlAccesstype;
import javax.xml.bind.annotation.XmlAccessorType;
import javax.xml.bind.annotation.XmlElement;
import javax.xml.bind.annotation.XmlRootElement;

    @XmlRootElement
    @XmlAccessorType(XmlAccesstype.NONE)
    public class RetsJaxb {
        private String fname;
        private String lname;
        @XmlElement
        public String getFname() {
            return fname;
        }
        public void setFname(String fname) {
            this.fname = fname;
        }
        @XmlElement
        public String getLname() {
            return lname;
        }
        public void setLname(String lname) {
            this.lname = lname;
        }
    

}

用于查询服务的Java Bean

import javax.enterprise.context.RequestScoped;
import javax.inject.Named;
import javax.ws.rs.client.Client;
import javax.ws.rs.client.ClientBuilder;
import javax.ws.rs.core.Response;

@Named
@RequestScoped
public class RetsClient {
    Logger logger = Logger.getLogger("stack");
    
    public String getJaxb() {
        Client client = ClientBuilder.newClient();
        Response response = client.target("http://localhost:8080/retesting/retsjaxb.xml").request().get();
        RetsJaxb rets = response.readEntity(RetsJaxb.class); <--- exception
        logger.info(rets.getFname());
        return "hello";
    }
    

}

解决方法

暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!

如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。

小编邮箱:dio#foxmail.com (将#修改为@)

相关问答

Selenium Web驱动程序和Java。元素在(x,y)点处不可单击。其...
Python-如何使用点“。” 访问字典成员?
Java 字符串是不可变的。到底是什么意思?
Java中的“ final”关键字如何工作?(我仍然可以修改对象。...
“loop:”在Java代码中。这是什么,为什么要编译?
java.lang.ClassNotFoundException:sun.jdbc.odbc.JdbcOdbc...