Repository: tomee
Updated Branches:
  refs/heads/tomee-1.7.x 9a340c02f -> 3f1f037e5


TOMEE-1466 Apply WS-Security config (cxf interceptor) when use @WebService with 
javax.xml.ws.Service, thanks Yann Blazart


Project: http://git-wip-us.apache.org/repos/asf/tomee/repo
Commit: http://git-wip-us.apache.org/repos/asf/tomee/commit/3f1f037e
Tree: http://git-wip-us.apache.org/repos/asf/tomee/tree/3f1f037e
Diff: http://git-wip-us.apache.org/repos/asf/tomee/diff/3f1f037e

Branch: refs/heads/tomee-1.7.x
Commit: 3f1f037e532e2fe32033597391b6f99625359056
Parents: 9a340c0
Author: Romain Manni-Bucau <[email protected]>
Authored: Wed Dec 3 12:08:37 2014 +0100
Committer: Romain Manni-Bucau <[email protected]>
Committed: Wed Dec 3 12:08:37 2014 +0100

----------------------------------------------------------------------
 .../core/ivm/naming/JaxWsServiceReference.java  |  12 +-
 .../core/webservices/ProviderWrapper.java       | 181 ++++++++++---------
 .../core/webservices/ProviderWrapperTest.java   |   2 +-
 .../client/WebServiceInjectionConfigurator.java |  13 +-
 .../server/cxf/WebServiceInjectionTest.java     |  74 +++++++-
 5 files changed, 178 insertions(+), 104 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/tomee/blob/3f1f037e/container/openejb-core/src/main/java/org/apache/openejb/core/ivm/naming/JaxWsServiceReference.java
----------------------------------------------------------------------
diff --git 
a/container/openejb-core/src/main/java/org/apache/openejb/core/ivm/naming/JaxWsServiceReference.java
 
b/container/openejb-core/src/main/java/org/apache/openejb/core/ivm/naming/JaxWsServiceReference.java
index b139075..3be9fb4 100644
--- 
a/container/openejb-core/src/main/java/org/apache/openejb/core/ivm/naming/JaxWsServiceReference.java
+++ 
b/container/openejb-core/src/main/java/org/apache/openejb/core/ivm/naming/JaxWsServiceReference.java
@@ -123,7 +123,10 @@ public class JaxWsServiceReference extends Reference {
             }
         }
 
