src/share/jaxws_classes/com/sun/xml/internal/ws/server/WSEndpointMOMProxy.java

Fri, 14 Feb 2014 11:13:45 +0100

author
mkos
date
Fri, 14 Feb 2014 11:13:45 +0100
changeset 515
6cd506508147
parent 368
0989ad8c0860
child 637
9c07ef4934dd
permissions
-rw-r--r--

8026188: Enhance envelope factory
Summary: Avoiding caching data initialized via TCCL in static context; fix also reviewed by Alexander Fomin
Reviewed-by: ahgross, mgrebac, skoivu

ohair@286 1 /*
alanb@368 2 * Copyright (c) 1997, 2013, Oracle and/or its affiliates. All rights reserved.
ohair@286 3 * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
ohair@286 4 *
ohair@286 5 * This code is free software; you can redistribute it and/or modify it
ohair@286 6 * under the terms of the GNU General Public License version 2 only, as
ohair@286 7 * published by the Free Software Foundation. Oracle designates this
ohair@286 8 * particular file as subject to the "Classpath" exception as provided
ohair@286 9 * by Oracle in the LICENSE file that accompanied this code.
ohair@286 10 *
ohair@286 11 * This code is distributed in the hope that it will be useful, but WITHOUT
ohair@286 12 * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
ohair@286 13 * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License
ohair@286 14 * version 2 for more details (a copy is included in the LICENSE file that
ohair@286 15 * accompanied this code).
ohair@286 16 *
ohair@286 17 * You should have received a copy of the GNU General Public License version
ohair@286 18 * 2 along with this work; if not, write to the Free Software Foundation,
ohair@286 19 * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
ohair@286 20 *
ohair@286 21 * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
ohair@286 22 * or visit www.oracle.com if you need additional information or have any
ohair@286 23 * questions.
ohair@286 24 */
ohair@286 25
ohair@286 26 package com.sun.xml.internal.ws.server;
ohair@286 27
ohair@286 28 import com.sun.istack.internal.NotNull;
alanb@368 29 import com.sun.xml.internal.ws.api.SOAPVersion;
alanb@368 30 import com.sun.xml.internal.ws.api.WSBinding;
alanb@368 31 import com.sun.xml.internal.ws.api.message.Packet;
alanb@368 32 import com.sun.xml.internal.ws.api.model.SEIModel;
alanb@368 33 import com.sun.xml.internal.ws.api.model.wsdl.WSDLPort;
alanb@368 34 import com.sun.xml.internal.ws.api.pipe.Codec;
alanb@368 35 import com.sun.xml.internal.ws.api.pipe.FiberContextSwitchInterceptor;
alanb@368 36 import com.sun.xml.internal.ws.api.pipe.ServerTubeAssemblerContext;
alanb@368 37 import com.sun.xml.internal.ws.api.pipe.ThrowableContainerPropertySet;
alanb@368 38 import com.sun.xml.internal.ws.api.server.Container;
alanb@368 39 import com.sun.xml.internal.ws.api.server.ServiceDefinition;
alanb@368 40 import com.sun.xml.internal.ws.api.server.WSEndpoint;
alanb@368 41 import com.sun.xml.internal.ws.policy.PolicyMap;
alanb@368 42 import com.sun.xml.internal.ws.wsdl.OperationDispatcher;
ohair@286 43 import com.sun.org.glassfish.gmbal.AMXClient;
ohair@286 44 import com.sun.org.glassfish.gmbal.GmbalMBean;
ohair@286 45 import com.sun.org.glassfish.gmbal.ManagedObjectManager;
ohair@286 46
ohair@286 47 import javax.management.MBeanServer;
ohair@286 48 import javax.management.ObjectName;
ohair@286 49 import java.io.IOException;
ohair@286 50 import java.lang.annotation.Annotation;
ohair@286 51 import java.lang.reflect.AnnotatedElement;
alanb@368 52 import java.util.List;
ohair@286 53 import java.util.ResourceBundle;
alanb@368 54 import java.util.Set;
alanb@368 55 import java.util.concurrent.Executor;
alanb@368 56 import javax.xml.namespace.QName;
alanb@368 57 import javax.xml.ws.EndpointReference;
alanb@368 58 import org.w3c.dom.Element;
ohair@286 59
ohair@286 60 /**
ohair@286 61 * {@link ManagedObjectManager} proxy class for {@link WSEndpointImpl} instances that could be used when Gmbal API calls
ohair@286 62 * need to be deferred. The proxy tries to defer a need of a real ManagedObjectManager instance to the time when any
ohair@286 63 * method from {@link ManagedObjectManager} is invoked on it. In this case a real instance of ManagedObjectManager is
ohair@286 64 * obtained from WSEndpointImpl and the method is rather invoked on this object.
ohair@286 65 */
alanb@368 66 public class WSEndpointMOMProxy extends WSEndpoint implements ManagedObjectManager {
ohair@286 67
ohair@286 68 private final @NotNull
ohair@286 69 WSEndpointImpl wsEndpoint;
ohair@286 70 private ManagedObjectManager managedObjectManager;
ohair@286 71
ohair@286 72 WSEndpointMOMProxy(@NotNull WSEndpointImpl wsEndpoint) {
ohair@286 73 this.wsEndpoint = wsEndpoint;
ohair@286 74 }
ohair@286 75
ohair@286 76 /**
ohair@286 77 * Returns a real instance of {@link ManagedObjectManager}
ohair@286 78 *
ohair@286 79 * @return an ManagedObjectManager instance
ohair@286 80 */
alanb@368 81 @Override
alanb@368 82 public ManagedObjectManager getManagedObjectManager() {
ohair@286 83 if (managedObjectManager == null) {
ohair@286 84 managedObjectManager = wsEndpoint.obtainManagedObjectManager();
ohair@286 85 }
ohair@286 86 return managedObjectManager;
ohair@286 87 }
ohair@286 88
ohair@286 89 void setManagedObjectManager(ManagedObjectManager managedObjectManager) {
ohair@286 90 this.managedObjectManager = managedObjectManager;
ohair@286 91 }
ohair@286 92
ohair@286 93 /**
ohair@286 94 * Returns {@code true} if this proxy contains a reference to real ManagedObjectManager instance, {@code false}
ohair@286 95 * otherwise.
ohair@286 96 *
ohair@286 97 * @return {@code true} if ManagedObjectManager has been created, {@code false} otherwise.
ohair@286 98 */
ohair@286 99 public boolean isInitialized() {
ohair@286 100 return this.managedObjectManager != null;
ohair@286 101 }
ohair@286 102
ohair@286 103 public WSEndpointImpl getWsEndpoint() {
ohair@286 104 return wsEndpoint;
ohair@286 105 }
ohair@286 106
alanb@368 107 @Override
ohair@286 108 public void suspendJMXRegistration() {
ohair@286 109 getManagedObjectManager().suspendJMXRegistration();
ohair@286 110 }
ohair@286 111
alanb@368 112 @Override
ohair@286 113 public void resumeJMXRegistration() {
ohair@286 114 getManagedObjectManager().resumeJMXRegistration();
ohair@286 115 }
ohair@286 116
alanb@368 117 @Override
ohair@286 118 public boolean isManagedObject(Object obj) {
ohair@286 119 return getManagedObjectManager().isManagedObject(obj);
ohair@286 120 }
ohair@286 121
alanb@368 122 @Override
ohair@286 123 public GmbalMBean createRoot() {
ohair@286 124 return getManagedObjectManager().createRoot();
ohair@286 125 }
ohair@286 126
alanb@368 127 @Override
ohair@286 128 public GmbalMBean createRoot(Object root) {
ohair@286 129 return getManagedObjectManager().createRoot(root);
ohair@286 130 }
ohair@286 131
alanb@368 132 @Override
ohair@286 133 public GmbalMBean createRoot(Object root, String name) {
ohair@286 134 return getManagedObjectManager().createRoot(root, name);
ohair@286 135 }
ohair@286 136
alanb@368 137 @Override
ohair@286 138 public Object getRoot() {
ohair@286 139 return getManagedObjectManager().getRoot();
ohair@286 140 }
ohair@286 141
alanb@368 142 @Override
ohair@286 143 public GmbalMBean register(Object parent, Object obj, String name) {
ohair@286 144 return getManagedObjectManager().register(parent, obj, name);
ohair@286 145 }
ohair@286 146
alanb@368 147 @Override
ohair@286 148 public GmbalMBean register(Object parent, Object obj) {
ohair@286 149 return getManagedObjectManager().register(parent, obj);
ohair@286 150 }
ohair@286 151
alanb@368 152 @Override
ohair@286 153 public GmbalMBean registerAtRoot(Object obj, String name) {
ohair@286 154 return getManagedObjectManager().registerAtRoot(obj, name);
ohair@286 155 }
ohair@286 156
alanb@368 157 @Override
ohair@286 158 public GmbalMBean registerAtRoot(Object obj) {
ohair@286 159 return getManagedObjectManager().registerAtRoot(obj);
ohair@286 160 }
ohair@286 161
alanb@368 162 @Override
ohair@286 163 public void unregister(Object obj) {
ohair@286 164 getManagedObjectManager().unregister(obj);
ohair@286 165 }
ohair@286 166
alanb@368 167 @Override
ohair@286 168 public ObjectName getObjectName(Object obj) {
ohair@286 169 return getManagedObjectManager().getObjectName(obj);
ohair@286 170 }
ohair@286 171
alanb@368 172 @Override
ohair@286 173 public AMXClient getAMXClient(Object obj) {
ohair@286 174 return getManagedObjectManager().getAMXClient(obj);
ohair@286 175 }
ohair@286 176
alanb@368 177 @Override
ohair@286 178 public Object getObject(ObjectName oname) {
ohair@286 179 return getManagedObjectManager().getObject(oname);
ohair@286 180 }
ohair@286 181
alanb@368 182 @Override
ohair@286 183 public void stripPrefix(String... str) {
ohair@286 184 getManagedObjectManager().stripPrefix(str);
ohair@286 185 }
ohair@286 186
alanb@368 187 @Override
ohair@286 188 public void stripPackagePrefix() {
ohair@286 189 getManagedObjectManager().stripPackagePrefix();
ohair@286 190 }
ohair@286 191
alanb@368 192 @Override
ohair@286 193 public String getDomain() {
ohair@286 194 return getManagedObjectManager().getDomain();
ohair@286 195 }
ohair@286 196
alanb@368 197 @Override
ohair@286 198 public void setMBeanServer(MBeanServer server) {
ohair@286 199 getManagedObjectManager().setMBeanServer(server);
ohair@286 200 }
ohair@286 201
alanb@368 202 @Override
ohair@286 203 public MBeanServer getMBeanServer() {
ohair@286 204 return getManagedObjectManager().getMBeanServer();
ohair@286 205 }
ohair@286 206
alanb@368 207 @Override
ohair@286 208 public void setResourceBundle(ResourceBundle rb) {
ohair@286 209 getManagedObjectManager().setResourceBundle(rb);
ohair@286 210 }
ohair@286 211
alanb@368 212 @Override
ohair@286 213 public ResourceBundle getResourceBundle() {
ohair@286 214 return getManagedObjectManager().getResourceBundle();
ohair@286 215 }
ohair@286 216
alanb@368 217 @Override
ohair@286 218 public void addAnnotation(AnnotatedElement element, Annotation annotation) {
ohair@286 219 getManagedObjectManager().addAnnotation(element, annotation);
ohair@286 220 }
ohair@286 221
alanb@368 222 @Override
ohair@286 223 public void setRegistrationDebug(RegistrationDebugLevel level) {
ohair@286 224 getManagedObjectManager().setRegistrationDebug(level);
ohair@286 225 }
ohair@286 226
alanb@368 227 @Override
ohair@286 228 public void setRuntimeDebug(boolean flag) {
ohair@286 229 getManagedObjectManager().setRuntimeDebug(flag);
ohair@286 230 }
ohair@286 231
alanb@368 232 @Override
ohair@286 233 public void setTypelibDebug(int level) {
ohair@286 234 getManagedObjectManager().setTypelibDebug(level);
ohair@286 235 }
ohair@286 236
alanb@368 237 @Override
ohair@286 238 public void setJMXRegistrationDebug(boolean flag) {
ohair@286 239 getManagedObjectManager().setJMXRegistrationDebug(flag);
ohair@286 240 }
ohair@286 241
alanb@368 242 @Override
ohair@286 243 public String dumpSkeleton(Object obj) {
ohair@286 244 return getManagedObjectManager().dumpSkeleton(obj);
ohair@286 245 }
ohair@286 246
alanb@368 247 @Override
ohair@286 248 public void suppressDuplicateRootReport(boolean suppressReport) {
ohair@286 249 getManagedObjectManager().suppressDuplicateRootReport(suppressReport);
ohair@286 250 }
ohair@286 251
alanb@368 252 @Override
ohair@286 253 public void close() throws IOException {
ohair@286 254 getManagedObjectManager().close();
ohair@286 255 }
ohair@286 256
alanb@368 257 @Override
alanb@368 258 public boolean equalsProxiedInstance(WSEndpoint endpoint) {
alanb@368 259 if (wsEndpoint == null) {
alanb@368 260 return (endpoint == null);
alanb@368 261 }
alanb@368 262 return wsEndpoint.equals(endpoint);
alanb@368 263 }
alanb@368 264
alanb@368 265 @Override
alanb@368 266 public Codec createCodec() {
alanb@368 267 return this.wsEndpoint.createCodec();
alanb@368 268 }
alanb@368 269
alanb@368 270 @Override
alanb@368 271 public QName getServiceName() {
alanb@368 272 return this.wsEndpoint.getServiceName();
alanb@368 273 }
alanb@368 274
alanb@368 275 @Override
alanb@368 276 public QName getPortName() {
alanb@368 277 return this.wsEndpoint.getPortName();
alanb@368 278 }
alanb@368 279
alanb@368 280 @Override
alanb@368 281 public Class getImplementationClass() {
alanb@368 282 return this.wsEndpoint.getImplementationClass();
alanb@368 283 }
alanb@368 284
alanb@368 285 @Override
alanb@368 286 public WSBinding getBinding() {
alanb@368 287 return this.wsEndpoint.getBinding();
alanb@368 288 }
alanb@368 289
alanb@368 290 @Override
alanb@368 291 public Container getContainer() {
alanb@368 292 return this.wsEndpoint.getContainer();
alanb@368 293 }
alanb@368 294
alanb@368 295 @Override
alanb@368 296 public WSDLPort getPort() {
alanb@368 297 return this.wsEndpoint.getPort();
alanb@368 298 }
alanb@368 299
alanb@368 300 @Override
alanb@368 301 public void setExecutor(Executor exec) {
alanb@368 302 this.wsEndpoint.setExecutor(exec);
alanb@368 303 }
alanb@368 304
alanb@368 305 @Override
alanb@368 306 public void schedule(Packet request, CompletionCallback callback, FiberContextSwitchInterceptor interceptor) {
alanb@368 307 this.wsEndpoint.schedule(request, callback, interceptor);
alanb@368 308 }
alanb@368 309
alanb@368 310 @Override
alanb@368 311 public PipeHead createPipeHead() {
alanb@368 312 return this.wsEndpoint.createPipeHead();
alanb@368 313 }
alanb@368 314
alanb@368 315 @Override
alanb@368 316 public void dispose() {
alanb@368 317 if (this.wsEndpoint != null) {
alanb@368 318 this.wsEndpoint.dispose();
alanb@368 319 }
alanb@368 320 }
alanb@368 321
alanb@368 322 @Override
alanb@368 323 public ServiceDefinition getServiceDefinition() {
alanb@368 324 return this.wsEndpoint.getServiceDefinition();
alanb@368 325 }
alanb@368 326
alanb@368 327 @Override
alanb@368 328 public Set getComponentRegistry() {
alanb@368 329 return this.wsEndpoint.getComponentRegistry();
alanb@368 330 }
alanb@368 331
alanb@368 332 @Override
alanb@368 333 public SEIModel getSEIModel() {
alanb@368 334 return this.wsEndpoint.getSEIModel();
alanb@368 335 }
alanb@368 336
alanb@368 337 @Override
alanb@368 338 public PolicyMap getPolicyMap() {
alanb@368 339 return this.wsEndpoint.getPolicyMap();
alanb@368 340 }
alanb@368 341
alanb@368 342 @Override
alanb@368 343 public void closeManagedObjectManager() {
alanb@368 344 this.wsEndpoint.closeManagedObjectManager();
alanb@368 345 }
alanb@368 346
alanb@368 347 @Override
alanb@368 348 public ServerTubeAssemblerContext getAssemblerContext() {
alanb@368 349 return this.wsEndpoint.getAssemblerContext();
alanb@368 350 }
alanb@368 351
alanb@368 352 @Override
alanb@368 353 public EndpointReference getEndpointReference(Class clazz, String address, String wsdlAddress, Element... referenceParameters) {
alanb@368 354 return wsEndpoint.getEndpointReference(clazz, address, wsdlAddress, referenceParameters);
alanb@368 355 }
alanb@368 356
alanb@368 357 @Override
alanb@368 358 public EndpointReference getEndpointReference(Class clazz, String address, String wsdlAddress, List metadata, List referenceParameters) {
alanb@368 359 return wsEndpoint.getEndpointReference(clazz, address, wsdlAddress, metadata, referenceParameters);
alanb@368 360 }
alanb@368 361
alanb@368 362 @Override
alanb@368 363 public OperationDispatcher getOperationDispatcher() {
alanb@368 364 return wsEndpoint.getOperationDispatcher();
alanb@368 365 }
alanb@368 366
alanb@368 367 @Override
alanb@368 368 public Packet createServiceResponseForException(final ThrowableContainerPropertySet tc,
alanb@368 369 final Packet responsePacket,
alanb@368 370 final SOAPVersion soapVersion,
alanb@368 371 final WSDLPort wsdlPort,
alanb@368 372 final SEIModel seiModel,
alanb@368 373 final WSBinding binding)
alanb@368 374 {
alanb@368 375 return wsEndpoint.createServiceResponseForException(tc, responsePacket, soapVersion,
alanb@368 376 wsdlPort, seiModel, binding);
alanb@368 377 }
ohair@286 378 }

mercurial