Java 在CXF@WebMethod中呈现自己的响应时如何设置内容类型

Java 在CXF@WebMethod中呈现自己的响应时如何设置内容类型,java,cxf,content-type,Java,Cxf,Content Type,在CXF(v2.6.3)@WebMethod中进行自己的渲染时,设置内容类型时遇到问题 以下模式可以很好地工作: @Path(“/foo”) @网络服务 公共类餐饮服务{ @路径(“/bar”) @产生({“文本/普通”}) @得到 @网络方法 公共字符串条(){ 返回“hi”; } 这将向http客户端返回“hi”,并返回内容类型:内容类型:text/plain头,这正是我所期望的 但是,当我尝试使用响应OutputStream进行自己的渲染时,正确地返回“hi”,但是@生成的注释被忽略,并

在CXF(v2.6.3)
@WebMethod
中进行自己的渲染时,设置
内容类型时遇到问题

以下模式可以很好地工作:

@Path(“/foo”)
@网络服务
公共类餐饮服务{
@路径(“/bar”)
@产生({“文本/普通”})
@得到
@网络方法
公共字符串条(){
返回“hi”;
}
这将向http客户端返回
“hi”
,并返回
内容类型:内容类型:text/plain
头,这正是我所期望的

但是,当我尝试使用响应
OutputStream
进行自己的渲染时,
正确地返回“hi”
,但是
@生成的注释被忽略,并返回默认的
文本/xml
内容类型。即使我自己调用
设置内容类型(…)
也是如此

@Path(“/heartbeat2”)
@产生({“文本/普通”})
@网络方法
@得到
公共图书馆2({
HttpServletResponse=messageCtx.getHttpServletResponse();
response.getOutputStream().write(“hi.getBytes());
//有或没有该行都会失败
response.setContentType(“文本/普通”);
}
以下是输出:

HTTP/1.1 200 OK
Content-Type: text/xml
Content-Length: 2
Connection: keep-alive
Server: Jetty(8.1.9.v20130131)

hi

知道如何将自己的输出直接呈现到输出流并适当设置内容类型吗?请提前感谢。

我看不出您所做的有任何错误。至少在
HttpServletResponse
中设置内容类型应该可以。无论如何,如果使用,您可以更好地控制返回的内容ode>javax.ws.rs.core.Response
。看看这是否有效:

@Path("/foo")
@WebService
public class FooService {
    @Path("/bar")
    @GET
    @WebMethod
    public Response bar() {
        return Response.ok().type("text/plain").entity("hi").build();
    }
    ...