-        ProviderWrapper.beforeCreate(ports);
+        final WebServiceClientCustomizer customizer = 
SystemInstance.get().getComponent(WebServiceClientCustomizer.class);
+        final Properties configuration = properties == null ? new Properties() 
: properties;
+
+        ProviderWrapper.beforeCreate(ports, customizer, properties);
         Service instance;
         try {
             instance = null;
@@ -145,9 +148,6 @@ public class JaxWsServiceReference extends Reference {
             instance.setHandlerResolver(handlerResolver);
         }
 
-        final WebServiceClientCustomizer customizer = 
SystemInstance.get().getComponent(WebServiceClientCustomizer.class);
-        final Properties configuration = properties == null ? new Properties() 
: properties;
-
         final Object port;
         if (referenceClass != null && 
!Service.class.isAssignableFrom(referenceClass)) {
             final WebServiceFeature[] features = customizer == null ? null : 
customizer.features(serviceQName, configuration);
@@ -172,10 +172,6 @@ public class JaxWsServiceReference extends Reference {
                 portRefs);
         ServiceRefData.putServiceRefData(port, serviceRefData);
 
-        if (customizer != null) {
-            customizer.customize(port, configuration);
-        }
-
         return port;
     }
 

http://git-wip-us.apache.org/repos/asf/tomee/blob/3f1f037e/container/openejb-core/src/main/java/org/apache/openejb/core/webservices/ProviderWrapper.java
----------------------------------------------------------------------
diff --git 
a/container/openejb-core/src/main/java/org/apache/openejb/core/webservices/ProviderWrapper.java
 
b/container/openejb-core/src/main/java/org/apache/openejb/core/webservices/ProviderWrapper.java
index a7ae404..5c172dd 100644
--- 
a/container/openejb-core/src/main/java/org/apache/openejb/core/webservices/ProviderWrapper.java
+++ 
b/container/openejb-core/src/main/java/org/apache/openejb/core/webservices/ProviderWrapper.java
@@ -18,6 +18,7 @@
 package org.apache.openejb.core.webservices;
 
 import org.apache.openejb.OpenEJBRuntimeException;
+import org.apache.openejb.core.ivm.naming.JaxWsServiceReference;
 import org.apache.openejb.loader.IO;
 import org.apache.openejb.util.LogCategory;
 import org.apache.openejb.util.Logger;
@@ -63,9 +64,9 @@ public class ProviderWrapper extends Provider {
     // Magic to get our provider wrapper installed with the PortRefData
     //
 
-    private static ThreadLocal<ProviderWrapperData> threadPortRefs = new 
ThreadLocal<ProviderWrapperData>();
+    private static final ThreadLocal<ProviderWrapperData> threadPortRefs = new 
ThreadLocal<ProviderWrapperData>();
 
-    public static void beforeCreate(final List<PortRefData> portRefData) {
+    public static void beforeCreate(final List<PortRefData> portRefData, final 
JaxWsServiceReference.WebServiceClientCustomizer customizer, final Properties 
properties) {
         // Axis JAXWS api is non compliant and checks system property before 
classloader
         // so we replace system property so this wrapper is selected.  The 
original value
         // is saved into an openejb property so we can load the class in the 
find method
@@ -83,7 +84,7 @@ public class ProviderWrapper extends Provider {
         } else {
             Thread.currentThread().setContextClassLoader(new 
ProviderClassLoader());
         }
-        threadPortRefs.set(new ProviderWrapperData(portRefData, 
oldClassLoader));
+        threadPortRefs.set(new ProviderWrapperData(portRefData, 
oldClassLoader, customizer, properties));
     }
 
     public static void afterCreate() {
@@ -94,10 +95,14 @@ public class ProviderWrapper extends Provider {
     private static class ProviderWrapperData {
         private final List<PortRefData> portRefData;
         private final ClassLoader callerClassLoader;
+        private final JaxWsServiceReference.WebServiceClientCustomizer 
customizer;
+        private final Properties properties;
 
-        public ProviderWrapperData(final List<PortRefData> portRefData, final 
ClassLoader callerClassLoader) {
+        public ProviderWrapperData(final List<PortRefData> portRefData, final 
ClassLoader callerClassLoader, final 
JaxWsServiceReference.WebServiceClientCustomizer customizer, final Properties 
properties) {
             this.portRefData = portRefData;
             this.callerClassLoader = callerClassLoader;
+            this.customizer = customizer;
+            this.properties = properties;
         }
     }
 
@@ -145,12 +150,12 @@ public class ProviderWrapper extends Provider {
                                                            final List<Element> 
referenceParameters) {
 
         return (W3CEndpointReference) invoke21Delegate(delegate, 
createW3CEndpointReference,
-            address,
-            serviceName,
-            portName,
-            metadata,
-            wsdlDocumentLocation,
-            referenceParameters);
+                address,
+                serviceName,
+                portName,
+                metadata,
+                wsdlDocumentLocation,
+                referenceParameters);
     }
 
     public EndpointReference readEndpointReference(final Source source) {
@@ -164,15 +169,32 @@ public class ProviderWrapper extends Provider {
 
     private class ServiceDelegateWrapper extends ServiceDelegate {
         private final ServiceDelegate serviceDelegate;
+        private final JaxWsServiceReference.WebServiceClientCustomizer 
customizer;
+        private final Properties configuration;
 
         public ServiceDelegateWrapper(final ServiceDelegate serviceDelegate) {
             this.serviceDelegate = serviceDelegate;
+            final ProviderWrapperData providerWrapperData = 
threadPortRefs.get();
+            if (providerWrapperData != null) {
+                this.customizer = providerWrapperData.customizer;
+                this.configuration = providerWrapperData.properties;
+            } else {
+                this.customizer = null;
+                this.configuration = null;
+            }
+        }
+
+        private <T> T customizePort(final T port) {
+            if (customizer != null && configuration != null) {
+                customizer.customize(port, configuration);
+            }
+            return port;
         }
 
         public <T> T getPort(final QName portName, final Class<T> 
serviceEndpointInterface) {
             final T t = serviceDelegate.getPort(portName, 
serviceEndpointInterface);
             setProperties((BindingProvider) t, portName);
-            return t;
+            return customizePort(t);
         }
 
         public <T> T getPort(final Class<T> serviceEndpointInterface) {
@@ -189,7 +211,7 @@ public class ProviderWrapper extends Provider {
             }
 
             setProperties((BindingProvider) t, qname);
-            return t;
+            return customizePort(t);
         }
 
         public void addPort(final QName portName, final String bindingId, 
final String endpointAddress) {
@@ -211,32 +233,32 @@ public class ProviderWrapper extends Provider {
         @SuppressWarnings({"unchecked"})
         public <T> Dispatch<T> createDispatch(final QName portName, final 
Class<T> type, final Service.Mode mode, final WebServiceFeature... features) {
             return (Dispatch<T>) invoke21Delegate(serviceDelegate, 
createDispatchInterface,
-                portName,
-                type,
-                mode,
-                features);
+                    portName,
+                    type,
+                    mode,
+                    features);
         }
 
         @SuppressWarnings({"unchecked"})
         public Dispatch<Object> createDispatch(final QName portName, final 
JAXBContext context, final Service.Mode mode, final WebServiceFeature... 
features) {
             return (Dispatch<Object>) invoke21Delegate(serviceDelegate, 
createDispatchJaxBContext,
-                portName,
-                context,
-                mode,
-                features);
+                    portName,
+                    context,
+                    mode,
+                    features);
         }
 
         @SuppressWarnings({"unchecked"})
         public Dispatch<Object> createDispatch(
-            final EndpointReference endpointReference,
-            final JAXBContext context,
-            final Service.Mode mode,
-            final WebServiceFeature... features) {
+                final EndpointReference endpointReference,
+                final JAXBContext context,
+                final Service.Mode mode,
+                final WebServiceFeature... features) {
             return (Dispatch<Object>) invoke21Delegate(serviceDelegate, 
createDispatchReferenceJaxB,
-                endpointReference,
-                context,
-                mode,
-                features);
+                    endpointReference,
+                    context,
+                    mode,
+                    features);
         }
 
         @SuppressWarnings({"unchecked"})
@@ -245,54 +267,42 @@ public class ProviderWrapper extends Provider {
                                               final Service.Mode mode,
                                               final WebServiceFeature... 
features) {
             return (Dispatch<T>) invoke21Delegate(serviceDelegate, 
createDispatchReferenceClass,
-                endpointReference,
-                type,
-                mode,
-                features);
+                    endpointReference,
+                    type,
+                    mode,
+                    features);
 
         }
 
         @SuppressWarnings({"unchecked"})
         public <T> T getPort(final QName portName, final Class<T> 
serviceEndpointInterface, final WebServiceFeature... features) {
-            return (T) invoke21Delegate(serviceDelegate, serviceGetPortByQName,
-                portName,
-                serviceEndpointInterface,
-                features);
+            return customizePort((T) invoke21Delegate(serviceDelegate, 
serviceGetPortByQName, portName, serviceEndpointInterface, features));
         }
 
         @SuppressWarnings({"unchecked"})
         public <T> T getPort(final EndpointReference endpointReference, final 
Class<T> serviceEndpointInterface, final WebServiceFeature... features) {
-            return (T) invoke21Delegate(serviceDelegate, 
serviceGetPortByEndpointReference,
-                endpointReference,
-                serviceEndpointInterface,
-                features);
+            return customizePort((T) invoke21Delegate(serviceDelegate, 
serviceGetPortByEndpointReference, endpointReference, serviceEndpointInterface, 
features));
         }
 
         @SuppressWarnings({"unchecked"})
         public <T> T getPort(final Class<T> serviceEndpointInterface, final 
WebServiceFeature... features) {
-            return (T) invoke21Delegate(serviceDelegate, 
serviceGetPortByInterface,
-                serviceEndpointInterface,
-                features);
+            return customizePort((T) invoke21Delegate(serviceDelegate, 
serviceGetPortByInterface, serviceEndpointInterface, features));
         }
 
         public QName getServiceName() {
-            final QName qName = serviceDelegate.getServiceName();
-            return qName;
+            return serviceDelegate.getServiceName();
         }
 
         public Iterator<QName> getPorts() {
-            final Iterator<QName> ports = serviceDelegate.getPorts();
-            return ports;
+            return serviceDelegate.getPorts();
         }
 
         public URL getWSDLDocumentLocation() {
-            final URL documentLocation = 
serviceDelegate.getWSDLDocumentLocation();
-            return documentLocation;
+            return serviceDelegate.getWSDLDocumentLocation();
         }
 
         public HandlerResolver getHandlerResolver() {
-            final HandlerResolver handlerResolver = 
serviceDelegate.getHandlerResolver();
-            return handlerResolver;
+            return serviceDelegate.getHandlerResolver();
         }
 
         public void setHandlerResolver(final HandlerResolver handlerResolver) {
@@ -300,8 +310,7 @@ public class ProviderWrapper extends Provider {
         }
 
         public Executor getExecutor() {
-            final Executor executor = serviceDelegate.getExecutor();
-            return executor;
+            return serviceDelegate.getExecutor();
         }
 
         public void setExecutor(final Executor executor) {
@@ -530,12 +539,12 @@ public class ProviderWrapper extends Provider {
         Method method = null;
         try {
             method = Provider.class.getMethod("createW3CEndpointReference",
-                String.class,
-                QName.class,
-                QName.class,
-                List.class,
-                String.class,
-                List.class);
+                    String.class,
+                    QName.class,
+                    QName.class,
+                    List.class,
+                    String.class,
+                    List.class);
         } catch (final NoSuchMethodException e) {
             // no-op
         }
@@ -544,9 +553,9 @@ public class ProviderWrapper extends Provider {
         method = null;
         try {
             method = Provider.class.getMethod("getPort",
-                EndpointReference.class,
-                Class.class,
-                WebServiceFeature[].class);
+                    EndpointReference.class,
+                    Class.class,
+                    WebServiceFeature[].class);
         } catch (final NoSuchMethodException e) {
             // no-op
         }
@@ -564,10 +573,10 @@ public class ProviderWrapper extends Provider {
         method = null;
         try {
             method = ServiceDelegate.class.getMethod("createDispatch",
-                EndpointReference.class,
-                JAXBContext.class,
-                Service.Mode.class,
-                WebServiceFeature[].class);
+                    EndpointReference.class,
+                    JAXBContext.class,
+                    Service.Mode.class,
+                    WebServiceFeature[].class);
         } catch (final NoSuchMethodException e) {
             // no-op
         }
@@ -576,10 +585,10 @@ public class ProviderWrapper extends Provider {
         method = null;
         try {
             method = ServiceDelegate.class.getMethod("createDispatch",
-                EndpointReference.class,
-                Class.class,
-                Service.Mode.class,
-                WebServiceFeature[].class);
+                    EndpointReference.class,
+                    Class.class,
+                    Service.Mode.class,
+                    WebServiceFeature[].class);
         } catch (final NoSuchMethodException e) {
             // no-op
         }
@@ -588,10 +597,10 @@ public class ProviderWrapper extends Provider {
         method = null;
         try {
             method = ServiceDelegate.class.getMethod("createDispatch",
-                QName.class,
-                JAXBContext.class,
-                Service.Mode.class,
-                WebServiceFeature[].class);
+                    QName.class,
+                    JAXBContext.class,
+                    Service.Mode.class,
+                    WebServiceFeature[].class);
         } catch (final NoSuchMethodException e) {
             // no-op
         }
@@ -600,10 +609,10 @@ public class ProviderWrapper extends Provider {
         method = null;
         try {
             method = ServiceDelegate.class.getMethod("createDispatch",
-                QName.class,
-                Class.class,
-                Service.Mode.class,
-                WebServiceFeature[].class);
+                    QName.class,
+                    Class.class,
+                    Service.Mode.class,
+                    WebServiceFeature[].class);
         } catch (final NoSuchMethodException e) {
             // no-op
         }
@@ -612,9 +621,9 @@ public class ProviderWrapper extends Provider {
         method = null;
         try {
             method = ServiceDelegate.class.getMethod("getPort",
-                EndpointReference.class,
-                Class.class,
-                WebServiceFeature[].class);
+                    EndpointReference.class,
+                    Class.class,
+                    WebServiceFeature[].class);
         } catch (final NoSuchMethodException e) {
             // no-op
         }
@@ -623,9 +632,9 @@ public class ProviderWrapper extends Provider {
         method = null;
         try {
             method = ServiceDelegate.class.getMethod("getPort",
-                QName.class,
-                Class.class,
-                WebServiceFeature[].class);
+                    QName.class,
+                    Class.class,
+                    WebServiceFeature[].class);
         } catch (final NoSuchMethodException e) {
             // no-op
         }
@@ -634,8 +643,8 @@ public class ProviderWrapper extends Provider {
         method = null;
         try {
             method = ServiceDelegate.class.getMethod("getPort",
-                Class.class,
-                WebServiceFeature[].class);
+                    Class.class,
+                    WebServiceFeature[].class);
         } catch (final NoSuchMethodException e) {
             // no-op
         }

http://git-wip-us.apache.org/repos/asf/tomee/blob/3f1f037e/container/openejb-core/src/test/java/org/apache/openejb/core/webservices/ProviderWrapperTest.java
----------------------------------------------------------------------
diff --git 
a/container/openejb-core/src/test/java/org/apache/openejb/core/webservices/ProviderWrapperTest.java
 
b/container/openejb-core/src/test/java/org/apache/openejb/core/webservices/ProviderWrapperTest.java
index 230f257..7c7c99c 100644
--- 
a/container/openejb-core/src/test/java/org/apache/openejb/core/webservices/ProviderWrapperTest.java
+++ 
b/container/openejb-core/src/test/java/org/apache/openejb/core/webservices/ProviderWrapperTest.java
@@ -38,7 +38,7 @@ public class ProviderWrapperTest extends TestCase {
         assertNotNull("provider is null", provider);
         assertFalse("provider should not be an instance of ProviderWrapper", 
provider instanceof ProviderWrapper);
 
-        ProviderWrapper.beforeCreate(null);
+        ProviderWrapper.beforeCreate(null, null, null);
         try {
             provider = Provider.provider();
             assertNotNull("provider is null", provider);

http://git-wip-us.apache.org/repos/asf/tomee/blob/3f1f037e/server/openejb-cxf/src/main/java/org/apache/openejb/server/cxf/client/WebServiceInjectionConfigurator.java
----------------------------------------------------------------------
diff --git 
a/server/openejb-cxf/src/main/java/org/apache/openejb/server/cxf/client/WebServiceInjectionConfigurator.java
 
b/server/openejb-cxf/src/main/java/org/apache/openejb/server/cxf/client/WebServiceInjectionConfigurator.java
index 7c242ce..422365b 100644
--- 
a/server/openejb-cxf/src/main/java/org/apache/openejb/server/cxf/client/WebServiceInjectionConfigurator.java
+++ 
b/server/openejb-cxf/src/main/java/org/apache/openejb/server/cxf/client/WebServiceInjectionConfigurator.java
@@ -28,8 +28,6 @@ import org.apache.openejb.config.sys.Openejb;
 import org.apache.openejb.config.sys.Service;
 import org.apache.openejb.core.ivm.naming.JaxWsServiceReference;
 import org.apache.openejb.loader.SystemInstance;
-import org.apache.openejb.util.LogCategory;
-import org.apache.openejb.util.Logger;
 
 import javax.xml.namespace.QName;
 import javax.xml.ws.WebServiceFeature;
@@ -89,15 +87,14 @@ public class WebServiceInjectionConfigurator implements 
JaxWsServiceReference.We
 
     @Override
     public void customize(final Object o, final Properties properties) {
+        final Client client;
         try {
-            if (!javax.xml.ws.Service.class.isInstance(o)) {
-                final Client client = ClientProxy.getClient(o);
-                configure(client, properties);
-            }
+            client = ClientProxy.getClient(o);
         } catch (final Exception e) {
-            Logger.getInstance(LogCategory.CXF, 
WebServiceInjectionConfigurator.class.getName())
-                    .error(e.getMessage(), e);
+            return;
         }
+
+        configure(client, properties);
     }
 
     private void configure(final Client client, final Properties properties) {

http://git-wip-us.apache.org/repos/asf/tomee/blob/3f1f037e/server/openejb-cxf/src/test/java/org/apache/openejb/server/cxf/WebServiceInjectionTest.java
----------------------------------------------------------------------
diff --git 
a/server/openejb-cxf/src/test/java/org/apache/openejb/server/cxf/WebServiceInjectionTest.java
 
b/server/openejb-cxf/src/test/java/org/apache/openejb/server/cxf/WebServiceInjectionTest.java
index c4f1606..4382fc7 100644
--- 
a/server/openejb-cxf/src/test/java/org/apache/openejb/server/cxf/WebServiceInjectionTest.java
+++ 
b/server/openejb-cxf/src/test/java/org/apache/openejb/server/cxf/WebServiceInjectionTest.java
@@ -21,6 +21,8 @@ import org.apache.cxf.frontend.ClientProxy;
 import org.apache.cxf.interceptor.Interceptor;
 import org.apache.cxf.interceptor.LoggingOutInterceptor;
 import org.apache.cxf.message.Message;
+import org.apache.cxf.ws.addressing.impl.MAPAggregatorImpl;
+import org.apache.cxf.ws.addressing.soap.MAPCodec;
 import org.apache.cxf.ws.security.wss4j.WSS4JInInterceptor;
 import org.apache.cxf.ws.security.wss4j.WSS4JOutInterceptor;
 import org.apache.openejb.config.sys.MapFactory;
@@ -37,7 +39,16 @@ import org.junit.runner.RunWith;
 
 import javax.ejb.Singleton;
 import javax.jws.WebService;
+import javax.xml.namespace.QName;
+import javax.xml.ws.Service;
+import javax.xml.ws.WebEndpoint;
+import javax.xml.ws.WebServiceClient;
+import javax.xml.ws.WebServiceException;
+import javax.xml.ws.WebServiceFeature;
 import javax.xml.ws.WebServiceRef;
+import javax.xml.ws.soap.AddressingFeature;
+import java.net.MalformedURLException;
+import java.net.URL;
 import java.util.Iterator;
 import java.util.Properties;
 
@@ -57,10 +68,20 @@ public class WebServiceInjectionTest {
     @WebServiceRef
     private MyWsApi api;
 
+    @WebServiceRef
+    private MyWebservice_Service service;
+
     @Test
-    public void checkInjection() {
+    public void checkConfiguration() {
         // assertEquals("ok", api.test()); // local call so skip it but check 
config which is actually the only interesting thing
         final Client client = ClientProxy.getClient(api);
+        testPort(client);
+
+        testPort(ClientProxy.getClient(service.getMyWsApi()));
+        testPortWithFeature(ClientProxy.getClient(service.getMyWsApi(new 
AddressingFeature())));
+    }
+
+    private void testPort(final Client client) {
         assertNotNull(client);
         assertEquals(2, client.getOutInterceptors().size());
         assertEquals(1, client.getInInterceptors().size());
@@ -74,6 +95,23 @@ public class WebServiceInjectionTest {
         assertEquals("b", 
WSS4JInInterceptor.class.cast(wss4jin).getProperties().get("a"));
     }
 
+    private void testPortWithFeature(final Client client) {
+        assertNotNull(client);
+        assertEquals(4, client.getOutInterceptors().size());
+        assertEquals(3, client.getInInterceptors().size());
+        final Iterator<Interceptor<? extends Message>> Out = 
client.getOutInterceptors().iterator();
+        assertTrue(MAPAggregatorImpl.class.isInstance(Out.next()));
+        assertTrue(MAPCodec.class.isInstance(Out.next()));
+        assertTrue(LoggingOutInterceptor.class.isInstance(Out.next()));
+        final Interceptor<? extends Message> wss4jout = Out.next();
+        assertTrue(WSS4JOutInterceptor.class.isInstance(wss4jout));
+
+        final Iterator<Interceptor<? extends Message>> iteratorIn = 
client.getInInterceptors().iterator();
+        assertTrue(MAPAggregatorImpl.class.isInstance(iteratorIn.next()));
+        assertTrue(MAPCodec.class.isInstance(iteratorIn.next()));
+        assertTrue(WSS4JInInterceptor.class.isInstance(iteratorIn.next()));
+    }
+
     @ApplicationConfiguration
     public Properties props() {
         // return new 
PropertiesBuilder().p("cxf.jaxws.client.out-interceptors", 
LoggingOutInterceptor.class.getName()).build();
@@ -82,6 +120,9 @@ public class WebServiceInjectionTest {
                 
.p("cxf.jaxws.client.{http://cxf.server.openejb.apache.org/}MyWebservicePort.in-interceptors";,
 "wss4jin")
                 
.p("cxf.jaxws.client.{http://cxf.server.openejb.apache.org/}MyWebservicePort.out-interceptors";,
 "loo,wss4jout")
 
+                
.p("cxf.jaxws.client.{http://cxf.server.openejb.apache.org/}myWebservice.in-interceptors";,
 "wss4jin")
+                
.p("cxf.jaxws.client.{http://cxf.server.openejb.apache.org/}myWebservice.out-interceptors";,
 "loo,wss4jout")
+
                 .p("loo", "new://Service?class-name=" + 
LoggingOutInterceptor.class.getName())
 
                 .p("wss4jin", "new://Service?class-name=" + 
WSS4JInInterceptorFactory.class.getName() + "&factory-name=create")
@@ -109,4 +150,35 @@ public class WebServiceInjectionTest {
             return "ok";
         }
     }
+
+    @WebServiceClient(name = "MyWebservice")
+    public static class MyWebservice_Service extends Service {
+        public MyWebservice_Service() {
+            super(getWsdl(), new 
QName("http://cxf.server.openejb.apache.org/";, "MyWebservice_Service"));
+        }
+
+        public MyWebservice_Service(final URL wsdlDocumentLocation, final 
QName serviceName) {
+            super(wsdlDocumentLocation, serviceName);
+        }
+
+        public MyWebservice_Service(final URL wsdlDocumentLocation, final 
QName serviceName, final WebServiceFeature... features) {
+            super(wsdlDocumentLocation, serviceName, features);
+        }
+
+
+        static URL getWsdl() throws WebServiceException {
+            try {
+                return new URL("http://wsdl";);
+            } catch (final MalformedURLException ex) {
+                throw new WebServiceException(ex);
+            }
+        }
+
+        @WebEndpoint(name = "myWebserviceWS")
+        public MyWsApi getMyWsApi(final WebServiceFeature... features) {
+            return super.getPort(new 
QName("http://cxf.server.openejb.apache.org/";, "myWebservice"), MyWsApi.class, 
features);
+        }
+
+
+    }
 }

Reply via email to