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.