blob: 7766e8e32a515ca86b7d89c91c37e39a34d1720b [file] [log] [blame]
/*
*
* Licensed to the Apache Software Foundation (ASF) under one
* or more contributor license agreements. See the NOTICE file
* distributed with this work for additional information
* regarding copyright ownership. The ASF licenses this file
* to you under the Apache License, Version 2.0 (the
* "License"); you may not use this file except in compliance
* with the License. You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing,
* software distributed under the License is distributed on an
* "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
* KIND, either express or implied. See the License for the
* specific language governing permissions and limitations
* under the License.
*
*/
package org.apache.airavata.common.utils;
import java.util.ArrayList;
import javax.management.InstanceNotFoundException;
import javax.management.MBeanServer;
import javax.management.MBeanServerFactory;
import javax.management.ObjectName;
import org.apache.airavata.common.exception.ApplicationSettingsException;
import org.apache.catalina.Server;
import org.apache.catalina.Service;
import org.apache.catalina.connector.Connector;
import org.apache.coyote.ProtocolHandler;
import org.apache.coyote.http11.Http11AprProtocol;
import org.apache.coyote.http11.Http11NioProtocol;
import org.apache.coyote.http11.Http11Protocol;
public class ServerSettings extends ApplicationSettings{
private static final String SYSTEM_USER="system.user";
private static final String SYSTEM_USER_PASSWORD="system.password";
private static final String SYSTEM_USER_GATEWAY="system.gateway";
private static final String TOMCAT_PORT = "port";
private static final String SERVER_CONTEXT_ROOT="server.context-root";
private static String tomcatPort=null;
private static final String CREDENTIAL_STORE_DB_URL ="credential.store.jdbc.url";
private static final String CREDENTIAL_STORE_DB_USER ="credential.store.jdbc.user";
private static final String CREDENTIAL_STORE_DB_PASSWORD ="credential.store.jdbc.password";
private static final String CREDENTIAL_STORE_DB_DRIVER ="credential.store.jdbc.driver";
private static final String REGISTRY_DB_URL ="registry.jdbc.url";
private static final String REGISTRY_DB_USER ="registry.jdbc.user";
private static final String REGISTRY_DB_PASSWORD ="registry.jdbc.password";
private static final String REGISTRY_DB_DRIVER ="registry.jdbc.driver";
private static final String ENABLE_HTTPS = "enable.https";
private static final String HOST_SCHEDULER = "host.scheduler";
public static String getSystemUser() throws ApplicationSettingsException{
return getSetting(SYSTEM_USER);
}
public static String getSystemUserPassword() throws ApplicationSettingsException{
return getSetting(SYSTEM_USER_PASSWORD);
}
public static String getSystemUserGateway() throws ApplicationSettingsException{
return getSetting(SYSTEM_USER_GATEWAY);
}
public static String getServerContextRoot(){
return getSetting(SERVER_CONTEXT_ROOT,"axis2");
}
public static String getCredentialStoreDBUser() throws ApplicationSettingsException {
try {
return getSetting(CREDENTIAL_STORE_DB_USER);
} catch (ApplicationSettingsException e) {
return getSetting(REGISTRY_DB_USER);
}
}
public static String getCredentialStoreDBPassword() throws ApplicationSettingsException {
try {
return getSetting(CREDENTIAL_STORE_DB_PASSWORD);
} catch (ApplicationSettingsException e) {
return getSetting(REGISTRY_DB_PASSWORD);
}
}
public static String getCredentialStoreDBDriver() throws ApplicationSettingsException {
try {
return getSetting(CREDENTIAL_STORE_DB_DRIVER);
} catch (ApplicationSettingsException e) {
return getSetting(REGISTRY_DB_DRIVER);
}
}
public static String getCredentialStoreDBURL() throws ApplicationSettingsException {
try {
return getSetting(CREDENTIAL_STORE_DB_URL);
} catch (ApplicationSettingsException e) {
return getSetting(REGISTRY_DB_URL);
}
}
public static boolean isEnableHttps() {
try {
return Boolean.parseBoolean(getSetting(ENABLE_HTTPS));
} catch (ApplicationSettingsException e) {
return false;
}
}
public static String getTomcatPort(String protocol) throws ApplicationSettingsException {
if (tomcatPort==null) {
try {
//First try to get the port from a tomcat if it is already running
ArrayList<MBeanServer> mBeanServers = MBeanServerFactory
.findMBeanServer(null);
if (mBeanServers.size() > 0) {
MBeanServer mBeanServer = mBeanServers.get(0);
Server server = null;
String[] domains = mBeanServer.getDomains();
for (String domain : domains) {
try {
server = (Server) mBeanServer.getAttribute(
new ObjectName(domain, "type", "Server"),
"managedResource");
break;
} catch (InstanceNotFoundException e) {
//ignore
}
}
if (server != null) {
Service[] findServices = server.findServices();
for (Service service : findServices) {
for (Connector connector : service.findConnectors()) {
ProtocolHandler protocolHandler = connector.getProtocolHandler();
if(protocol != null && protocol.equals(connector.getScheme())){
if (protocolHandler instanceof Http11Protocol
|| protocolHandler instanceof Http11AprProtocol
|| protocolHandler instanceof Http11NioProtocol) {
Http11Protocol p = (Http11Protocol) protocolHandler;
if (p.getSslImplementationName() == null
|| p.getSslImplementationName()
.equals("")) {
tomcatPort = String.valueOf(connector
.getPort());
}
}
}
}
}
}
}
} catch (Exception e) {
e.printStackTrace();
}
//if unable to determine the server port from a running tomcat server, get it from
//the server settings file
if (tomcatPort == null) {
tomcatPort = getSetting(TOMCAT_PORT);
}
}
return tomcatPort;
}
public static String getHostScheduler() throws ApplicationSettingsException {
return getSetting(HOST_SCHEDULER);
}
}