Start line:  
End line:  

Snippet Preview

Snippet HTML Code

Stack Overflow Questions
  /*
   * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
   *
   * Copyright (c) 1997-2010 Oracle and/or its affiliates. All rights reserved.
   *
   * The contents of this file are subject to the terms of either the GNU
   * General Public License Version 2 only ("GPL") or the Common Development
   * and Distribution License("CDDL") (collectively, the "License").  You
   * may not use this file except in compliance with the License.  You can
  * obtain a copy of the License at
  * https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html
  * or packager/legal/LICENSE.txt.  See the License for the specific
  * language governing permissions and limitations under the License.
  *
  * When distributing the software, include this License Header Notice in each
  * file and include the License file at packager/legal/LICENSE.txt.
  *
  * GPL Classpath Exception:
  * Oracle designates this particular file as subject to the "Classpath"
  * exception as provided by Oracle in the GPL Version 2 section of the License
  * file that accompanied this code.
  *
  * Modifications:
  * If applicable, add the following below the License Header, with the fields
  * enclosed by brackets [] replaced by your own identifying information:
  * "Portions Copyright [year] [name of copyright owner]"
  *
  * Contributor(s):
  * If you wish your version of this file to be governed by only the CDDL or
  * only the GPL Version 2, indicate your decision by adding "[Contributor]
  * elects to include this software in this distribution under the [CDDL or GPL
  * Version 2] license."  If you don't indicate a single choice of license, a
  * recipient has the option to distribute your version of this file under
  * either the CDDL, the GPL Version 2 or to extend the choice of license to
  * its licensees as provided above.  However, if you add GPL Version 2 code
  * and therefore, elected the GPL Version 2 license, then the option applies
  * only if the new code is made subject to such option by the copyright
  * holder.
  */
 
 package com.sun.enterprise.connectors.jms.util;
 
 import java.io.File;
 import java.util.List;
 

