Custom headers lost when using Cxf Interceptors
-----------------------------------------------
Key: CXF-2045
URL: https://issues.apache.org/jira/browse/CXF-2045
Project: CXF
Issue Type: Bug
Components: Core, REST
Affects Versions: 2.2
Environment: Java 1.5
Jetty 6.1
Reporter: Gabo Manuel
All changes to the header through the Message object in the out interceptor are
not received by client.
Server.java
public class RetestRestServer {
String basepath = "/someValue";
int port = 8080;
@SuppressWarnings("unchecked")
protected RetestRestServer() throws Exception {
JAXRSServerFactoryBean sf = new JAXRSServerFactoryBean();
sf.setResourceClasses(AccountService.class);
sf.setResourceProvider(AccountService.class,
new SingletonResourceProvider(new AccountService()));
sf.setAddress("http://localhost:"+port+basepath+"/rest/Accounts/");
List<Interceptor> out = new ArrayList<Interceptor>(1);
in.add(new RestOutHandler());
sf.setOutInterceptors(in);
sf.create();
}
public static void main(String args[]) throws Exception {
new RetestRestServer();
System.out.println("Server ready...");
}
}
RestOutInterceptor.java
public class RestOutHandler extends AbstractPhaseInterceptor<Message>{
private static Logger logger = Logger.getLogger(RestOutHandler.class);
public RestOutHandler() {
super(Phase.POST_PROTOCOL);
}
public void handleMessage(Message message) throws Fault {
Map<String, List<String>> responseHeaders = (Map<String,
List<String>>)message.get(Message.PROTOCOL_HEADERS);
if (responseHeaders == null) {
responseHeaders = new HashMap<String, List<String>>();
message.put(Message.PROTOCOL_HEADERS, responseHeaders);
}
responseHeaders.put("header1", Arrays.asList(new
String[]{"headerValue"}));
logger.debug("out message headers: " + responseHeaders);
}
}
AccountService.java
@Consumes("*/xml")
@Produces("text/xml")
@WebService(serviceName="AccountService", portName="AccountServicePort")
public class AccountService{
private static Logger logger = Logger.getLogger(AccountService.class);
@GET
@Path("/")
@WebMethod
public String getAccount(
@QueryParam("serialNumber")
@WebParam(name="serialNumber")
long serialNumber) {
logger.info("get Account received: " + serialNumber);
return "get Account received: " + serialNumber;
}
}
Please advise if more info is needed.
--
This message is automatically generated by JIRA.
-
You can reply to this email to add a comment to the issue online.