У меня возникают проблемы с установкой Content-Type
, когда я выполняю собственный рендеринг внутри CXF (v2.6.3) @WebMethod
.Как установить тип содержимого при рендеринге моего собственного ответа в CXF @WebMethod
Следующая модель работает отлично:
@Path("/foo")
@WebService
public class FooService {
@Path("/bar")
@Produces({ "text/plain" })
@GET
@WebMethod
public String bar() {
return "hi";
}
Это возвращает "hi"
к HTTP-клиент с Content-Type: Content-Type: text/plain
заголовком, который является то, что я ожидал.
Однако, когда я пытаюсь сделать свой собственный рендеринг с помощью реакции OutputStream
, "hi"
правильно возвращаются, но @Produces
аннотацию игнорируются, и по умолчанию text/xml
типа контента возвращается. Это верно, даже если я сам звоню setContentType(...)
.
@Path("/heartbeat2")
@Produces({ "text/plain" })
@WebMethod
@Get
public void heartbeat2() {
HttpServletResponse response = messageCtx.getHttpServletResponse();
response.getOutputStream().write("hi".getBytes());
// fails with or without this line
response.setContentType("text/plain");
}
Вот результат:
HTTP/1.1 200 OK
Content-Type: text/xml
Content-Length: 2
Connection: keep-alive
Server: Jetty(8.1.9.v20130131)
hi
Любая идея, как я могу вынести свой собственный выход непосредственно в выходной поток-и установить тип содержимого надлежащим образом? Заранее спасибо.
Да, это правильный способ сделать это. Большое спасибо. – Gray