Author(s):
 
 public class JmsRaUtil {
 
     private final String MQ_RAR = "imqjmsra.rar";
 
     private final String SYSTEM_APP_DIR =
         "lib" + . + "install" + . + "applications";
 
     private final String MQ_RAR_MANIFEST =
         . + . + "META-INF"
         + . + "MANIFEST.MF";
 
     // Manifest version tag.
     private final String MANIFEST_TAG = "Implementation-Version";
 
     private static final String propName_reconnect_delay_in_seconds =
         "reconnect-delay-in-seconds";
     private static final String propName_reconnect_max_retries =
         "reconnect-max-retries";
     private static final String propName_reconnect_enabled =
         "reconnect-enabled";
     private static final int DEFAULT_RECONNECT_DELAY = 60;
     private static final int DEFAULT_RECONNECT_RETRIES = 60;
 
     private static final String propName_cmt_max_runtime_exceptions
         = "cmt-max-runtime-exceptions";
     private static final int DEFAULT_CMT_MAX_RUNTIME_EXCEPTIONS = 1;
 
     private static final String ENABLE_AUTO_CLUSTERING = "com.sun.enterprise.connectors.system.enableAutoClustering";
 
    private boolean reconnectEnabled = false;
    ServerContext sc = null;
    //ConfigContext ctx = null;
    JmsService js = null;
    MQAddressList list = null;
    static Logger _mdblogger = LogDomains.getLogger(JmsRaUtil.class.);
    static Logger _rarlogger = LogDomains.getLogger(JmsRaUtil.class.);
    public JmsRaUtil() throws ConnectorRuntimeException {
        this(null);
    }
    public JmsRaUtil(JmsService jsthrows ConnectorRuntimeException {
        try {
            if (js != null) {
            this. = js;
            } else {
                  this. = (JmsService) Globals.get(JmsService.class);
                //sc = ApplicationServer.getServerContext();
                //ctx = sc.getConfigContext();
                //this.js = ServerBeansFactory.getJmsServiceBean(ctx);
            }
             = new MQAddressList(this.);
//            if (isClustered() && ! this.js.getType().equals(
//                ActiveJmsResourceAdapter.REMOTE)) {
//                list.setupForLocalCluster();
//            } else {
//                list.setup();
//            }
        } catch(Exception ce) {
            throw handleException(ce);
        }
    }
    public void setupAddressList() throws ConnectorRuntimeException{
      try {
    .setup();
    } catch (Exception e) {
        throw handleException(e);
    }
    }
    public String getUrl() {
    try {
            return .toString();
    } catch (Exception e) {
        return null;
    }
    }
    public static boolean isClustered(List clustersString instanceName) {
              //ConfigContext ctxt = ApplicationServer.getServerContext().getConfigContext();
              return (enableClustering() && isServerClustered(clusters,
                instanceName));
     }
      
Return true if the given server instance is part of a cluster.
    public static boolean isServerClustered(List clustersString instanceName)
    {
        return (getClusterForServer(clustersinstanceName) != null);
    }
    public static Cluster getClusterForServer(List clustersString instanceName){
        //Return the server only if it is part of a cluster (i.e. only if a cluster
        //has a reference to it).
        for (int i = 0; i < clusters.size(); i++) {
            final List servers = ((Cluster)clusters.get(i)).getInstances();
            for (int j = 0; j < servers.size(); j++) {
                if (((Server)servers.get(j)).getName().equals(instanceName)) {
                    // check to see if the server exists as a sanity check.
                    // NOTE: we are not checking for duplicate server instances here.
                    return (Clusterclusters.get(i);
                }
            }
        }
        return null;
    }
     private static boolean enableClustering() {
     try {
        /* This flag disables the auto clustering functionality
           * No uMQ clusters will  be created with AS cluster if
           * this flag is set to false. Default is true.
           */
        String enablecluster = System.getProperty();
        .log(.,"Sun MQ Auto cluster system property" + enablecluster);
                  if ((enablecluster != null) &&
            (enablecluster.trim().equals("false"))){
        .log(.,"Disabling Sun MQ Auto Clustering");
                    return false;
              }
     }catch (Exception e) {
        ;
     }
    .log(.,"Enabling Sun MQ Auto Clustering");
    return true;
      }
    public String getJMSServiceType(){
     return this..getType();
    }
    public MQAddressList getUrlList() {
        return ;
    }
    public boolean getReconnectEnabled() {
        return Boolean.parseBoolean(.getReconnectEnabled());
    }
    public String getReconnectInterval() {
        return .getReconnectIntervalInSeconds();
    }
    public String getReconnectAttempts() {
        return .getReconnectAttempts();
    }
    public String getAddressListIterations() {
        return .getAddresslistIterations();
    }
    public String getAddressListBehaviour() {
        return .getAddresslistBehavior();
    }
    public void setMdbContainerProperties(){
        MdbContainer mdbc = null;
        try {
            ServerContext sc = Globals.get(ServerContext.class);
            mdbc = Globals.get(MdbContainer.class);
            //com.sun.enterprise.server.ServerContext sc =
              //  com.sun.enterprise.server.ApplicationServer.getServerContext();
            //mdbc = com.sun.enterprise.config.serverbeans.ServerBeansFactory.
              //    getMdbContainerBean(sc.getConfigContext());
        }
        catch (Exception e) {
            .log(."containers.mdb.config_exception",
                        new Object[]{e.getMessage()});
            if (.isLoggable(.)) {
                .log(.e.getClass().getName(), e);
            }
        }
        if (mdbc != null) {
            List props = mdbc.getProperty();//        getElementProperty();
            if (props != null) {
                for (int i = 0; i < props.size(); i++) {
                    Property p = (Propertyprops.get(i);
                    if (p == nullcontinue;
                    String name = p.getName();
                    if (name == nullcontinue;
                    try {
                        if (name.equals()) {
                            if (p.getValue() == nullcontinue;
                             =
                                Boolean.valueOf(p.getValue()).booleanValue();
                        }
                        else if (name.equals
                                 ()) {
                            try {
                                 =
                                    Integer.parseInt(p.getValue());
                            } catch (Exception e) {
                                .log(.,
                                    "containers.mdb.config_exception",
                                    new Object[]{e.getMessage()});
                            }
                        }
                        else if (name.equals()) {
                            try {
                                 =
                                    Integer.parseInt(p.getValue());
                            } catch (Exception e) {
                                .log(.,
                                    "containers.mdb.config_exception",
                                    new Object[]{e.getMessage()});
                            }
                        }
                        else if (name.equals
                                 ()) {
                            try {
                                 =
                                    Integer.parseInt(p.getValue());
                            } catch (Exception e) {
                                .log(.,
                                    "containers.mdb.config_exception",
                                    new Object[]{e.getMessage()});
                            }
                        }
                    } catch (Exception e) {
                        .log(.,
                                    "containers.mdb.config_exception",
                                    new Object[]{e.getMessage()});
                        if (.isLoggable(.)) {
                            .log(.e.getClass().getName(), e);
                        }
                    }
                }
            }
        }
        if ( < 0) {
        }
        if ( < 0) {
        }
        if (.isLoggable(.)) {
            .log(.,
                +"="+
                 +", "+
                "="+ + ", "+
                +"="+);
        }
        //Now set all these properties in the active resource adapter
        MdbContainerProps.setReconnectDelay();
        MdbContainerProps.setReconnectMaxRetries();
        MdbContainerProps.setReconnectEnabled();
        MdbContainerProps.setMaxRuntimeExceptions();
    }
    public void configureDescriptor(ConnectorDescriptor cd) {
        Object[] envProps = cd.getConfigProperties().toArray();
        for (int i = 0; i < envProps.lengthi++) {
            ConnectorConfigProperty  envProp = (ConnectorConfigProperty ) envProps[i];
            String name = envProp.getName();
        if (!name.equals("ConnectionURL")) {
            continue;
        }
            String userValue = getUrl();
            if (userValue != null) {
                cd.removeConfigProperty(envProp);
                cd.addConfigProperty(new ConnectorConfigProperty (
                              nameuserValueuserValueenvProp.getType()));
            }
        }
    }

    
Obtains the Implementation-Version from the MQ Client libraries that are deployed in the application server and in MQ installation directory.
    public void upgradeIfNecessary() {
        String installedMqVersion = null;
        String deployedMqVersion = null;
        try {
           installedMqVersion = getInstalledMqVersion();
           .log(.,"installedMQVersion :: " + installedMqVersion);
           deployedMqVersion =  getDeployedMqVersion();
           .log(.,"deployedMQVersion :: " + deployedMqVersion);
        }catch (Exception e) {
        return;
        }
        String deployed_dir =
           java.lang. System.getProperty(.)
           + . +  + .
           + .;
        // If the Manifest entry has different versions, then attempt to
        // explode the MQ resource adapter.
        if (!installedMqVersion.equals(deployedMqVersion)) {
           try {
               .log(."jmsra.upgrade_started" );
           ZipFile rarFile = new ZipFile(System.getProperty
                                 (.) +
                                 . + deployed_dir);
               rarFile.explode();
               .log(."jmsra.upgrade_completed");
       } catch(ZipFileException ze) {
               .log(.,"jmsra.upgrade_failed",ze.getMessage());
           }
        }
    }
    private String getInstalledMqVersion() throws Exception {
       String ver = null;
       // Full path of installed Mq Client library
       String installed_dir =
       String jarFile = installed_dir + . + ;
       .log(.,"Installed MQ JAR " + jarFile);
    JarFile jFile = null;
       try {
       if ((new File(jarFile)).exists()) {
        /* This is for a file based install
           * RAR has to be present in this location
           * ASHOME/imq/lib
           */
        jFile = new JarFile(jarFile);
       } else {
        /* This is for a package based install
           * RAR has to be present in this location
           * /usr/lib
           */
        jFile = new JarFile(installed_dir + . + ".." + . + );
       }
           Manifest mf = jFile.getManifest();
           ver = mf.getMainAttributes().getValue();
           return ver;
       } catch (Exception e) {
           .log(."jmsra.upgrade_check_failed",
                       e.getMessage() + ":" + jarFile );
           throw e;
       }
    }
    private String getDeployedMqVersion() throws Exception {
       String ver = null;
        // Full path of Mq client library that is deployed in appserver.
       String deployed_dir =
           + . + ;
       String manifestFile = deployed_dir + . +
                             ;
       .log(.,"Deployed MQ version Manifest file" + manifestFile);
       try {
           Manifest mf = new Manifest(new FileInputStream(manifestFile));
           ver = mf.getMainAttributes().getValue();
           return ver;
       } catch (Exception e) {
           .log(."jmsra.upgrade_check_failed",
                       e.getMessage() + ":" + manifestFile );
           throw e;
       }
   }
        ConnectorRuntimeException cre =
             new ConnectorRuntimeException(e.getMessage());
        cre.initCause(e);
        return cre;
    }
    public static String getJMSPropertyValue(Server as){
        SystemProperty sp = as.getSystemProperty("JMS_PROVIDER_PORT");
        if (sp != nullreturn sp.getValue();
        Config config = as.getConfig();
        if (config != null)
            sp = config.getSystemProperty("JMS_PROVIDER_PORT");
        if (sp != nullreturn sp.getValue();
        return null;
    }
    public static String getUnAliasedPwd(String alias){
        try{
            String unalisedPwd = RelativePathResolver.getRealPasswordFromAlias(alias);
            if (unalisedPwd != null && "".equals(unalisedPwd))
               return unalisedPwd;
        }catch(Exception e){
        }
         return alias;
    }
New to GrepCode? Check out our FAQ X