标签: jaxb

没有为响应类型找到合适的HttpMessageConverter

使用spring,使用以下代码:

List<HttpMessageConverter<?>> messageConverters = restTemplate.getMessageConverters();
for(HttpMessageConverter httpMessageConverter : messageConverters){
  System.out.println(httpMessageConverter);
}
ResponseEntity<ProductList> productList = restTemplate.getForEntity(productDataUrl,ProductList.class);
Run Code Online (Sandbox Code Playgroud)

我明白了

org.springframework.http.converter.ByteArrayHttpMessageConverter@34649ee4
org.springframework.http.converter.StringHttpMessageConverter@39fba59b
org.springframework.http.converter.ResourceHttpMessageConverter@383580da
org.springframework.http.converter.xml.SourceHttpMessageConverter@409e850a
org.springframework.http.converter.support.AllEncompassingFormHttpMessageConverter@673074aa
org.springframework.http.converter.xml.Jaxb2RootElementHttpMessageConverter@1e3b79d3
org.springframework.http.converter.json.MappingJackson2HttpMessageConverter@52bb1b26

org.springframework.web.client.RestClientException: Could not extract response: no suitable HttpMessageConverter found for response type [class com.mycopmany.ProductList] and content type [text/html;charset=UTF-8]
Run Code Online (Sandbox Code Playgroud)

pojo的片段:

@XmlRootElement(name="TheProductList")
public class ProductList {

@XmlElement(required = true, name = "date")
private LocalDate importDate;
Run Code Online (Sandbox Code Playgroud)

java xml spring jaxb

39
推荐指数
5
解决办法
12万
查看次数

无法将类型编组为元素,因为它缺少自动生成的类的@XmlRootElement注释

我需要针对我的模式验证Class对象,在该模式中我提供了正则表达式来验证自动生成的JAXB类的字段.当我尝试验证我的类对象时,我得到以下错误:

无法编组类型"xyz"作为元素,因为它缺少@XmlRootElement注释

这是我用来验证自动生成的类对象的代码:

jc = JAXBContext.newInstance(obj.getClass());
source = new JAXBSource(jc, obj);
Schema schema = schemaInjector.getSchema();
Validator validator = schema.newValidator();
validator.validate(source);
Run Code Online (Sandbox Code Playgroud)

还有其他方法可以解决这个问题吗?

java schema jaxb java-ee

39
推荐指数
3
解决办法
7万
查看次数

排除JAXB中的字段

我有2个班:

@XmlRootElement
public class A {

    private Long id;
    private B b;

    // setters and getters
}
Run Code Online (Sandbox Code Playgroud)

@XmlRootElement
public class B {

    private Long id;
    private String field1;
    private String field2;

    // setters and getters
}
Run Code Online (Sandbox Code Playgroud)

默认情况下,如果我改变类的实例A到XML,我将所有的字段(id)和引用B类字段(id,field1,field2)是这样的:

<a>
    <id>2</id>
    <b>
        <id>5</id>
        <field1>test1</field1>
        <field2>test3</field2>
    </b>
</a>
Run Code Online (Sandbox Code Playgroud)

是否可以修改引用类中的哪些字段B包含在类的XML中A?例如,我想说当我转换一个A类的实例时,我只想idB类(no field1field2fields)中获取,所以我想得到:

<a>
    <id>2</id>
    <b>
        <id>5</id>
    </b> …
Run Code Online (Sandbox Code Playgroud)

java xml jaxb java-ee-6

38
推荐指数
3
解决办法
6万
查看次数

使用JAXB防止XXE攻击

最近,我们对我们的代码进行了安全审核,其中一个问题是我们的应用程序受Xml外部实体(XXE)攻击.

基本上,应用程序是一个通过Web服务以XML形式接收输入的计算器.

以下是对我们的应用程序进行此类XXE攻击的示例:

<soapenv:Envelope xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/">
   <soapenv:Header/>
   <soapenv:Body>
      <foo:calculateStuff>
         <!--Optional:-->
         <xmlInput><![CDATA[<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
<!DOCTYPE currency [  
   <!ENTITY include SYSTEM "file:///d:/" >]>
<calcinput>...</calcinput>
]]></xmlInput>
      </foo:calculateStuff>
   </soapenv:Body>
</soapenv:Envelope>
Run Code Online (Sandbox Code Playgroud)

如您所见,我们可以引用指向外部文件("file:///d:/")的实体.

关于XML输入本身(该<calcinput>...</calcinput>部分)是使用JAXB(v2.1)解组的.Web服务部分基于jaxws-rt(2.1).

我需要做些什么来保护我的网络服务?

java security ws-security jaxb xxe

38
推荐指数
1
解决办法
4万
查看次数

我应该在Maven项目中为JAXB RI使用哪些工件?

从历史上看,我总是在我的Maven项目中使用以下JAXB RI工件:

  • com.sun.xml.bind:jaxb-impl - 运行
  • com.sun.xml.bind:jaxb-xjc - 模式编译器
  • com.sun.xml.bind:jaxb-jxc - 模式生成器

从大约版本开始,2.2.10*这些工件现在被描述为"旧":

com.sun.xml.bind:jaxb-impl

旧的JAXB运行时模块.

所以看起来这些工件现在已经过时了.

问题是:

应该使用哪些工件?

java jaxb jaxb2 maven

38
推荐指数
1
解决办法
2万
查看次数

如何使用JAXB在Java中解析此XML?

我有以下XML,没有XSD或模式,我想使用JAXB解析为java对象,因为我听说它比SAX更好.有没有办法用注释或更好的方法来实现这一点?它是否使我只需要一个FosterHome类?我很难找到如何做到这一点任何帮助都很感激.

我最初想的是有一个FosterHome,Family和Child课程.使用JAXB,不再需要3个类?我不知道如何解决这个问题,因为ChildID出现在两个不同的领域.

<?xml version="1.0" encoding="UTF-8"?>
<FosterHome>
    <Orphanage>Happy Days Daycare</Orphanage>
    <Location>Apple Street</Location>
    <Families>
        <Family>
            <ParentID>Adams</ParentID>
            <ChildList>
                <ChildID>Child1</ChildID>
                <ChildID>Child2</ChildID>
            </ChildList>
        </Family>
        <Family>
            <ParentID>Adams</ParentID>
            <ChildList>
                <ChildID>Child3</ChildID>
                <ChildID>Child4</ChildID>
            </ChildList>
        </Family>
    </Families>
    <RemainingChildList>
        <ChildID>Child5</ChildID>
        <ChildID>Child6</ChildID>
    </RemainingChildList>
</FosterHome>
Run Code Online (Sandbox Code Playgroud)

java xml jaxb

37
推荐指数
1
解决办法
6万
查看次数

将Marshall结果转换为String

JAXBContext context = JAXBContext
                    .newInstance(CreateExemptionCertificate.class);
            Marshaller m = context.createMarshaller();
            m.setProperty(Marshaller.JAXB_FORMATTED_OUTPUT, Boolean.TRUE);

            m.marshal(cc, System.out);
Run Code Online (Sandbox Code Playgroud)

在上面的代码中,我将结果发送到控制台(我的意思是XML正在控制台上打印).我想把这个XML变成一个字符串.我没有得到我应该传递给marshal方法的哪个参数来获取String变量中的XML String而不是在控制台上打印它.任何有任何想法的人请分享.

java jaxb

37
推荐指数
3
解决办法
7万
查看次数

@XMLRootElement与@XmlType

@XMLRootElement和注释一个类有什么区别@XMLType.我一直在注释类@XMLType的结构将在XML模式中多次使用,@XMLRootElement何时只使用一次 - 这是最好的方法吗?

一个不同但相关的问题,我将在这里包括.该@XMLType标注有一个propOrder属性来指定其中责令其元素出现-是有一个相当于为@XMLRootElement

我正在使用这些注释与JAX-WS注释一起创建Web服务,如果这有任何区别的话.

xml jax-ws jaxb

37
推荐指数
2
解决办法
5万
查看次数

JAXB异常:此上下文不知道的类

当我调用使用CXF构建的特定的restful服务方法时,我收到以下错误,有人知道为什么以及如何解决它?

发生JAXBException:类com.octory.ws.dto.ProfileDto也不是它的任何超类都知道这个上下文...

以下是服务方法和相关的DTO:

public class Service {
   public Response results() {
   Collection<ProfileDto> profilesDto = new ArrayList<ProfileDto>();
   ...
   SearchResultDto srd = new SearchResultDto();
   srd.setResultEntities(profilesDto); // Setting profilesDto collection as resultEntities
   srd.setResultSize(resultSize);
   return Response.ok(srd).build();
   }
}
Run Code Online (Sandbox Code Playgroud)

SearchResultDto:

@XmlRootElement(name="searchResult")
public class SearchResultDto {
    private Collection resultEntities;
    private int resultSize;

