Author: richard.opalka(a)jboss.com
Date: 2010-09-23 06:37:46 -0400 (Thu, 23 Sep 2010)
New Revision: 13014
Modified:
stack/native/trunk/modules/core/src/main/java/org/jboss/ws/core/jaxws/client/NativeServiceRefBinderJAXWS.java
stack/native/trunk/modules/core/src/main/java/org/jboss/ws/core/jaxws/client/ServiceObjectFactoryJAXWS.java
stack/native/trunk/modules/core/src/main/java/org/jboss/ws/core/jaxws/client/ServiceReferenceable.java
Log:
[JBWS-3133] ServiceRef & PortComponentRef UMDM now respects @Addressing, @MTOM and
@RespectBinding MDs
Modified:
stack/native/trunk/modules/core/src/main/java/org/jboss/ws/core/jaxws/client/NativeServiceRefBinderJAXWS.java
===================================================================
---
stack/native/trunk/modules/core/src/main/java/org/jboss/ws/core/jaxws/client/NativeServiceRefBinderJAXWS.java 2010-09-23
10:37:04 UTC (rev 13013)
+++
stack/native/trunk/modules/core/src/main/java/org/jboss/ws/core/jaxws/client/NativeServiceRefBinderJAXWS.java 2010-09-23
10:37:46 UTC (rev 13014)
@@ -106,32 +106,7 @@
}
}
}
-
- if (addressingAnnotation != null)
- {
- if (addressingAnnotation.enabled())
- serviceRef.setAddressingEnabled();
-
- if (addressingAnnotation.required())
- serviceRef.setAddressingRequired();
-
- if (addressingAnnotation.responses() == AddressingFeature.Responses.ANONYMOUS)
- serviceRef.setAddressingResponses("ANONYMOUS");
- else if (addressingAnnotation.responses() ==
AddressingFeature.Responses.NON_ANONYMOUS)
- serviceRef.setAddressingResponses("NON_ANONYMOUS");
- else
- serviceRef.setAddressingResponses("ALL");
- }
-
- if ((mtomAnnotation != null) && mtomAnnotation.enabled()) {
- serviceRef.setMtomEnabled();
- serviceRef.setMtomThreshold(mtomAnnotation.threshold());
- }
- if ((respectBindingAnnotation != null) &&
respectBindingAnnotation.enabled()) {
- serviceRef.setRespectBindingEnabled();
- }
-
// Use the single @WebServiceRef
if (wsrefList.size() == 1)
{
@@ -254,6 +229,22 @@
}
}
+ if (addressingAnnotation != null)
+ {
+ serviceRef.setAddressingEnabled(addressingAnnotation.enabled());
+ serviceRef.setAddressingRequired(addressingAnnotation.required());
+ serviceRef.setAddressingResponses(addressingAnnotation.responses().toString());
+ }
+
+ if (mtomAnnotation != null) {
+ serviceRef.setMtomEnabled(mtomAnnotation.enabled());
+ serviceRef.setMtomThreshold(mtomAnnotation.threshold());
+ }
+
+ if (respectBindingAnnotation != null) {
+ serviceRef.setRespectBindingEnabled(respectBindingAnnotation.enabled());
+ }
+
// Do not use rebind, the binding should be unique
// [JBWS-1499] - Revisit WebServiceRefHandler JNDI rebind
Referenceable serviceReferenceable = buildServiceReferenceable(serviceImplClass,
targetClassName, serviceRef);
Modified:
stack/native/trunk/modules/core/src/main/java/org/jboss/ws/core/jaxws/client/ServiceObjectFactoryJAXWS.java
===================================================================
---
stack/native/trunk/modules/core/src/main/java/org/jboss/ws/core/jaxws/client/ServiceObjectFactoryJAXWS.java 2010-09-23
10:37:04 UTC (rev 13013)
+++
stack/native/trunk/modules/core/src/main/java/org/jboss/ws/core/jaxws/client/ServiceObjectFactoryJAXWS.java 2010-09-23
10:37:46 UTC (rev 13014)
@@ -21,20 +21,6 @@
*/
package org.jboss.ws.core.jaxws.client;
-import org.jboss.logging.Logger;
-import org.jboss.ws.WSException;
-import org.jboss.ws.core.ConfigProvider;
-import org.jboss.ws.core.client.ServiceObjectFactory;
-import org.jboss.wsf.spi.metadata.j2ee.serviceref.UnifiedServiceRefMetaData;
-
-import javax.naming.*;
-import javax.xml.namespace.QName;
-import javax.xml.ws.RespectBindingFeature;
-import javax.xml.ws.Service;
-import javax.xml.ws.WebServiceFeature;
-import javax.xml.ws.soap.AddressingFeature;
-import javax.xml.ws.soap.MTOMFeature;
-
import java.io.ByteArrayInputStream;
import java.io.IOException;
import java.io.ObjectInputStream;
@@ -42,15 +28,36 @@
import java.lang.reflect.InvocationTargetException;
import java.lang.reflect.Method;
import java.net.URL;
+import java.util.Collection;
import java.util.Hashtable;
import java.util.LinkedList;
import java.util.List;
+import javax.naming.Context;
+import javax.naming.Name;
+import javax.naming.NamingException;
+import javax.naming.RefAddr;
+import javax.naming.Reference;
+import javax.xml.namespace.QName;
+import javax.xml.ws.RespectBindingFeature;
+import javax.xml.ws.Service;
+import javax.xml.ws.WebServiceFeature;
+import javax.xml.ws.soap.AddressingFeature;
+import javax.xml.ws.soap.MTOMFeature;
+
+import org.jboss.logging.Logger;
+import org.jboss.ws.core.ConfigProvider;
+import org.jboss.ws.core.client.ServiceObjectFactory;
+import org.jboss.wsf.spi.WSFException;
+import org.jboss.wsf.spi.metadata.j2ee.serviceref.UnifiedPortComponentRefMetaData;
+import org.jboss.wsf.spi.metadata.j2ee.serviceref.UnifiedServiceRefMetaData;
+
/**
* This ServiceObjectFactory reconstructs a javax.xml.ws.Service
- * for a given WSDL when the webservice client does a JNDI lookup
+ * for a given WSDL when the webservice client does a JNDI lookup.
*
* @author Thomas.Diesler(a)jboss.org
+ * @author Richard.Opalka(a)jboss.org
* @since 24-Oct-2004
*/
public class ServiceObjectFactoryJAXWS extends ServiceObjectFactory
@@ -81,201 +88,367 @@
* @see javax.naming.spi.NamingManager#getObjectInstance
* @see javax.naming.spi.NamingManager#getURLContext
*/
- public Object getObjectInstance(Object obj, Name name, Context nameCtx, Hashtable
environment) throws Exception
+ @SuppressWarnings(value = "unchecked")
+ public Object getObjectInstance(final Object obj, final Name name, final Context
nameCtx, final Hashtable environment)
+ throws Exception
{
try
{
- Reference ref = (Reference)obj;
+ // references
+ final Reference ref = (Reference) obj;
+ final UnifiedServiceRefMetaData serviceRef = unmarshallServiceRef(ref);
+ // class names
+ final String serviceImplClass = this.getServiceClassName(ref, serviceRef);
+ final String targetClassName = this.getTargetClassName(ref, serviceRef,
serviceImplClass);
+ // class instances
+ final Class<?> serviceClass = this.getClass(serviceImplClass);
+ final Class<?> targetClass = this.getClass(targetClassName);
+ final Service serviceInstance;
+ try
+ {
+ // Associate the ServiceRefMetaData with this thread
+ serviceRefAssociation.set(serviceRef);
+ // construct service
+ serviceInstance = this.instantiateService(serviceRef, serviceClass);
+ }
+ finally
+ {
+ serviceRefAssociation.set(null);
+ }
+ // Configure the service
+ configureService(serviceInstance, serviceRef);
+ // construct port
+ final boolean instantiatePort = targetClassName != null &&
!targetClassName.equals(serviceImplClass);
+ if (instantiatePort)
+ {
+ final QName portQName = this.getPortQName(targetClassName, serviceImplClass,
serviceRef);
+ final WebServiceFeature[] portFeatures = this.getFeatures(targetClassName,
serviceImplClass, serviceRef);
- // Get the target class name
- String targetClassName =
(String)ref.get(ServiceReferenceable.TARGET_CLASS_NAME).getContent();
+ return instantiatePort(serviceClass, targetClass, serviceInstance, portQName,
portFeatures);
+ }
- // Unmarshall the UnifiedServiceRef
- UnifiedServiceRefMetaData serviceRef = unmarshallServiceRef(ref);
- String serviceRefName = serviceRef.getServiceRefName();
- QName serviceQName = serviceRef.getServiceQName();
+ return serviceInstance;
+ }
+ catch (Exception ex)
+ {
+ WSFException.rethrow("Cannot create service", ex);
+ }
- String serviceImplClass = serviceRef.getServiceImplClass();
- if (serviceImplClass == null)
- serviceImplClass =
(String)ref.get(ServiceReferenceable.SERVICE_IMPL_CLASS).getContent();
+ return null;
+ }
- // If the target defaults to javax.xml.ws.Service, use the service as the
target
- if (Service.class.getName().equals(targetClassName))
- targetClassName = serviceImplClass;
-
- if (log.isDebugEnabled())
- log.debug("[name=" + serviceRefName + ",service=" +
serviceImplClass + ",target=" + targetClassName + "]");
+ public static UnifiedServiceRefMetaData getServiceRefAssociation()
+ {
+ return serviceRefAssociation.get();
+ }
- // Load the service class
- ClassLoader ctxLoader = SecurityActions.getContextClassLoader();
- Class serviceClass = SecurityActions.loadClass(ctxLoader, serviceImplClass);
- Class targetClass = (targetClassName != null ?
ctxLoader.loadClass(targetClassName) : null);
+ private void configureService(final Service service, final UnifiedServiceRefMetaData
serviceRef)
+ {
+ final String configFile = serviceRef.getConfigFile();
+ final String configName = serviceRef.getConfigName();
+ if (service instanceof ConfigProvider)
+ {
+ if(log.isDebugEnabled()) log.debug("Configure Service: [configName=" +
configName + ",configFile=" + configFile + "]");
- if (Service.class.isAssignableFrom(serviceClass) == false)
- throw new IllegalArgumentException("WebServiceRef type '" +
serviceClass + "' is not assignable to javax.xml.ws.Service");
-
- if (log.isDebugEnabled())
- log.debug("Loaded Service '" + serviceClass.getName() +
"' from: " + serviceClass.getProtectionDomain().getCodeSource());
-
- List<WebServiceFeature> features = new
LinkedList<WebServiceFeature>();
-
- // configure addressing feature
- if (serviceRef.isAddressingEnabled()) {
- final boolean required = serviceRef.isAddressingRequired();
- final String refResponses = serviceRef.getAddressingResponses();
- AddressingFeature.Responses responses = AddressingFeature.Responses.ALL;
- if ("ANONYMOUS".equals(refResponses))
- responses = AddressingFeature.Responses.ANONYMOUS;
- if ("NON_ANONYMOUS".equals(refResponses))
- responses = AddressingFeature.Responses.NON_ANONYMOUS;
-
- features.add(new AddressingFeature(true, required, responses));
+ final ConfigProvider cp = (ConfigProvider)service;
+ if (configName != null || configFile != null)
+ {
+ cp.setConfigName(configName, configFile);
}
+ }
+ }
- // configure MTOM feature
- if (serviceRef.isMtomEnabled()) {
- features.add(new MTOMFeature(true, serviceRef.getMtomThreshold()));
- }
+ private Class<?> getClass(final String className) throws ClassNotFoundException
+ {
+ if (className != null)
+ {
+ return SecurityActions.getContextClassLoader().loadClass(className);
+ }
- // configure respect binding feature
- if (serviceRef.isRespectBindingEnabled()) {
- features.add(new RespectBindingFeature(true));
+ return null;
+ }
+
+ private String getServiceClassName(final Reference ref, final
UnifiedServiceRefMetaData serviceRefMD)
+ {
+ String serviceClassName = serviceRefMD.getServiceImplClass();
+ if (serviceClassName == null)
+ serviceClassName = (String)
ref.get(ServiceReferenceable.SERVICE_IMPL_CLASS).getContent();
+
+ return serviceClassName;
+ }
+
+ private String getTargetClassName(final Reference ref, final UnifiedServiceRefMetaData
serviceRefMD,
+ final String serviceImplClass)
+ {
+ String targetClassName = serviceRefMD.getServiceRefType();
+ if (targetClassName == null)
+ targetClassName = (String)
ref.get(ServiceReferenceable.TARGET_CLASS_NAME).getContent();
+
+ if (Service.class.getName().equals(targetClassName))
+ targetClassName = serviceImplClass;
+
+ return targetClassName;
+ }
+
+ private Object instantiatePort(final Class<?> serviceClass, final Class<?>
targetClass, final Service target,
+ final QName portQName, final WebServiceFeature[] features) throws
NoSuchMethodException,
+ InstantiationException, IllegalAccessException, InvocationTargetException
+ {
+ Object retVal = null;
+
+ Object port = null;
+ if (serviceClass != Service.class)
+ {
+ for (Method method : serviceClass.getDeclaredMethods())
+ {
+ String methodName = method.getName();
+ Class<?> retType = method.getReturnType();
+ if (methodName.startsWith("get") &&
targetClass.isAssignableFrom(retType))
+ {
+ port = method.invoke(target, new Object[0]);
+ retVal = port;
+ break;
+ }
}
+ }
- // Receives either a javax.xml.ws.Service or a dynamic proxy
- Object target;
- URL wsdlURL = serviceRef.getWsdlLocation();
- WebServiceFeature[] wsFeatures = features.size() == 0 ? null :
features.toArray(new WebServiceFeature[] {});
- try
+ if (port == null)
+ {
+ Method method = getMethodFor(portQName, features, serviceClass);
+ Object[] args = getArgumentsFor(portQName, features, targetClass);
+ port = method.invoke(target, args);
+ retVal = port;
+ }
+
+ return retVal;
+ }
+
+ private Service instantiateService(final UnifiedServiceRefMetaData serviceRefMD, final
Class<?> serviceClass)
+ throws NoSuchMethodException, InstantiationException, IllegalAccessException,
InvocationTargetException
+ {
+ final WebServiceFeature[] features = getFeatures(serviceRefMD);
+ final URL wsdlURL = serviceRefMD.getWsdlLocation();
+ final QName serviceQName = serviceRefMD.getServiceQName();
+
+ Service target = null;
+ if (serviceClass == Service.class)
+ {
+ // Generic javax.xml.ws.Service
+ if (wsdlURL != null)
{
- // Associate the ServiceRefMetaData with this thread
- serviceRefAssociation.set(serviceRef);
-
- // Generic javax.xml.ws.Service
- if (serviceClass == Service.class)
+ if (features != null)
{
- if (wsdlURL != null)
- {
- if (wsFeatures != null) {
- target = Service.create(wsdlURL, serviceQName, wsFeatures);
- } else {
- target = Service.create(wsdlURL, serviceQName);
- }
- }
- else
- {
- throw new IllegalArgumentException("Cannot create generic
javax.xml.ws.Service without wsdlLocation: " + serviceRefName);
- }
+ target = Service.create(wsdlURL, serviceQName, features);
}
- // Generated javax.xml.ws.Service subclass
else
{
- if (wsdlURL != null)
- {
- if (wsFeatures != null) {
- Constructor ctor = serviceClass.getConstructor(new Class[] {
URL.class, QName.class, WebServiceFeature[].class });
- target = ctor.newInstance(new Object[] { wsdlURL, serviceQName,
wsFeatures });
- } else {
- Constructor ctor = serviceClass.getConstructor(new Class[] {
URL.class, QName.class });
- target = ctor.newInstance(new Object[] { wsdlURL, serviceQName });
- }
- }
- else
- {
- if (wsFeatures != null) {
- Constructor ctor = serviceClass.getConstructor(new Class[] {
WebServiceFeature[].class });
- target = ctor.newInstance(new Object[] { wsFeatures });
- } else {
- target = (Service)serviceClass.newInstance();
- }
- }
+ target = Service.create(wsdlURL, serviceQName);
}
}
- finally
+ else
{
- serviceRefAssociation.set(null);
+ throw new IllegalArgumentException("Cannot create generic
javax.xml.ws.Service without wsdlLocation: "
+ + serviceRefMD);
}
-
- // Configure the service
- configureService((Service)target, serviceRef);
-
- if (targetClassName != null && targetClassName.equals(serviceImplClass)
== false)
+ }
+ else
+ {
+ // Generated javax.xml.ws.Service subclass
+ if (wsdlURL != null)
{
- try
+ if (features != null)
{
- Object port = null;
- if (serviceClass != Service.class)
- {
- for (Method method : serviceClass.getDeclaredMethods())
- {
- String methodName = method.getName();
- Class retType = method.getReturnType();
- if (methodName.startsWith("get") &&
targetClass.isAssignableFrom(retType))
- {
- port = method.invoke(target, new Object[0]);
- target = port;
- break;
- }
- }
- }
-
- if (port == null)
- {
- Method method = serviceClass.getMethod("getPort", new Class[]
{ Class.class });
- port = method.invoke(target, new Object[] { targetClass });
- target = port;
- }
+ Constructor<?> ctor = serviceClass.getConstructor(new Class[]
+ {URL.class, QName.class, WebServiceFeature[].class});
+ target = (Service) ctor.newInstance(new Object[]
+ {wsdlURL, serviceQName, features});
}
- catch (InvocationTargetException ex)
+ else
{
- throw ex.getTargetException();
+ Constructor<?> ctor = serviceClass.getConstructor(new Class[]
+ {URL.class, QName.class});
+ target = (Service) ctor.newInstance(new Object[]
+ {wsdlURL, serviceQName});
}
}
+ else
+ {
+ if (features != null)
+ {
+ Constructor<?> ctor = serviceClass.getConstructor(new Class[]
+ {WebServiceFeature[].class});
+ target = (Service) ctor.newInstance(new Object[]
+ {features});
+ }
+ else
+ {
+ target = (Service) serviceClass.newInstance();
+ }
+ }
+ }
- return target;
+ return target;
+ }
+
+ private WebServiceFeature[] getFeatures(final String targetClassName, final String
serviceClassName,
+ final UnifiedServiceRefMetaData serviceRefMD)
+ {
+ if (targetClassName != null && !targetClassName.equals(serviceClassName))
+ {
+ final Collection<UnifiedPortComponentRefMetaData> portComponentRefs =
serviceRefMD.getPortComponentRefs();
+ for (final UnifiedPortComponentRefMetaData portComponentRefMD :
portComponentRefs)
+ {
+ if
(targetClassName.equals(portComponentRefMD.getServiceEndpointInterface()))
+ {
+ return getFeatures(portComponentRefMD);
+ }
+ }
}
- catch (Throwable ex)
+
+ return null;
+ }
+
+ private QName getPortQName(final String targetClassName, final String
serviceClassName,
+ final UnifiedServiceRefMetaData serviceRefMD)
+ {
+ if (targetClassName != null && !targetClassName.equals(serviceClassName))
{
- WSException.rethrow("Cannot create service", ex);
- return null;
+ final Collection<UnifiedPortComponentRefMetaData> portComponentRefs =
serviceRefMD.getPortComponentRefs();
+ for (final UnifiedPortComponentRefMetaData portComponentRefMD :
portComponentRefs)
+ {
+ if
(targetClassName.equals(portComponentRefMD.getServiceEndpointInterface()))
+ {
+ return portComponentRefMD.getPortQName();
+ }
+ }
}
+
+ return null;
}
- public static UnifiedServiceRefMetaData getServiceRefAssociation()
+ private Method getMethodFor(final QName portQName, final WebServiceFeature[] features,
final Class<?> serviceClass)
+ throws NoSuchMethodException
{
- // The ServiceDelegateImpl get the usRef at ctor time
- return (UnifiedServiceRefMetaData)serviceRefAssociation.get();
+ if ((portQName == null) && (features == null))
+ return serviceClass.getMethod("getPort", new Class[]
+ {Class.class});
+ if ((portQName != null) && (features == null))
+ return serviceClass.getMethod("getPort", new Class[]
+ {QName.class, Class.class});
+ if ((portQName == null) && (features != null))
+ return serviceClass.getMethod("getPort", new Class[]
+ {Class.class, WebServiceFeature[].class});
+ if ((portQName != null) && (features != null))
+ return serviceClass.getMethod("getPort", new Class[]
+ {QName.class, Class.class, WebServiceFeature[].class});
+
+ throw new IllegalStateException();
}
- private void configureService(Service service, UnifiedServiceRefMetaData serviceRef)
+ private Object[] getArgumentsFor(final QName portQName, final WebServiceFeature[]
features,
+ final Class<?> targetClass) throws NoSuchMethodException
{
- String configFile = serviceRef.getConfigFile();
- String configName = serviceRef.getConfigName();
- if (service instanceof ConfigProvider)
+ if ((portQName == null) && (features == null))
+ return new Object[]
+ {targetClass};
+ if ((portQName != null) && (features == null))
+ return new Object[]
+ {portQName, targetClass};
+ if ((portQName == null) && (features != null))
+ return new Object[]
+ {targetClass, features};
+ if ((portQName != null) && (features != null))
+ return new Object[]
+ {portQName, targetClass, features};
+
+ throw new IllegalStateException();
+ }
+
+ private WebServiceFeature[] getFeatures(final UnifiedServiceRefMetaData serviceRef)
+ {
+ List<WebServiceFeature> features = new
LinkedList<WebServiceFeature>();
+
+ // configure @Addressing feature
+ if (serviceRef.isAddressingEnabled())
{
- if(log.isDebugEnabled()) log.debug("Configure Service: [configName=" +
configName + ",configFile=" + configFile + "]");
+ final boolean required = serviceRef.isAddressingRequired();
+ final String refResponses = serviceRef.getAddressingResponses();
+ AddressingFeature.Responses responses = AddressingFeature.Responses.ALL;
+ if ("ANONYMOUS".equals(refResponses))
+ responses = AddressingFeature.Responses.ANONYMOUS;
+ if ("NON_ANONYMOUS".equals(refResponses))
+ responses = AddressingFeature.Responses.NON_ANONYMOUS;
- ConfigProvider cp = (ConfigProvider)service;
- if (configName != null || configFile != null)
- cp.setConfigName(configName, configFile);
+ features.add(new AddressingFeature(true, required, responses));
}
+
+ // configure @MTOM feature
+ if (serviceRef.isMtomEnabled())
+ {
+ features.add(new MTOMFeature(true, serviceRef.getMtomThreshold()));
+ }
+
+ // configure @RespectBinding feature
+ if (serviceRef.isRespectBindingEnabled())
+ {
+ features.add(new RespectBindingFeature(true));
+ }
+
+ WebServiceFeature[] wsFeatures = features.size() == 0 ? null : features.toArray(new
WebServiceFeature[]
+ {});
+ return wsFeatures;
}
- private UnifiedServiceRefMetaData unmarshallServiceRef(Reference ref) throws
ClassNotFoundException, NamingException
+ private WebServiceFeature[] getFeatures(final UnifiedPortComponentRefMetaData
portComponentRefMD)
{
- UnifiedServiceRefMetaData sref;
- RefAddr refAddr = ref.get(ServiceReferenceable.SERVICE_REF_META_DATA);
- ByteArrayInputStream bais = new
ByteArrayInputStream((byte[])refAddr.getContent());
+ List<WebServiceFeature> features = new
LinkedList<WebServiceFeature>();
+ // configure @Addressing feature
+ if (portComponentRefMD.isAddressingEnabled())
+ {
+ final boolean required = portComponentRefMD.isAddressingRequired();
+ final String refResponses = portComponentRefMD.getAddressingResponses();
+ AddressingFeature.Responses responses = AddressingFeature.Responses.ALL;
+ if ("ANONYMOUS".equals(refResponses))
+ responses = AddressingFeature.Responses.ANONYMOUS;
+ if ("NON_ANONYMOUS".equals(refResponses))
+ responses = AddressingFeature.Responses.NON_ANONYMOUS;
+
+ features.add(new AddressingFeature(true, required, responses));
+ }
+
+ // configure @MTOM feature
+ if (portComponentRefMD.isMtomEnabled())
+ {
+ features.add(new MTOMFeature(true, portComponentRefMD.getMtomThreshold()));
+ }
+
+ // configure @RespectBinding feature
+ if (portComponentRefMD.isRespectBindingEnabled())
+ {
+ features.add(new RespectBindingFeature(true));
+ }
+
+ return features.size() == 0 ? null : features.toArray(new WebServiceFeature[]
+ {});
+ }
+
+ private UnifiedServiceRefMetaData unmarshallServiceRef(final Reference ref) throws
ClassNotFoundException,
+ NamingException
+ {
+ final UnifiedServiceRefMetaData sref;
+ final RefAddr refAddr = ref.get(ServiceReferenceable.SERVICE_REF_META_DATA);
+ final ByteArrayInputStream bais = new ByteArrayInputStream((byte[])
refAddr.getContent());
try
{
ObjectInputStream ois = new ObjectInputStream(bais);
- sref = (UnifiedServiceRefMetaData)ois.readObject();
+ sref = (UnifiedServiceRefMetaData) ois.readObject();
ois.close();
}
catch (IOException e)
{
throw new NamingException("Cannot unmarshall service ref meta data, cause:
" + e.toString());
}
+
return sref;
}
}
Modified:
stack/native/trunk/modules/core/src/main/java/org/jboss/ws/core/jaxws/client/ServiceReferenceable.java
===================================================================
---
stack/native/trunk/modules/core/src/main/java/org/jboss/ws/core/jaxws/client/ServiceReferenceable.java 2010-09-23
10:37:04 UTC (rev 13013)
+++
stack/native/trunk/modules/core/src/main/java/org/jboss/ws/core/jaxws/client/ServiceReferenceable.java 2010-09-23
10:37:46 UTC (rev 13014)
@@ -52,7 +52,7 @@
private String serviceImplClass;
private String targetClassName;
private UnifiedServiceRefMetaData serviceRef;
-
+
public ServiceReferenceable(String serviceImplClass, String targetClassName,
UnifiedServiceRefMetaData serviceRef)
{
this.serviceImplClass = serviceImplClass;
@@ -76,7 +76,7 @@
return myRef;
}
-
+
private byte[] marshall(Object obj) throws NamingException
{
ByteArrayOutputStream baos = new ByteArrayOutputStream(512);
@@ -92,4 +92,13 @@
}
return baos.toByteArray();
}
+
+ public String toString() {
+ final StringBuilder sb = new StringBuilder();
+ sb.append("\n").append(getClass().getName());
+ sb.append("\n serviceImplClass=" + serviceImplClass);
+ sb.append("\n targetClassName=" + targetClassName);
+ sb.append("\n serviceRef=" + this.serviceRef);
+ return sb.toString();
+ }
}