相关疑难解决方法(0)

使用JAXB解组/编组List <String>

我正在尝试创建一个非常简单的REST服务器.我只有一个将返回字符串列表的测试方法.这是代码:


@GET
@Path("/test2")
public List test2(){
    List list=new Vector();
    list.add("a");
    list.add("b");
    return list;
}

它给出以下错误:

SEVERE: A message body writer for Java type,
class java.util.Vector, and MIME media type,
application/octet-stream, was not found

我希望JAXB有一个简单类型的默认设置,如String,Integer等.我猜不是.这是我想象的:


<Strings>
  <String>a</String>
  <String>b</String>
</Strings>
Run Code Online (Sandbox Code Playgroud)

使这种方法有效的最简单方法是什么?

java rest jaxb

45
推荐指数
6
解决办法
12万
查看次数

JAXRS客户端找不到邮件正文编写器

我有一个像这样配置的jaxrs客户端:

<jaxrs:client id="opaRestProxy" name="opaRestProxy"
        address="${endpoint}" serviceClass="com.test.RestProxy"
        inheritHeaders="true" threadSafe="true">
        <jaxrs:headers>
            <entry key="Accept" value="application/json" />
            <entry key="Content-Type" value="application/json" />
        </jaxrs:headers>
    </jaxrs:client>
Run Code Online (Sandbox Code Playgroud)

但是当我发送请求时,我得到以下异常:

Caused by: org.apache.cxf.interceptor.Fault: .No message body writer has been found for class : class com.test.RequestObject, ContentType : application/json.
    at org.apache.cxf.jaxrs.client.ClientProxyImpl$BodyWriter.handleMessage(ClientProxyImpl.java:646)
    at org.apache.cxf.phase.PhaseInterceptorChain.doIntercept(PhaseInterceptorChain.java:263)
    at org.apache.cxf.jaxrs.client.ClientProxyImpl.doChainedInvocation(ClientProxyImpl.java:527)
    ... 47 more
Run Code Online (Sandbox Code Playgroud)

我的RestProxy类看起来像这样:

@Component
public interface RestProxy {

  @POST
  @Path("/getSomething")
  String getSomething(RequestObject RequestObject);
}
Run Code Online (Sandbox Code Playgroud)

java json cxf jax-rs

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

CXF:警告:找不到消息类编写器的响应类ArrayList

我收到以下错误:

WARNING: No message body writer has been found for response class ArrayList.
Run Code Online (Sandbox Code Playgroud)

在以下代码上:

    @GET
    @Consumes("application/json")
    public List getBridges() {
        return  new ArrayList(bridges);
    }
Run Code Online (Sandbox Code Playgroud)

我知道CXF可以处理这种情况,因为我之前已经做过-使用一个在后台定义CXF和相关Maven工件的平台(即,我不知道它是如何完成的)。

因此,问题是:如何在不添加XML绑定或其他源代码修改的情况下使CXF支持此功能?

请注意,以下答案使用XML绑定解决了相同的问题,这对我而言并不令人满意: 没有为响应类ArrayList找到消息正文编写器

cxf

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

标签 统计

cxf ×2

java ×2

jax-rs ×1

jaxb ×1

json ×1

rest ×1