    public SearchResultDto() { }

    @XmlElementWrapper(name="resultEntities")
    public Collection getResultEntities() {
        return resultEntities;
    }

    public void setResultEntities(Collection resultEntities) {
        this.resultEntities = resultEntities;
    }

    public int getResultSize() {
        return resultSize;
    }

    public void …
Run Code Online (Sandbox Code Playgroud)

java web-services cxf jaxb

36
推荐指数
4
解决办法
9万
查看次数

IllegalAnnotationException:两个类具有相同的XML类型名称

我正在JBoss 5和Java 1.6下开发Web服务.什么可能导致这个例外?下面是我简化的Web服务代码.

@Stateless
@WebService()
public class AccountWS {

@WebMethod()
public CreateAccountResponse createAccount(@WebParam(name = "request") CreateAccountRequest request) {
    return null;
}
Run Code Online (Sandbox Code Playgroud)

以下是完整的堆栈跟踪.

16:19:03,421 ERROR [AbstractKernelController] Error installing to Real: name=vfsfile:/C:/Apps/jbdevstudio/jboss-eap/jboss-as/server/default/deploy/sif_esb.esb/ state=PreReal mode=Manual requiredState=Real
org.jboss.deployers.spi.DeploymentException: Error during deploy: vfsfile:/C:/Apps/jbdevstudio/jboss-eap/jboss-as/server/default/deploy/sif_esb.esb/
at org.jboss.deployers.spi.DeploymentException.rethrowAsDeploymentException(DeploymentException.java:49)
at org.jboss.deployers.plugins.deployers.DeployerWrapper.deploy(DeployerWrapper.java:177)
at org.jboss.deployers.plugins.deployers.DeployersImpl.doDeploy(DeployersImpl.java:1440)
at org.jboss.deployers.plugins.deployers.DeployersImpl.doInstallParentFirst(DeployersImpl.java:1158)
at org.jboss.deployers.plugins.deployers.DeployersImpl.install(DeployersImpl.java:1099)
at org.jboss.dependency.plugins.AbstractControllerContext.install(AbstractControllerContext.java:348)
at org.jboss.dependency.plugins.AbstractController.install(AbstractController.java:1633)
at org.jboss.dependency.plugins.AbstractController.incrementState(AbstractController.java:935)
at org.jboss.dependency.plugins.AbstractController.resolveContexts(AbstractController.java:1083)
at org.jboss.dependency.plugins.AbstractController.resolveContexts(AbstractController.java:985)
at org.jboss.dependency.plugins.AbstractController.change(AbstractController.java:823)
at org.jboss.dependency.plugins.AbstractController.change(AbstractController.java:553)
at org.jboss.deployers.plugins.deployers.DeployersImpl.process(DeployersImpl.java:782)
at org.jboss.deployers.plugins.main.MainDeployerImpl.process(MainDeployerImpl.java:702)
at org.jboss.system.server.profileservice.repository.MainDeployerAdapter.process(MainDeployerAdapter.java:117)
at org.jboss.system.server.profileservice.repository.ProfileDeployAction.install(ProfileDeployAction.java:70)
at org.jboss.system.server.profileservice.repository.AbstractProfileAction.install(AbstractProfileAction.java:53)
at org.jboss.system.server.profileservice.repository.AbstractProfileService.install(AbstractProfileService.java:403)
at org.jboss.dependency.plugins.AbstractControllerContext.install(AbstractControllerContext.java:348)
at org.jboss.dependency.plugins.AbstractController.install(AbstractController.java:1633)
at org.jboss.dependency.plugins.AbstractController.incrementState(AbstractController.java:935) …
Run Code Online (Sandbox Code Playgroud)

java jboss jaxb jbossws

36
推荐指数
3
解决办法
5万
查看次数

标签 统计

jaxb ×10

java ×9

xml ×4

cxf ×1

java-ee ×1

java-ee-6 ×1

jax-ws ×1

jaxb2 ×1

jboss ×1

jbossws ×1

maven ×1

schema ×1

security ×1

spring ×1

web-services ×1

ws-security ×1

xxe ×1