Class WSEndpointMOMProxy

  • All Implemented Interfaces:
    Component, ComponentRegistry, Closeable, AutoCloseable, org.glassfish.gmbal.ManagedObjectManager

    public class WSEndpointMOMProxy
    extends WSEndpoint
    implements org.glassfish.gmbal.ManagedObjectManager
    ManagedObjectManager proxy class for WSEndpointImpl instances that could be used when Gmbal API calls need to be deferred. The proxy tries to defer a need of a real ManagedObjectManager instance to the time when any method from ManagedObjectManager is invoked on it. In this case a real instance of ManagedObjectManager is obtained from WSEndpointImpl and the method is rather invoked on this object.
    • Method Detail

      • getManagedObjectManager

        public org.glassfish.gmbal.ManagedObjectManager getManagedObjectManager()
        Returns a real instance of ManagedObjectManager
        Specified by:
        getManagedObjectManager in class WSEndpoint
        Returns:
        an ManagedObjectManager instance
      • isInitialized

        public boolean isInitialized()
        Returns true if this proxy contains a reference to real ManagedObjectManager instance, false otherwise.
        Returns:
        true if ManagedObjectManager has been created, false otherwise.
      • suspendJMXRegistration

        public void suspendJMXRegistration()
        Description copied from interface: org.glassfish.gmbal.ManagedObjectManager
        If called, no MBeans created after this call will be registered with the JMX MBeanServer until resumeJMXRegistration is called. Each call increments a counter, so that nested and overlapping calls from multiple threads work correctly. May be called at any time.
        Specified by:
        suspendJMXRegistration in interface org.glassfish.gmbal.ManagedObjectManager
      • resumeJMXRegistration

        public void resumeJMXRegistration()
        Description copied from interface: org.glassfish.gmbal.ManagedObjectManager
        Decrements the suspend counter, if the counter is greater than 0. When the counter goes to zero, it causes all MBeans created since a previous call to suspendJMXRegistration incremented the counter from 0 to 1 to be registered with the JMX MBeanServer. After this call, all new MBean registration calls to the JMX MBeanServer happen within the register call. May be called at any time.
        Specified by:
        resumeJMXRegistration in interface org.glassfish.gmbal.ManagedObjectManager
      • isManagedObject

        public boolean isManagedObject​(Object obj)
        Description copied from interface: org.glassfish.gmbal.ManagedObjectManager
        Return true if object is assignment compatible with a class or interface that has an @ManagedObject annotation, otherwise false. Only such objects may be registered to create MBeans. May be called at any time.
        Specified by:
        isManagedObject in interface org.glassfish.gmbal.ManagedObjectManager
      • createRoot

        public org.glassfish.gmbal.GmbalMBean createRoot()
        Description copied from interface: org.glassfish.gmbal.ManagedObjectManager
        Create a default root MBean. One of the createRoot methods must be called before any of the registration methods may be called. Only one call to a createRoot method is permitted after an ManagedObjectManager is created.
        Specified by:
        createRoot in interface org.glassfish.gmbal.ManagedObjectManager
        Returns:
        A default root MBean which supports only the AMX attributes.
      • createRoot

        public org.glassfish.gmbal.GmbalMBean createRoot​(Object root)
        Description copied from interface: org.glassfish.gmbal.ManagedObjectManager
        Create a root MBean from root, which much have a method with the
        Specified by:
        createRoot in interface org.glassfish.gmbal.ManagedObjectManager
        Parameters:
        root - The Java object to be used to construct the root.
        Returns:
        The newly constructed MBean.
      • createRoot

        public org.glassfish.gmbal.GmbalMBean createRoot​(Object root,
                                                         String name)
        Description copied from interface: org.glassfish.gmbal.ManagedObjectManager
        Create a root MBean from root with the given name. One of the createRoot methods must be called before any of the registration methods may be called. Only one call to createRoot is permitted after an ManagedObjectManager is created.
        Specified by:
        createRoot in interface org.glassfish.gmbal.ManagedObjectManager
        Parameters:
        root - The Java object to be used to construct the root.
        name - The ObjectName name field to be used in the ObjectName of the MBean constructed from root.
        Returns:
        The newly constructed MBean.
      • getRoot

        public Object getRoot()
        Description copied from interface: org.glassfish.gmbal.ManagedObjectManager
        Return the root of this ManagedObjectManager. May be called at any time.
        Specified by:
        getRoot in interface org.glassfish.gmbal.ManagedObjectManager
        Returns:
        the root constructed in a createRoot operation, or null if called before a createRoot call.
      • register

        public org.glassfish.gmbal.GmbalMBean register​(Object parent,
                                                       Object obj,
                                                       String name)
        Description copied from interface: org.glassfish.gmbal.ManagedObjectManager
        Construct an Open Mean for obj according to its annotations, and register it with domain getDomain() and the appropriate ObjectName. The MBeanServer from setMBeanServer (or its default) is used. Here parent is considered to contain obj, and this containment is represented by the construction of the ObjectName following the AMX specification for ObjectNames.

        The MBeanInfo for the result is actually ModelMBeanInfo, and may contain extra metadata as defined using annotations defined with the

        Specified by:
        register in interface org.glassfish.gmbal.ManagedObjectManager
        Parameters:
        parent - The parent object that contains obj.
        obj - The managed object we are registering.
        name - The name to use for registering this object.
        Returns:
        The MBean constructed from obj.
      • register

        public org.glassfish.gmbal.GmbalMBean register​(Object parent,
                                                       Object obj)
        Description copied from interface: org.glassfish.gmbal.ManagedObjectManager
        Same as register( parent, obj, name ), but here the name is derived from an @NameValue annotation.

        This version of register should also be used to register singletons.

        Specified by:
        register in interface org.glassfish.gmbal.ManagedObjectManager
        Parameters:
        parent - The parent object that contains obj.
        obj - The managed object we are registering.
        Returns:
        The MBean constructed from obj.
      • registerAtRoot

        public org.glassfish.gmbal.GmbalMBean registerAtRoot​(Object obj,
                                                             String name)
        Description copied from interface: org.glassfish.gmbal.ManagedObjectManager
        Registers the MBean for obj at the root MBean for the ObjectManager, using the given name. Exactly the same as mom.register( mom.getRoot(), obj, name ).

        Must be called after a successful createRoot call.

        This version of register should not be used to register singletons.

        Specified by:
        registerAtRoot in interface org.glassfish.gmbal.ManagedObjectManager
        Parameters:
        obj - The object for which we construct and register an MBean.
        name - The name of the MBean.
        Returns:
        The MBean constructed from obj.
      • registerAtRoot

        public org.glassfish.gmbal.GmbalMBean registerAtRoot​(Object obj)
        Description copied from interface: org.glassfish.gmbal.ManagedObjectManager
        Same as registerAtRoot( Object, String ), but here the name is derived from an @ObjectKeyName annotation. Exactly the same as mom.register( mom.getRoot(), obj ).

        This version of register should also be used to register singletons.

        Specified by:
        registerAtRoot in interface org.glassfish.gmbal.ManagedObjectManager
        Parameters:
        obj - The managed object we are registering.
        Returns:
        The MBean constructed from obj.
      • unregister

        public void unregister​(Object obj)
        Description copied from interface: org.glassfish.gmbal.ManagedObjectManager
        Unregister the Open MBean corresponding to obj from the mbean server.

        Must be called after a successful createRoot call.

        Specified by:
        unregister in interface org.glassfish.gmbal.ManagedObjectManager
        Parameters:
        obj - The object originally passed to a register method.
      • getObjectName

        public ObjectName getObjectName​(Object obj)
        Description copied from interface: org.glassfish.gmbal.ManagedObjectManager
        Get the ObjectName for the given object (which must have been registered via a register call).

        Must be called after a successful createRoot call.

        Specified by:
        getObjectName in interface org.glassfish.gmbal.ManagedObjectManager
        Parameters:
        obj - The object originally passed to a register call.
        Returns:
        The ObjectName used to register the MBean.
      • getAMXClient

        public org.glassfish.gmbal.AMXClient getAMXClient​(Object obj)
        Description copied from interface: org.glassfish.gmbal.ManagedObjectManager
        Get an AMXClient instance for the object obj, if obj is registered as an MBean in this mom.

        Must be called after a successful createRoot call.

        Specified by:
        getAMXClient in interface org.glassfish.gmbal.ManagedObjectManager
        Parameters:
        obj - The object corresponding to an MBean.
        Returns:
        An AMXClient that acts as a proxy for this MBean.
      • getObject

        public Object getObject​(ObjectName oname)
        Description copied from interface: org.glassfish.gmbal.ManagedObjectManager
        Get the Object that was registered with the given ObjectName. Note that getObject and getObjectName are inverse operations.

        Must be called after a successful createRoot call.

        Specified by:
        getObject in interface org.glassfish.gmbal.ManagedObjectManager
        Parameters:
        oname - The ObjectName used to register the object.
        Returns:
        The Object passed to the register call.
      • stripPrefix

        public void stripPrefix​(String... str)
        Description copied from interface: org.glassfish.gmbal.ManagedObjectManager
        Add a type prefix to strip from type names, to shorten the names for a better presentation to the user. This may only be called before a createRot method is called.
        Specified by:
        stripPrefix in interface org.glassfish.gmbal.ManagedObjectManager
        Parameters:
        str - Class package name to strip from type name.
      • stripPackagePrefix

        public void stripPackagePrefix()
        Description copied from interface: org.glassfish.gmbal.ManagedObjectManager
        Change the default type name algorithm so that if nothing else applies, the entire package prefix is stripped form the Class name. Otherwise, the full Class name is the type.
        Specified by:
        stripPackagePrefix in interface org.glassfish.gmbal.ManagedObjectManager
      • getDomain

        public String getDomain()
        Description copied from interface: org.glassfish.gmbal.ManagedObjectManager
        Return the domain name that was used when this ManagedObjectManager was created. This is the JMX domain that will be used in all ObjectNames created by this ManagedObjectManager.

        May be called at any time.

        Specified by:
        getDomain in interface org.glassfish.gmbal.ManagedObjectManager
        Returns:
        Get the domain name for this ManagedObjectManager.
      • setMBeanServer

        public void setMBeanServer​(MBeanServer server)
        Description copied from interface: org.glassfish.gmbal.ManagedObjectManager
        Set the MBeanServer to which all MBeans using this interface are published. The default value is java.lang.management.ManagementFactory.getPlatformMBeanServer().

        Must be called before a successful createRoot call.

        Specified by:
        setMBeanServer in interface org.glassfish.gmbal.ManagedObjectManager
        Parameters:
        server - The MBeanServer to set as the MBeanServer for this ManagedObjectManager.
      • getMBeanServer

        public MBeanServer getMBeanServer()
        Description copied from interface: org.glassfish.gmbal.ManagedObjectManager
        Get the current MBeanServer.

        May be called at any time.

        Specified by:
        getMBeanServer in interface org.glassfish.gmbal.ManagedObjectManager
        Returns:
        The current MBeanServer, either the default, or the value passed to setMBeanServer.
      • setResourceBundle

        public void setResourceBundle​(ResourceBundle rb)
        Description copied from interface: org.glassfish.gmbal.ManagedObjectManager
        Set the ResourceBundle to use for getting localized descriptions. If not set, the description is the value in the annotation.

        Must be called before a successful call to a createRoot method.

        Specified by:
        setResourceBundle in interface org.glassfish.gmbal.ManagedObjectManager
        Parameters:
        rb - The resource bundle to use. May be null.
      • getResourceBundle

        public ResourceBundle getResourceBundle()
        Description copied from interface: org.glassfish.gmbal.ManagedObjectManager
        Get the resource bundle (if any) set by setResourceBundle.

        May be called at any time.

        Specified by:
        getResourceBundle in interface org.glassfish.gmbal.ManagedObjectManager
        Returns:
        The resource bundle set by setResourceBundle: may be null.
      • addAnnotation

        public void addAnnotation​(AnnotatedElement element,
                                  Annotation annotation)
        Description copied from interface: org.glassfish.gmbal.ManagedObjectManager
        Method to add an annotation to an element that cannot be modified. This is typically needed when dealing with an implementation of an interface that is part of a standardized API, and so the interface cannot be annotated by modifiying the source code. In some cases the implementation of the interface also cannot be inherited, because the implementation is generated by a standardized code generator. Another possibility is that there are several different implementations of the standardized interface, and it is undesirable to annotate each implementation with @InheritedAttributes.
        Specified by:
        addAnnotation in interface org.glassfish.gmbal.ManagedObjectManager
        Parameters:
        element - The annotated element (class or method for our purposes).
        annotation - The annotation we wish to add to the element.
      • addInheritedAnnotations

        public void addInheritedAnnotations​(Class<?> cls)
        Description copied from interface: org.glassfish.gmbal.ManagedObjectManager
        Add all annotations for this class as if they were declared on the inheritance parent(s) of the class (immediate superclass for a class, all immediate superinterfaces for an interface). Also add all method annotations for methods that override an inherited method. This acts as if all annotations on cls were actually applied to the immediate super class or interface.
        Specified by:
        addInheritedAnnotations in interface org.glassfish.gmbal.ManagedObjectManager
        Parameters:
        cls - Class to analyze for inherited annotations.
      • setRegistrationDebug

        public void setRegistrationDebug​(org.glassfish.gmbal.ManagedObjectManager.RegistrationDebugLevel level)
        Description copied from interface: org.glassfish.gmbal.ManagedObjectManager
        Print debug output to System.out.

        May be called at any time.

        Specified by:
        setRegistrationDebug in interface org.glassfish.gmbal.ManagedObjectManager
        Parameters:
        level - NONE is no debugging at all, NORMAL traces high-level construction of skeletons and type converters, and dumps results of new skeletons and type converters, FINE traces everything in great detail. The tracing is done with INFO-level logger calls. The logger name is that package name (org.glassfish.gmbal.impl).
      • setRuntimeDebug

        public void setRuntimeDebug​(boolean flag)
        Description copied from interface: org.glassfish.gmbal.ManagedObjectManager
        Enable generation of debug log at INFO level for runtime MBean operations to the org.glassfish.gmbal.impl logger.

        May be called at any time.

        Specified by:
        setRuntimeDebug in interface org.glassfish.gmbal.ManagedObjectManager
        Parameters:
        flag - true to enable runtime debug, false to disable.
      • setTypelibDebug

        public void setTypelibDebug​(int level)
        Description copied from interface: org.glassfish.gmbal.ManagedObjectManager
        Enabled generation of debug log for type evaluator debugging. This happens as part of the registration process for the first time a particular class is processed.

        May be called at any time.

        Specified by:
        setTypelibDebug in interface org.glassfish.gmbal.ManagedObjectManager
        Parameters:
        level - set to 1 to just see the results of the TypeEvaluator, >1 to see lots of details. WARNING: values >1 will result in a large amount of output.
      • setJMXRegistrationDebug

        public void setJMXRegistrationDebug​(boolean flag)
        Description copied from interface: org.glassfish.gmbal.ManagedObjectManager
        Set debugging for JMX registrations. If true, all registrations and deregistrations with the MBeanServer are traced.
        Specified by:
        setJMXRegistrationDebug in interface org.glassfish.gmbal.ManagedObjectManager
        Parameters:
        flag - True to enalbed registration tracing.
      • dumpSkeleton

        public String dumpSkeleton​(Object obj)
        Description copied from interface: org.glassfish.gmbal.ManagedObjectManager
        Dump the skeleton used in the implementation of the MBean for obj. Obj must be currently registered.

        Must be called after a successful call to a createRoot method.

        Specified by:
        dumpSkeleton in interface org.glassfish.gmbal.ManagedObjectManager
        Parameters:
        obj - The registered object whose skeleton should be displayed.
        Returns:
        The string representation of the skeleton.
      • suppressDuplicateRootReport

        public void suppressDuplicateRootReport​(boolean suppressReport)
        Description copied from interface: org.glassfish.gmbal.ManagedObjectManager
        Suppress reporting of a duplicate root name. If this option is enabled, createRoot( Object ) and createRoot( Object, String ) will return null for a duplicate root name, otherwise a Gmbal error will be reported. Note that this applies ONLY to createRoot: the register methods are unaffected. Also note that any other errors that might occur on createRoot will be reported normally.

        Must be called before a successful call to a createRoot method.

        Specified by:
        suppressDuplicateRootReport in interface org.glassfish.gmbal.ManagedObjectManager
      • equalsProxiedInstance

        public boolean equalsProxiedInstance​(WSEndpoint endpoint)
        Description copied from class: WSEndpoint
        Used for managed endpoints infrastructure to compare equality of proxies vs proxied endpoints.
        Overrides:
        equalsProxiedInstance in class WSEndpoint
        Returns:
        true if the proxied endpoint instance held by this instance equals to 'endpoint', otherwise return false.
      • createCodec

        public Codec createCodec()
        Description copied from class: WSEndpoint
        Gets the Endpoint's codec that is used to encode/decode Messages. This is a copy of the master codec and it shouldn't be shared across two requests running concurrently(unless it is stateless).
        Specified by:
        createCodec in class WSEndpoint
        Returns:
        codec to encode/decode
      • getServiceName

        public QName getServiceName()
        Description copied from class: WSEndpoint
        Gets the application endpoint's serviceName. It could be got from DD or annotations
        Specified by:
        getServiceName in class WSEndpoint
        Returns:
        same as wsdl:service QName if WSDL exists or generated
      • getPortName

        public QName getPortName()
        Description copied from class: WSEndpoint
        Gets the application endpoint's portName. It could be got from DD or annotations
        Specified by:
        getPortName in class WSEndpoint
        Returns:
        same as wsdl:port QName if WSDL exists or generated
      • getPort

        public WSDLPort getPort()
        Description copied from class: WSEndpoint
        Gets the port that this endpoint is serving.

        A service is not required to have a WSDL, and when it doesn't, this method returns null. Otherwise it returns an object that describes the port that this WSEndpoint is serving.

        Specified by:
        getPort in class WSEndpoint
        Returns:
        Possibly null, but always the same value.
      • getServiceDefinition

        public ServiceDefinition getServiceDefinition()
        Description copied from class: WSEndpoint
        Gets the description of the service.

        A description is a set of WSDL/schema and other documents that together describes a service. A service is not required to have a description, and when it doesn't, this method returns null.

        Specified by:
        getServiceDefinition in class WSEndpoint
        Returns:
        Possibly null, always the same value under ordinary circumstances but may change if the endpoint is managed.
      • getComponentRegistry

        public Set getComponentRegistry()
        Description copied from class: WSEndpoint
        Gets the list of EndpointComponent that are associated with this endpoint.

        Components (such as codec, tube, handler, etc) who wish to provide some service to other components in the endpoint can iterate the registry and call its EndpointComponent.getSPI(Class) to establish a private contract between components.

        Components who wish to subscribe to such a service can add itself to this set.

        Specified by:
        getComponentRegistry in class WSEndpoint
        Returns:
        always return the same set.
      • getSEIModel

        public SEIModel getSEIModel()
        Description copied from class: WSEndpoint
        Gets the SEIModel that represents the relationship between WSDL and Java SEI.

        This method returns a non-null value if and only if this endpoint is ultimately serving an application through an SEI.

        Specified by:
        getSEIModel in class WSEndpoint
        Returns:
        maybe null. See above for more discussion. Always the same value.
      • getPolicyMap

        public PolicyMap getPolicyMap()
        Description copied from class: WSEndpoint
        Gives the PolicMap that captures the Policy for the endpoint
        Specified by:
        getPolicyMap in class WSEndpoint
        Returns:
        PolicyMap
      • closeManagedObjectManager

        public void closeManagedObjectManager()
        Description copied from class: WSEndpoint
        Close the ManagedObjectManager for this endpoint. This is used by the Web Service Configuration Management system so that it closes the MOM before it creates a new WSEndpoint. Then it calls dispose on the existing endpoint and then installs the new endpoint. The call to dispose also calls closeManagedObjectManager, but is a noop if that method has already been called.
        Specified by:
        closeManagedObjectManager in class WSEndpoint
      • getEndpointReference

        public jakarta.xml.ws.EndpointReference getEndpointReference​(Class clazz,
                                                                     String address,
                                                                     String wsdlAddress,
                                                                     Element... referenceParameters)
        Description copied from class: WSEndpoint
        Return EndpointReference instance, based on passed parameters and spec version represented by clazz
        Specified by:
        getEndpointReference in class WSEndpoint
        Parameters:
        clazz - represents spec version
        address - endpoint address
        wsdlAddress - wsdl address
        referenceParameters - any reference parameters to be added to the instance
        Returns:
        EndpointReference instance based on passed parameters and values obtained from current instance
      • getEndpointReference

        public jakarta.xml.ws.EndpointReference getEndpointReference​(Class clazz,
                                                                     String address,
                                                                     String wsdlAddress,
                                                                     List metadata,
                                                                     List referenceParameters)
        Specified by:
        getEndpointReference in class WSEndpoint
        Returns:
        EndpointReference instance based on passed parameters and values obtained from current instance
      • getObjectRegistrationManager

        public org.glassfish.pfl.tf.timer.spi.ObjectRegistrationManager getObjectRegistrationManager()
        Description copied from interface: org.glassfish.gmbal.ManagedObjectManager
        Return an ObjectRegistrationManager as required in the pfl timer services.

        Can be called at any time.

        Specified by:
        getObjectRegistrationManager in interface org.glassfish.gmbal.ManagedObjectManager