blob: 13002680c8fd66fe54b860ba8dd099352f4e4574 [file] [log] [blame]
/*
* Copyright (c) 1997, 2020 Oracle and/or its affiliates. All rights reserved.
*
* This program and the accompanying materials are made available under the
* terms of the Eclipse Public License v. 2.0, which is available at
* http://www.eclipse.org/legal/epl-2.0.
*
* This Source Code may also be made available under the following Secondary
* Licenses when the conditions for such availability set forth in the
* Eclipse Public License v. 2.0 are satisfied: GNU General Public License,
* version 2 with the GNU Classpath Exception, which is available at
* https://www.gnu.org/software/classpath/license.html.
*
* SPDX-License-Identifier: EPL-2.0 OR GPL-2.0 WITH Classpath-exception-2.0
*/
package com.sun.enterprise.config.serverbeans;
import com.sun.enterprise.config.serverbeans.customvalidators.ReferenceConstraint;
import com.sun.enterprise.util.LocalStringManagerImpl;
import java.beans.PropertyVetoException;
import java.util.List;
import jakarta.validation.constraints.NotNull;
import jakarta.validation.constraints.Pattern;
import jakarta.validation.Payload;
import org.jvnet.hk2.config.types.Property;
import org.jvnet.hk2.config.types.PropertyBag;
import org.glassfish.api.admin.config.Named;
import org.glassfish.grizzly.config.dom.Ssl;
import static org.glassfish.config.support.Constants.NAME_REGEX;
import org.glassfish.api.admin.config.PropertiesDesc;
import org.glassfish.quality.ToDo;
import org.jvnet.hk2.config.*;
/**
* The jmx-connector element defines the configuration of a JSR 160 compliant remote JMX Connector.
*/
/* @XmlType(name = "", propOrder = {
"ssl",
"property"
}) */
@Configured
@ReferenceConstraint(skipDuringCreation = true, payload = JmxConnector.class)
public interface JmxConnector extends ConfigBeanProxy, Named, PropertyBag, Payload {
final static String PORT_PATTERN = "\\$\\{[\\p{L}\\p{N}_][\\p{L}\\p{N}\\-_./;#]*\\}"
+ "|[1-9]|[1-9][0-9]|[1-9][0-9][0-9]|[1-9][0-9][0-9][0-9]" + "|[1-5][0-9][0-9][0-9][0-9]|6[0-4][0-9][0-9][0-9]"
+ "|65[0-4][0-9][0-9]|655[0-2][0-9]|6553[0-5]";
/**
* Gets the value of the enabled property.
*
* Defines if this connector is enabled. For EE this must be enabled
*
* @return possible object is {@link String }
*/
@Attribute(defaultValue = "true", dataType = Boolean.class)
String getEnabled();
/**
* Sets the value of the enabled property.
*
* @param value allowed object is {@link String }
*/
void setEnabled(String value) throws PropertyVetoException;
/**
* Gets the value of the protocol property.
*
* Defines the protocol that this jmx-connector should support. Supported protocols are defined by Entity rjmx-protocol.
* Other protocols can be used by user applications independently.
*
* @return possible object is {@link String }
*/
@Attribute(defaultValue = "rmi_jrmp")
String getProtocol();
/**
* Sets the value of the protocol property.
*
* @param value allowed object is {@link String }
*/
void setProtocol(String value) throws PropertyVetoException;
/**
* Gets the value of the address property.
*
* Specifies the IP address or host-name.
*
* @return possible object is {@link String }
*/
@Attribute
@NotNull
String getAddress();
/**
* Sets the value of the address property.
*
* @param value allowed object is {@link String }
*/
void setAddress(String value) throws PropertyVetoException;
/**
* Gets the value of the port property.
*
* Specifies the port of the jmx-connector-server. Note that jmx-service-url is a function of protocol, port and address
* as defined by the JSR 160 1.0 Specification.
*
* @return possible object is {@link String }
*/
@Attribute
@Pattern(regexp = PORT_PATTERN, message = "{port-pattern}", payload = JmxConnector.class)
String getPort();
/**
* Sets the value of the port property.
*
* @param value allowed object is {@link String }
*/
void setPort(String value) throws PropertyVetoException;
/**
* Gets the value of the acceptAll property.
*
* Determines whether the connection can be made on all the network interfaces. A value of false implies that the
* connections only for this specific address will be selected.
*
* @return possible object is {@link String }
*/
@Attribute(defaultValue = "false", dataType = Boolean.class)
String getAcceptAll();
/**
* Sets the value of the acceptAll property.
*
* @param value allowed object is {@link String }
*/
void setAcceptAll(String value) throws PropertyVetoException;
/**
* Gets the value of the auth-realm-name property.
*
* The name of the auth-realm in this config element that represents the special administrative realm. All
* authentication (from administraive GUI and CLI) will be handled by this realm.
*
* Note: This is deprecated since GlassFish v3 FCS. Use similarly named attribute on admin-service. This will be used
* only when the admin-service attribute in missing.
*
* @return String representing the name of auth realm
*/
@Deprecated
@Attribute
@NotNull
@Pattern(regexp = NAME_REGEX)
@ReferenceConstraint.RemoteKey(message = "{resourceref.invalid.auth-realm-name}", type = AuthRealm.class)
String getAuthRealmName();
/**
* Sets the value of the authRealmName property.
*
* @param value allowed object is {@link String }
*/
void setAuthRealmName(String value) throws PropertyVetoException;
/**
* Gets the value of the securityEnabled property.
*
* Decides whether the transport layer security be used in jmx-connector. If true, configure the ssl element
*
* @return possible object is {@link String }
*/
@Attribute(defaultValue = "true", dataType = Boolean.class)
String getSecurityEnabled();
/**
* Sets the value of the securityEnabled property.
*
* @param value allowed object is {@link String }
*/
void setSecurityEnabled(String value) throws PropertyVetoException;
/**
* Gets the value of the ssl property.
*
* @return possible object is {@link Ssl }
*/
@Element
Ssl getSsl();
/**
* Sets the value of the ssl property.
*
* @param value allowed object is {@link Ssl }
*/
void setSsl(Ssl value) throws PropertyVetoException;
/**
* Properties as per {@link PropertyBag}
*/
@ToDo(priority = ToDo.Priority.IMPORTANT, details = "Provide PropertyDesc for legal props")
@PropertiesDesc(props = {})
@Element
List<Property> getProperty();
}