Hi Andy, isn't it only because we didn't upgrade wss4j too? (just a version conflict)
Romain Manni-Bucau Twitter: @rmannibucau Blog: http://rmannibucau.wordpress.com/ LinkedIn: http://fr.linkedin.com/in/rmannibucau Github: https://github.com/rmannibucau ---------- Forwarded message ---------- From: <andygumbre...@apache.org> Date: 2013/1/3 Subject: svn commit: r1428399 - in /openejb/trunk/openejb: ./ examples/webservice-ws-security/src/main/java/org/superbiz/calculator/ examples/webservice-ws-security/src/test/java/org/superbiz/calculator/ server/openejb-cxf/src/main/java/org/apache/openejb/serve... To: comm...@openejb.apache.org Author: andygumbrecht Date: Thu Jan 3 15:26:05 2013 New Revision: 1428399 URL: http://svn.apache.org/viewvc?rev=1428399&view=rev Log: Revert to cxf 2.6.3 Modified: openejb/trunk/openejb/examples/webservice-ws-security/src/main/java/org/superbiz/calculator/CalculatorImpl.java openejb/trunk/openejb/examples/webservice-ws-security/src/test/java/org/superbiz/calculator/CalculatorTest.java openejb/trunk/openejb/pom.xml openejb/trunk/openejb/server/openejb-cxf/src/main/java/org/apache/openejb/server/cxf/CxfWsContainer.java Modified: openejb/trunk/openejb/examples/webservice-ws-security/src/main/java/org/superbiz/calculator/CalculatorImpl.java URL: http://svn.apache.org/viewvc/openejb/trunk/openejb/examples/webservice-ws-security/src/main/java/org/superbiz/calculator/CalculatorImpl.java?rev=1428399&r1=1428398&r2=1428399&view=diff ============================================================================== --- openejb/trunk/openejb/examples/webservice-ws-security/src/main/java/org/superbiz/calculator/CalculatorImpl.java (original) +++ openejb/trunk/openejb/examples/webservice-ws-security/src/main/java/org/superbiz/calculator/CalculatorImpl.java Thu Jan 3 15:26:05 2013 @@ -37,12 +37,14 @@ import javax.jws.WebService; endpointInterface = "org.superbiz.calculator.CalculatorWs") public class CalculatorImpl implements CalculatorWs, CalculatorRemote { + @Override @RolesAllowed(value = {"Administrator"}) - public int sum(int add1, int add2) { + public int sum(final int add1, final int add2) { return add1 + add2; } - public int multiply(int mul1, int mul2) { + @Override + public int multiply(final int mul1, final int mul2) { return mul1 * mul2; } Modified: openejb/trunk/openejb/examples/webservice-ws-security/src/test/java/org/superbiz/calculator/CalculatorTest.java URL: http://svn.apache.org/viewvc/openejb/trunk/openejb/examples/webservice-ws-security/src/test/java/org/superbiz/calculator/CalculatorTest.java?rev=1428399&r1=1428398&r2=1428399&view=diff ============================================================================== --- openejb/trunk/openejb/examples/webservice-ws-security/src/test/java/org/superbiz/calculator/CalculatorTest.java (original) +++ openejb/trunk/openejb/examples/webservice-ws-security/src/test/java/org/superbiz/calculator/CalculatorTest.java Thu Jan 3 15:26:05 2013 @@ -45,8 +45,9 @@ import java.util.Properties; public class CalculatorTest extends TestCase { //START SNIPPET: setup + @Override protected void setUp() throws Exception { - Properties properties = new Properties(); + final Properties properties = new Properties(); properties.setProperty(Context.INITIAL_CONTEXT_FACTORY, "org.apache.openejb.core.LocalInitialContextFactory"); properties.setProperty("openejb.embedded.remotable", "true"); @@ -56,251 +57,252 @@ public class CalculatorTest extends Test //START SNIPPET: webservice public void testCalculatorViaWsInterface() throws Exception { - Service calcService = Service.create(new URL("http://127.0.0.1:4204/webservice-ws-security/CalculatorImpl?wsdl"), - new QName("http://superbiz.org/wsdl", "CalculatorWsService")); + final Service calcService = Service.create(new URL("http://127.0.0.1:4204/webservice-ws-security/CalculatorImpl?wsdl"), + new QName("http://superbiz.org/wsdl", "CalculatorWsService")); assertNotNull(calcService); - CalculatorWs calc = calcService.getPort(CalculatorWs.class); + final CalculatorWs calc = calcService.getPort(CalculatorWs.class); - Client client = ClientProxy.getClient(calc); - Endpoint endpoint = client.getEndpoint(); + final Client client = ClientProxy.getClient(calc); + final Endpoint endpoint = client.getEndpoint(); endpoint.getOutInterceptors().add(new SAAJOutInterceptor()); - Map<String, Object> outProps = new HashMap<String, Object>(); + final Map<String, Object> outProps = new HashMap<String, Object>(); outProps.put(WSHandlerConstants.ACTION, WSHandlerConstants.USERNAME_TOKEN); outProps.put(WSHandlerConstants.USER, "jane"); outProps.put(WSHandlerConstants.PASSWORD_TYPE, WSConstants.PW_TEXT); outProps.put(WSHandlerConstants.PW_CALLBACK_REF, new CallbackHandler() { - public void handle(Callback[] callbacks) throws IOException, UnsupportedCallbackException { - WSPasswordCallback pc = (WSPasswordCallback) callbacks[0]; + @Override + public void handle(final Callback[] callbacks) throws IOException, UnsupportedCallbackException { + final WSPasswordCallback pc = (WSPasswordCallback) callbacks[0]; pc.setPassword("waterfall"); } }); - WSS4JOutInterceptor wssOut = new WSS4JOutInterceptor(outProps); + final WSS4JOutInterceptor wssOut = new WSS4JOutInterceptor(outProps); endpoint.getOutInterceptors().add(wssOut); assertEquals(10, calc.sum(4, 6)); } public void testCalculatorViaWsInterfaceWithTimestamp1way() throws Exception { - Service calcService = Service.create(new URL("http://127.0.0.1:4204/webservice-ws-security/CalculatorImplTimestamp1way?wsdl"), - new QName("http://superbiz.org/wsdl", "CalculatorWsService")); + final Service calcService = Service.create(new URL("http://127.0.0.1:4204/webservice-ws-security/CalculatorImplTimestamp1way?wsdl"), + new QName("http://superbiz.org/wsdl", "CalculatorWsService")); assertNotNull(calcService); // for debugging (ie. TCPMon) calcService.addPort(new QName("http://superbiz.org/wsdl", - "CalculatorWsService2"), SOAPBinding.SOAP12HTTP_BINDING, - "http://127.0.0.1:8204/CalculatorImplTimestamp1way"); + "CalculatorWsService2"), SOAPBinding.SOAP12HTTP_BINDING, + "http://127.0.0.1:8204/CalculatorImplTimestamp1way"); -// CalculatorWs calc = calcService.getPort( -// new QName("http://superbiz.org/wsdl", "CalculatorWsService2"), -// CalculatorWs.class); + // CalculatorWs calc = calcService.getPort( + // new QName("http://superbiz.org/wsdl", "CalculatorWsService2"), + // CalculatorWs.class); - CalculatorWs calc = calcService.getPort(CalculatorWs.class); + final CalculatorWs calc = calcService.getPort(CalculatorWs.class); - Client client = ClientProxy.getClient(calc); - Endpoint endpoint = client.getEndpoint(); + final Client client = ClientProxy.getClient(calc); + final Endpoint endpoint = client.getEndpoint(); endpoint.getOutInterceptors().add(new SAAJOutInterceptor()); - Map<String, Object> outProps = new HashMap<String, Object>(); + final Map<String, Object> outProps = new HashMap<String, Object>(); outProps.put(WSHandlerConstants.ACTION, WSHandlerConstants.TIMESTAMP); - WSS4JOutInterceptor wssOut = new WSS4JOutInterceptor(outProps); + final WSS4JOutInterceptor wssOut = new WSS4JOutInterceptor(outProps); endpoint.getOutInterceptors().add(wssOut); assertEquals(12, calc.multiply(3, 4)); } public void testCalculatorViaWsInterfaceWithTimestamp2ways() throws Exception { - Service calcService = Service.create(new URL("http://127.0.0.1:4204/webservice-ws-security/CalculatorImplTimestamp2ways?wsdl"), - new QName("http://superbiz.org/wsdl", "CalculatorWsService")); + final Service calcService = Service.create(new URL("http://127.0.0.1:4204/webservice-ws-security/CalculatorImplTimestamp2ways?wsdl"), + new QName("http://superbiz.org/wsdl", "CalculatorWsService")); assertNotNull(calcService); // for debugging (ie. TCPMon) calcService.addPort(new QName("http://superbiz.org/wsdl", - "CalculatorWsService2"), SOAPBinding.SOAP12HTTP_BINDING, - "http://127.0.0.1:8204/CalculatorImplTimestamp2ways"); + "CalculatorWsService2"), SOAPBinding.SOAP12HTTP_BINDING, + "http://127.0.0.1:8204/CalculatorImplTimestamp2ways"); -// CalculatorWs calc = calcService.getPort( -// new QName("http://superbiz.org/wsdl", "CalculatorWsService2"), -// CalculatorWs.class); + // CalculatorWs calc = calcService.getPort( + // new QName("http://superbiz.org/wsdl", "CalculatorWsService2"), + // CalculatorWs.class); - CalculatorWs calc = calcService.getPort(CalculatorWs.class); + final CalculatorWs calc = calcService.getPort(CalculatorWs.class); - Client client = ClientProxy.getClient(calc); - Endpoint endpoint = client.getEndpoint(); + final Client client = ClientProxy.getClient(calc); + final Endpoint endpoint = client.getEndpoint(); endpoint.getOutInterceptors().add(new SAAJOutInterceptor()); endpoint.getInInterceptors().add(new SAAJInInterceptor()); - Map<String, Object> outProps = new HashMap<String, Object>(); + final Map<String, Object> outProps = new HashMap<String, Object>(); outProps.put(WSHandlerConstants.ACTION, WSHandlerConstants.TIMESTAMP); - WSS4JOutInterceptor wssOut = new WSS4JOutInterceptor(outProps); + final WSS4JOutInterceptor wssOut = new WSS4JOutInterceptor(outProps); endpoint.getOutInterceptors().add(wssOut); - Map<String, Object> inProps = new HashMap<String, Object>(); + final Map<String, Object> inProps = new HashMap<String, Object>(); inProps.put(WSHandlerConstants.ACTION, WSHandlerConstants.TIMESTAMP); - WSS4JInInterceptor wssIn = new WSS4JInInterceptor(inProps); + final WSS4JInInterceptor wssIn = new WSS4JInInterceptor(inProps); endpoint.getInInterceptors().add(wssIn); assertEquals(12, calc.multiply(3, 4)); } public void testCalculatorViaWsInterfaceWithUsernameTokenPlainPassword() throws Exception { - Service calcService = Service.create(new URL("http://127.0.0.1:4204/webservice-ws-security/CalculatorImplUsernameTokenPlainPassword?wsdl"), - new QName("http://superbiz.org/wsdl", "CalculatorWsService")); + final Service calcService = Service.create(new URL("http://127.0.0.1:4204/webservice-ws-security/CalculatorImplUsernameTokenPlainPassword?wsdl"), + new QName("http://superbiz.org/wsdl", "CalculatorWsService")); assertNotNull(calcService); // for debugging (ie. TCPMon) calcService.addPort(new QName("http://superbiz.org/wsdl", - "CalculatorWsService2"), SOAPBinding.SOAP12HTTP_BINDING, - "http://127.0.0.1:8204/CalculatorImplUsernameTokenPlainPassword"); + "CalculatorWsService2"), SOAPBinding.SOAP12HTTP_BINDING, + "http://127.0.0.1:8204/CalculatorImplUsernameTokenPlainPassword"); -// CalculatorWs calc = calcService.getPort( -// new QName("http://superbiz.org/wsdl", "CalculatorWsService2"), -// CalculatorWs.class); + // CalculatorWs calc = calcService.getPort( + // new QName("http://superbiz.org/wsdl", "CalculatorWsService2"), + // CalculatorWs.class); - CalculatorWs calc = calcService.getPort(CalculatorWs.class); + final CalculatorWs calc = calcService.getPort(CalculatorWs.class); - Client client = ClientProxy.getClient(calc); - Endpoint endpoint = client.getEndpoint(); + final Client client = ClientProxy.getClient(calc); + final Endpoint endpoint = client.getEndpoint(); endpoint.getOutInterceptors().add(new SAAJOutInterceptor()); - Map<String, Object> outProps = new HashMap<String, Object>(); + final Map<String, Object> outProps = new HashMap<String, Object>(); outProps.put(WSHandlerConstants.ACTION, WSHandlerConstants.USERNAME_TOKEN); outProps.put(WSHandlerConstants.USER, "jane"); outProps.put(WSHandlerConstants.PASSWORD_TYPE, WSConstants.PW_TEXT); outProps.put(WSHandlerConstants.PW_CALLBACK_REF, new CallbackHandler() { @Override - public void handle(Callback[] callbacks) throws IOException, UnsupportedCallbackException { - WSPasswordCallback pc = (WSPasswordCallback) callbacks[0]; + public void handle(final Callback[] callbacks) throws IOException, UnsupportedCallbackException { + final WSPasswordCallback pc = (WSPasswordCallback) callbacks[0]; pc.setPassword("waterfall"); } }); - WSS4JOutInterceptor wssOut = new WSS4JOutInterceptor(outProps); + final WSS4JOutInterceptor wssOut = new WSS4JOutInterceptor(outProps); endpoint.getOutInterceptors().add(wssOut); assertEquals(10, calc.sum(4, 6)); } public void testCalculatorViaWsInterfaceWithUsernameTokenHashedPassword() throws Exception { - Service calcService = Service.create(new URL("http://127.0.0.1:4204/webservice-ws-security/CalculatorImplUsernameTokenHashedPassword?wsdl"), - new QName("http://superbiz.org/wsdl", "CalculatorWsService")); + final Service calcService = Service.create(new URL("http://127.0.0.1:4204/webservice-ws-security/CalculatorImplUsernameTokenHashedPassword?wsdl"), + new QName("http://superbiz.org/wsdl", "CalculatorWsService")); assertNotNull(calcService); // for debugging (ie. TCPMon) calcService.addPort(new QName("http://superbiz.org/wsdl", - "CalculatorWsService2"), SOAPBinding.SOAP12HTTP_BINDING, - "http://127.0.0.1:8204/CalculatorImplUsernameTokenHashedPassword"); + "CalculatorWsService2"), SOAPBinding.SOAP12HTTP_BINDING, + "http://127.0.0.1:8204/CalculatorImplUsernameTokenHashedPassword"); -// CalculatorWs calc = calcService.getPort( -// new QName("http://superbiz.org/wsdl", "CalculatorWsService2"), -// CalculatorWs.class); + // CalculatorWs calc = calcService.getPort( + // new QName("http://superbiz.org/wsdl", "CalculatorWsService2"), + // CalculatorWs.class); - CalculatorWs calc = calcService.getPort(CalculatorWs.class); + final CalculatorWs calc = calcService.getPort(CalculatorWs.class); - Client client = ClientProxy.getClient(calc); - Endpoint endpoint = client.getEndpoint(); + final Client client = ClientProxy.getClient(calc); + final Endpoint endpoint = client.getEndpoint(); endpoint.getOutInterceptors().add(new SAAJOutInterceptor()); - Map<String, Object> outProps = new HashMap<String, Object>(); + final Map<String, Object> outProps = new HashMap<String, Object>(); outProps.put(WSHandlerConstants.ACTION, WSHandlerConstants.USERNAME_TOKEN); outProps.put(WSHandlerConstants.USER, "jane"); outProps.put(WSHandlerConstants.PASSWORD_TYPE, WSConstants.PW_DIGEST); outProps.put(WSHandlerConstants.PW_CALLBACK_REF, new CallbackHandler() { @Override - public void handle(Callback[] callbacks) throws IOException, UnsupportedCallbackException { - WSPasswordCallback pc = (WSPasswordCallback) callbacks[0]; + public void handle(final Callback[] callbacks) throws IOException, UnsupportedCallbackException { + final WSPasswordCallback pc = (WSPasswordCallback) callbacks[0]; pc.setPassword("waterfall"); } }); - WSS4JOutInterceptor wssOut = new WSS4JOutInterceptor(outProps); + final WSS4JOutInterceptor wssOut = new WSS4JOutInterceptor(outProps); endpoint.getOutInterceptors().add(wssOut); assertEquals(10, calc.sum(4, 6)); } public void testCalculatorViaWsInterfaceWithUsernameTokenPlainPasswordEncrypt() throws Exception { - Service calcService = Service.create(new URL("http://127.0.0.1:4204/webservice-ws-security/CalculatorImplUsernameTokenPlainPasswordEncrypt?wsdl"), - new QName("http://superbiz.org/wsdl", "CalculatorWsService")); + final Service calcService = Service.create(new URL("http://127.0.0.1:4204/webservice-ws-security/CalculatorImplUsernameTokenPlainPasswordEncrypt?wsdl"), + new QName("http://superbiz.org/wsdl", "CalculatorWsService")); assertNotNull(calcService); // for debugging (ie. TCPMon) calcService.addPort(new QName("http://superbiz.org/wsdl", - "CalculatorWsService2"), SOAPBinding.SOAP12HTTP_BINDING, - "http://127.0.0.1:8204/CalculatorImplUsernameTokenPlainPasswordEncrypt"); + "CalculatorWsService2"), SOAPBinding.SOAP12HTTP_BINDING, + "http://127.0.0.1:8204/CalculatorImplUsernameTokenPlainPasswordEncrypt"); -// CalculatorWs calc = calcService.getPort( -// new QName("http://superbiz.org/wsdl", "CalculatorWsService2"), -// CalculatorWs.class); + // CalculatorWs calc = calcService.getPort( + // new QName("http://superbiz.org/wsdl", "CalculatorWsService2"), + // CalculatorWs.class); - CalculatorWs calc = calcService.getPort(CalculatorWs.class); + final CalculatorWs calc = calcService.getPort(CalculatorWs.class); - Client client = ClientProxy.getClient(calc); - Endpoint endpoint = client.getEndpoint(); + final Client client = ClientProxy.getClient(calc); + final Endpoint endpoint = client.getEndpoint(); endpoint.getOutInterceptors().add(new SAAJOutInterceptor()); - Map<String, Object> outProps = new HashMap<String, Object>(); + final Map<String, Object> outProps = new HashMap<String, Object>(); outProps.put(WSHandlerConstants.ACTION, WSHandlerConstants.USERNAME_TOKEN - + " " + WSHandlerConstants.ENCRYPT); + + " " + WSHandlerConstants.ENCRYPT); outProps.put(WSHandlerConstants.USER, "jane"); outProps.put(WSHandlerConstants.PASSWORD_TYPE, WSConstants.PW_TEXT); outProps.put(WSHandlerConstants.PW_CALLBACK_REF, new CallbackHandler() { @Override - public void handle(Callback[] callbacks) throws IOException, UnsupportedCallbackException { - WSPasswordCallback pc = (WSPasswordCallback) callbacks[0]; + public void handle(final Callback[] callbacks) throws IOException, UnsupportedCallbackException { + final WSPasswordCallback pc = (WSPasswordCallback) callbacks[0]; pc.setPassword("waterfall"); } }); outProps.put(WSHandlerConstants.ENC_PROP_FILE, "META-INF/CalculatorImplUsernameTokenPlainPasswordEncrypt-client.properties"); outProps.put(WSHandlerConstants.ENCRYPTION_USER, "serveralias"); - WSS4JOutInterceptor wssOut = new WSS4JOutInterceptor(outProps); + final WSS4JOutInterceptor wssOut = new WSS4JOutInterceptor(outProps); endpoint.getOutInterceptors().add(wssOut); assertEquals(10, calc.sum(4, 6)); } public void testCalculatorViaWsInterfaceWithSign() throws Exception { - Service calcService = Service.create(new URL("http://127.0.0.1:4204/webservice-ws-security/CalculatorImplSign?wsdl"), - new QName("http://superbiz.org/wsdl", "CalculatorWsService")); + final Service calcService = Service.create(new URL("http://127.0.0.1:4204/webservice-ws-security/CalculatorImplSign?wsdl"), + new QName("http://superbiz.org/wsdl", "CalculatorWsService")); assertNotNull(calcService); // for debugging (ie. TCPMon) calcService.addPort(new QName("http://superbiz.org/wsdl", - "CalculatorWsService2"), SOAPBinding.SOAP12HTTP_BINDING, - "http://127.0.0.1:8204/CalculatorImplSign"); + "CalculatorWsService2"), SOAPBinding.SOAP12HTTP_BINDING, + "http://127.0.0.1:8204/CalculatorImplSign"); -// CalculatorWs calc = calcService.getPort( -// new QName("http://superbiz.org/wsdl", "CalculatorWsService2"), -// CalculatorWs.class); + // CalculatorWs calc = calcService.getPort( + // new QName("http://superbiz.org/wsdl", "CalculatorWsService2"), + // CalculatorWs.class); - CalculatorWs calc = calcService.getPort(CalculatorWs.class); + final CalculatorWs calc = calcService.getPort(CalculatorWs.class); - Client client = ClientProxy.getClient(calc); - Endpoint endpoint = client.getEndpoint(); + final Client client = ClientProxy.getClient(calc); + final Endpoint endpoint = client.getEndpoint(); endpoint.getOutInterceptors().add(new SAAJOutInterceptor()); - Map<String, Object> outProps = new HashMap<String, Object>(); + final Map<String, Object> outProps = new HashMap<String, Object>(); outProps.put(WSHandlerConstants.ACTION, WSHandlerConstants.SIGNATURE); outProps.put(WSHandlerConstants.USER, "clientalias"); outProps.put(WSHandlerConstants.PW_CALLBACK_REF, new CallbackHandler() { @Override - public void handle(Callback[] callbacks) throws IOException, UnsupportedCallbackException { - WSPasswordCallback pc = (WSPasswordCallback) callbacks[0]; + public void handle(final Callback[] callbacks) throws IOException, UnsupportedCallbackException { + final WSPasswordCallback pc = (WSPasswordCallback) callbacks[0]; pc.setPassword("clientPassword"); } }); outProps.put(WSHandlerConstants.SIG_PROP_FILE, "META-INF/CalculatorImplSign-client.properties"); outProps.put(WSHandlerConstants.SIG_KEY_ID, "IssuerSerial"); - WSS4JOutInterceptor wssOut = new WSS4JOutInterceptor(outProps); + final WSS4JOutInterceptor wssOut = new WSS4JOutInterceptor(outProps); endpoint.getOutInterceptors().add(wssOut); assertEquals(24, calc.multiply(4, 6)); Modified: openejb/trunk/openejb/pom.xml URL: http://svn.apache.org/viewvc/openejb/trunk/openejb/pom.xml?rev=1428399&r1=1428398&r2=1428399&view=diff ============================================================================== --- openejb/trunk/openejb/pom.xml (original) +++ openejb/trunk/openejb/pom.xml Thu Jan 3 15:26:05 2013 @@ -123,7 +123,7 @@ <tomcat.version>7.0.34</tomcat.version> <!-- used mainly by jetty modules --> - <cxf.version>2.6.4</cxf.version> + <cxf.version>2.6.3</cxf.version> <!--2.6.4 is broken--> <ehcache.version>2.6.0</ehcache.version> <!-- used by cxf for security (replay attack) --> <jetty.version>7.5.3.v20111011</jetty.version> <pax-url.version>1.3.5</pax-url.version> Modified: openejb/trunk/openejb/server/openejb-cxf/src/main/java/org/apache/openejb/server/cxf/CxfWsContainer.java URL: http://svn.apache.org/viewvc/openejb/trunk/openejb/server/openejb-cxf/src/main/java/org/apache/openejb/server/cxf/CxfWsContainer.java?rev=1428399&r1=1428398&r2=1428399&view=diff ============================================================================== --- openejb/trunk/openejb/server/openejb-cxf/src/main/java/org/apache/openejb/server/cxf/CxfWsContainer.java (original) +++ openejb/trunk/openejb/server/openejb-cxf/src/main/java/org/apache/openejb/server/cxf/CxfWsContainer.java Thu Jan 3 15:26:05 2013 @@ -43,7 +43,7 @@ public abstract class CxfWsContainer imp this.port = port; this.serviceConfiguration = config; - List<String> ids = new ArrayList<String>(); + final List<String> ids = new ArrayList<String>(); ids.add("http://schemas.xmlsoap.org/wsdl/soap/"); httpTransportFactory = new HttpTransportFactory(bus); @@ -69,7 +69,8 @@ public abstract class CxfWsContainer imp // } } - public void onMessage(HttpRequest request, HttpResponse response) throws Exception { + @Override + public void onMessage(final HttpRequest request, final HttpResponse response) throws Exception { destination.invoke(null, request.getServletContext(), request, response); } }