You are viewing a plain text version of this content. The canonical link for it is here.
Posted to issues@cxf.apache.org by "Gabo Manuel (JIRA)" <ji...@apache.org> on 2009/03/06 03:57:59 UTC
[jira] Commented: (CXF-2045) Custom headers lost when using Cxf
Interceptors
[ https://issues.apache.org/jira/browse/CXF-2045?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=12679481#action_12679481 ]
Gabo Manuel commented on CXF-2045:
----------------------------------
Hi Sergey,
Thanks! I'll check it out next opportunity I get. :)
Gabo
> 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
> Fix For: 2.2, 2.1.5
>
>
> 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.