You are viewing a plain text version of this content. The canonical link for it is here.
Posted to dev@directory.apache.org by "Tony Blanchard (JIRA)" <di...@incubator.apache.org> on 2005/07/11 14:49:10 UTC
[jira] Created: (DIREVE-182) A new GUI to manage server start/shutdown.
A new GUI to manage server start/shutdown.
------------------------------------------
Key: DIREVE-182
URL: http://issues.apache.org/jira/browse/DIREVE-182
Project: Directory Server
Type: New Feature
Components: server main
Environment: Tested on XP SP2 with JDK 1.5
Reporter: Tony Blanchard
Assigned to: Alex Karasulu
Priority: Minor
Here are the changes made to build this new GUI.
In server main,
Project.properties :
Change of this value "maven.javaapp.mainclass=org.apache.ldap.server.ServerMainGUI" to build an executable jar which launch the new GUI.
Porject.xml :
Adding in project block
<build>
<resources>
<resource>
<directory>${basedir}/src/main/java/res"</directory>
<targetPath>res</targetPath>
</resource>
</resources>
</build>
under "main\java" folder :
Adding a new folder named "res" with to files named "msg.properties" and "msg_fr_FR.properties".
msg.properties :
#ResourceBundle properties file
default_conf_msg=default
conf_label=Configuration file:
conf_button_label=Configuration
status_label=Status:
start_button_label=Start
stop_button_label=Stop
status_started=Started
status_stopped=Stopped
status_loading_conf=Loading configuration...
status_init_start_env=Initializing environment...
status_init_start=Starting server...
status_init_stop_env=Initializing stopping environment...
status_init_stop=Stopping server...
server_main_gui_title=LDAP server manager
status_not_stopped=Was unable to stop !
status_not_started=Was unable to start !
conf_selection_title=Configuration file selection
msg_fr_FR.properties:
#ResourceBundle properties file
default_conf_msg=Défaut
conf_label=Fichier de configuration :
conf_button_label=Configuration
status_label=Status :
start_button_label=Démarrage
stop_button_label=Arrêt
status_started=Démarré
status_stopped=Arrêté
status_loading_conf=Chargement de la configuration...
status_init_start_env=Initialisation de l''environment...
status_init_start=Démarrage du serveur...
status_init_stop_env=Initialisation de l''environement d'arrêt...
status_init_stop=Arrêt du serveur...
server_main_gui_title=Gestion du serveur LDAP
status_not_stopped=Arrêt impossible !
status_not_started=Démarrage impossible !
conf_selection_title=Configuration file selection
Under the package "org.apache.ldap.server" :
Addition of the class "org.apache.ldap.server.ServerMainGUI"
/*
* ServerMainGUI.java
*
* Created on 7 juillet 2005, 15:56
*/
package org.apache.ldap.server;
import java.util.Properties;
import java.util.ResourceBundle;
import javax.naming.Context;
import javax.naming.NamingException;
import javax.naming.directory.InitialDirContext;
import javax.swing.UIManager;
import javax.swing.UnsupportedLookAndFeelException;
import javax.swing.JFileChooser;
import java.awt.Dimension;
import java.awt.Insets;
import java.io.PrintStream;
import java.io.ByteArrayOutputStream;
import org.apache.ldap.server.configuration.MutableServerStartupConfiguration;
import org.apache.ldap.server.configuration.ShutdownConfiguration;
import org.apache.ldap.server.configuration.ServerStartupConfiguration;
import org.apache.ldap.server.jndi.ServerContextFactory;
import org.springframework.context.ApplicationContext;
import org.springframework.context.support.FileSystemXmlApplicationContext;
/**
* A box which enables to choose a server configuration file to start the server with.
* It allows to start or stop the server as needed.
* The main entry point of the application uses the "LDAP_SERVER_CONF" environment variable or
* application argument to locate the configuration file else, default values are used to start
* the server.
* The command line argument is prioritary facing the system environment variable.
* @author Tony Blanchard - 2005
*/
public class ServerMainGUI extends javax.swing.JDialog
{
protected Properties env;
protected ServerStartupConfiguration cfg;
private boolean confFileProvided = false;
/** Creates new form ServerMainGUI. */
public ServerMainGUI(java.awt.Frame pParent, boolean pModal)
{
super(pParent, pModal);
initComponents();
//Default configuration for the first run and while admin password is default
env = new Properties();
env.put( "java.naming.security.authentication", "simple");
env.put( Context.SECURITY_PRINCIPAL, "uid=admin,ou=system" );
env.put( Context.SECURITY_CREDENTIALS, "secret" );
cfg = new MutableServerStartupConfiguration();
setLocationRelativeTo(pParent);
setTitle(ResourceBundle.getBundle("res/msg").getString("server_main_gui_title"));
}
/**
* Enlarge the box to show the user what's wrong with it.
*/
protected void printError(Throwable pError)
{
errorOptionalPanel.add(errorScrollPanel);
Insets lBoxInsets = this.getInsets();
errorOptionalPanel.setPreferredSize(new Dimension(this.getWidth()- (lBoxInsets.left + lBoxInsets.right),200));
//compute the stack trace...
ByteArrayOutputStream lOutputStream = new ByteArrayOutputStream();
pError.printStackTrace(new PrintStream(lOutputStream));
errorMessage.append(lOutputStream.toString());
errorMessage.append(" ---\n");
pack();
}
/**
* Changes the configuration file path to use to load LDAP configuration file.
*/
public void setConfigurationFile(String pConfFilePath)
{
confFieldValue.setText(pConfFilePath);
confFieldValue.setToolTipText(pConfFilePath);
confFileProvided = true;
}
/**
* Start button reaction.
*/
protected void stopServer()
{
ResourceBundle lBundle = null;
try//For the case where a shema is missing we could want to catch
//ClassNotFoundException for instance
{
lBundle = ResourceBundle.getBundle("res/msg");
//Initializing environment
statusFieldValue.setText(lBundle.getString("status_init_stop_env"));
env.putAll( new ShutdownConfiguration().toJndiEnvironment() );
try
{
statusFieldValue.setText(lBundle.getString("status_init_stop"));
InitialDirContext lDir= new InitialDirContext( env );
env.clear();
statusFieldValue.setText(lBundle.getString("status_stopped"));
}
catch (NamingException pError)
{
printError(pError);
statusFieldValue.setText(lBundle.getString("status_not_stopped"));
}
finally
{
stopServer.setEnabled(false);
startServer.setEnabled(true);
}
}
catch (Throwable pError)
{
printError(pError);
statusFieldValue.setText(lBundle.getString("status_not_stopped"));
}
}
/**
* Start button reaction.
*/
protected void startServer()
{
ResourceBundle lBundle = null;
try//For the case where a shema is missing we could want to catch
//ClassNotFoundException for instance
{
lBundle = ResourceBundle.getBundle("res/msg");
//Loading configuration or using the default one.
if (confFileProvided)
{
statusFieldValue.setText(lBundle.getString("status_loading_conf"));
ApplicationContext factory = new FileSystemXmlApplicationContext( confFieldValue.getText() );
cfg = ( ServerStartupConfiguration ) factory.getBean( "configuration" );
env = ( Properties ) factory.getBean( "environment" );
}
//Initializing environment
statusFieldValue.setText(lBundle.getString("status_init_start_env"));
env.setProperty( Context.PROVIDER_URL, "ou=system" );
env.setProperty( Context.INITIAL_CONTEXT_FACTORY, ServerContextFactory.class.getName() );
env.putAll( cfg.toJndiEnvironment() );
try
{
statusFieldValue.setText(lBundle.getString("status_init_start"));
//Starting server
new InitialDirContext( env );
statusFieldValue.setText(lBundle.getString("status_started"));
}
catch (NamingException pError)
{
printError(pError);
statusFieldValue.setText(lBundle.getString("status_not_started"));
}
finally
{
stopServer.setEnabled(true);
startServer.setEnabled(false);
}
}
catch (Throwable pError)
{
printError(pError);
statusFieldValue.setText(lBundle.getString("status_not_started"));
}
}
/** This method is called from within the constructor to
* initialize the form.
* WARNING: Do NOT modify this code. The content of this method is
* always regenerated by the Form Editor.
*/
// <editor-fold defaultstate="collapsed" desc=" Generated Code ">//GEN-BEGIN:initComponents
private void initComponents()
{
errorScrollPanel = new javax.swing.JScrollPane();
errorMessage = new javax.swing.JTextArea();
mainPanel = new javax.swing.JPanel();
infoPanel = new javax.swing.JPanel();
confPanel = new javax.swing.JPanel();
confFieldValue = new javax.swing.JLabel();
confTitle = new javax.swing.JLabel();
statusPanel = new javax.swing.JPanel();
statusTitle = new javax.swing.JLabel();
statusFieldValue = new javax.swing.JLabel();
commandPanel = new javax.swing.JPanel();
loadConf = new javax.swing.JButton();
startServer = new javax.swing.JButton();
stopServer = new javax.swing.JButton();
errorOptionalPanel = new javax.swing.JPanel();
errorScrollPanel.setMaximumSize(new java.awt.Dimension(500, 200));
errorMessage.setEditable(false);
errorMessage.setFont(new java.awt.Font("Bitstream Vera Sans", 0, 10));
errorMessage.setBorder(null);
errorMessage.setMaximumSize(new java.awt.Dimension(500, 200));
errorScrollPanel.setViewportView(errorMessage);
setDefaultCloseOperation(javax.swing.WindowConstants.DISPOSE_ON_CLOSE);
mainPanel.setLayout(new java.awt.GridLayout(2, 0));
mainPanel.setPreferredSize(new java.awt.Dimension(400, 95));
infoPanel.setLayout(new java.awt.GridLayout(2, 0, 0, 2));
confPanel.setLayout(new java.awt.BorderLayout(4, 0));
confFieldValue.setText(java.util.ResourceBundle.getBundle("res/msg").getString("default_conf_msg"));
confPanel.add(confFieldValue, java.awt.BorderLayout.CENTER);
confTitle.setFont(new java.awt.Font("Microsoft Sans Serif", 1, 11));
confTitle.setText(java.util.ResourceBundle.getBundle("res/msg").getString("conf_label"));
confPanel.add(confTitle, java.awt.BorderLayout.WEST);
infoPanel.add(confPanel);
statusPanel.setLayout(new java.awt.BorderLayout(4, 0));
statusTitle.setFont(new java.awt.Font("Microsoft Sans Serif", 1, 11));
statusTitle.setText(java.util.ResourceBundle.getBundle("res/msg").getString("status_label"));
statusPanel.add(statusTitle, java.awt.BorderLayout.WEST);
statusFieldValue.setText(java.util.ResourceBundle.getBundle("res/msg").getString("status_stopped"));
statusPanel.add(statusFieldValue, java.awt.BorderLayout.CENTER);
infoPanel.add(statusPanel);
mainPanel.add(infoPanel);
getContentPane().add(mainPanel, java.awt.BorderLayout.CENTER);
commandPanel.setLayout(new java.awt.GridLayout(4, 0));
loadConf.setText(java.util.ResourceBundle.getBundle("res/msg").getString("conf_button_label"));
loadConf.addActionListener(new java.awt.event.ActionListener()
{
public void actionPerformed(java.awt.event.ActionEvent evt)
{
loadConfActionPerformed(evt);
}
});
commandPanel.add(loadConf);
startServer.setText(java.util.ResourceBundle.getBundle("res/msg").getString("start_button_label"));
startServer.addActionListener(new java.awt.event.ActionListener()
{
public void actionPerformed(java.awt.event.ActionEvent evt)
{
startServerActionPerformed(evt);
}
});
commandPanel.add(startServer);
stopServer.setText(java.util.ResourceBundle.getBundle("res/msg").getString("stop_button_label"));
stopServer.setEnabled(false);
stopServer.addActionListener(new java.awt.event.ActionListener()
{
public void actionPerformed(java.awt.event.ActionEvent evt)
{
stopServerActionPerformed(evt);
}
});
commandPanel.add(stopServer);
getContentPane().add(commandPanel, java.awt.BorderLayout.EAST);
errorOptionalPanel.setLayout(new java.awt.BorderLayout());
getContentPane().add(errorOptionalPanel, java.awt.BorderLayout.SOUTH);
pack();
}
// </editor-fold>//GEN-END:initComponents
private void loadConfActionPerformed(java.awt.event.ActionEvent evt)//GEN-FIRST:event_loadConfActionPerformed
{//GEN-HEADEREND:event_loadConfActionPerformed
JFileChooser lConfFileChooser = new JFileChooser();
lConfFileChooser.setDialogTitle(ResourceBundle.getBundle("res/msg").getString("conf_selection_title"));
int lReturnVal = lConfFileChooser.showOpenDialog(this);
if(lReturnVal == JFileChooser.APPROVE_OPTION)
{
setConfigurationFile(lConfFileChooser.getSelectedFile().toString());
}
}//GEN-LAST:event_loadConfActionPerformed
private void stopServerActionPerformed(java.awt.event.ActionEvent evt)//GEN-FIRST:event_stopServerActionPerformed
{//GEN-HEADEREND:event_stopServerActionPerformed
stopServer();
}//GEN-LAST:event_stopServerActionPerformed
private void startServerActionPerformed(java.awt.event.ActionEvent evt)//GEN-FIRST:event_startServerActionPerformed
{//GEN-HEADEREND:event_startServerActionPerformed
startServer();
}//GEN-LAST:event_startServerActionPerformed
/**
* The manager main entry point.
* @param pArgs the command line arguments
*/
public static void main(String pArgs[])
{
try
{
//Setting the look and feel to the current system laf
UIManager.setLookAndFeel(UIManager.getSystemLookAndFeelClassName());
}
catch (Throwable pError)
{
System.err.println(pError.getMessage());
}
ServerMainGUI lGUI = new ServerMainGUI(null, true);
String lLDAP_SERVER_CONF = System.getenv("LDAP_SERVER_CONF");
if (lLDAP_SERVER_CONF != null)
lGUI.setConfigurationFile(lLDAP_SERVER_CONF);
if ( pArgs.length > 0 )
lGUI.setConfigurationFile(pArgs[0]);
lGUI.setVisible(true);
}
/**
* Stop the server when living the GUI manager
*/
public void dispose()
{
stopServer();
super.dispose();
}
// Variables declaration - do not modify//GEN-BEGIN:variables
private javax.swing.JPanel commandPanel;
private javax.swing.JLabel confFieldValue;
private javax.swing.JPanel confPanel;
private javax.swing.JLabel confTitle;
private javax.swing.JTextArea errorMessage;
private javax.swing.JPanel errorOptionalPanel;
private javax.swing.JScrollPane errorScrollPanel;
private javax.swing.JPanel infoPanel;
private javax.swing.JButton loadConf;
private javax.swing.JPanel mainPanel;
private javax.swing.JButton startServer;
private javax.swing.JLabel statusFieldValue;
private javax.swing.JPanel statusPanel;
private javax.swing.JLabel statusTitle;
private javax.swing.JButton stopServer;
// End of variables declaration//GEN-END:variables
}
Now you can make a symbolic link under windows with a target like this:
javaw -cp main.jar confFile.xml
or main.jar if the environment variable describe below has been defined.
This GUI can also been feed with LDAP_SERVER_CONF system environment variable.
Launching it without configuration file will create a new working dir with admin default password authentication : "secret"
This GUI is aimed to help non skilled users with apacheds server at deployment site.
If you think it is not interseting, just forget it.
Tony
--
This message is automatically generated by JIRA.
-
If you think it was sent incorrectly contact one of the administrators:
http://issues.apache.org/jira/secure/Administrators.jspa
-
For more information on JIRA, see:
http://www.atlassian.com/software/jira
[jira] Closed: (DIRSERVER-431) A new GUI to manage server
start/shutdown.
Posted by "Emmanuel Lecharny (JIRA)" <ji...@apache.org>.
[ https://issues.apache.org/jira/browse/DIRSERVER-431?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel ]
Emmanuel Lecharny closed DIRSERVER-431.
---------------------------------------
Closing all issues created in 2005 and before which are marked resolved
> A new GUI to manage server start/shutdown.
> ------------------------------------------
>
> Key: DIRSERVER-431
> URL: https://issues.apache.org/jira/browse/DIRSERVER-431
> Project: Directory ApacheDS
> Issue Type: New Feature
> Environment: Tested on XP SP2 with JDK 1.5
> Reporter: Tony Blanchard
> Assigned To: Alex Karasulu
> Priority: Minor
>
> Here are the changes made to build this new GUI.
> In server main,
> Project.properties :
> Change of this value "maven.javaapp.mainclass=org.apache.ldap.server.ServerMainGUI" to build an executable jar which launch the new GUI.
> Porject.xml :
> Adding in project block
> <build>
> <resources>
> <resource>
> <directory>${basedir}/src/main/java/res"</directory>
> <targetPath>res</targetPath>
> </resource>
> </resources>
> </build>
> under "main\java" folder :
> Adding a new folder named "res" with to files named "msg.properties" and "msg_fr_FR.properties".
> msg.properties :
> #ResourceBundle properties file
> default_conf_msg=default
> conf_label=Configuration file:
> conf_button_label=Configuration
> status_label=Status:
> start_button_label=Start
> stop_button_label=Stop
> status_started=Started
> status_stopped=Stopped
> status_loading_conf=Loading configuration...
> status_init_start_env=Initializing environment...
> status_init_start=Starting server...
> status_init_stop_env=Initializing stopping environment...
> status_init_stop=Stopping server...
> server_main_gui_title=LDAP server manager
> status_not_stopped=Was unable to stop !
> status_not_started=Was unable to start !
> conf_selection_title=Configuration file selection
> msg_fr_FR.properties:
> #ResourceBundle properties file
> default_conf_msg=Défaut
> conf_label=Fichier de configuration :
> conf_button_label=Configuration
> status_label=Status :
> start_button_label=Démarrage
> stop_button_label=Arrêt
> status_started=Démarré
> status_stopped=Arrêté
> status_loading_conf=Chargement de la configuration...
> status_init_start_env=Initialisation de l''environment...
> status_init_start=Démarrage du serveur...
> status_init_stop_env=Initialisation de l''environement d'arrêt...
> status_init_stop=Arrêt du serveur...
> server_main_gui_title=Gestion du serveur LDAP
> status_not_stopped=Arrêt impossible !
> status_not_started=Démarrage impossible !
> conf_selection_title=Configuration file selection
> Under the package "org.apache.ldap.server" :
> Addition of the class "org.apache.ldap.server.ServerMainGUI"
> /*
> * ServerMainGUI.java
> *
> * Created on 7 juillet 2005, 15:56
> */
> package org.apache.ldap.server;
> import java.util.Properties;
> import java.util.ResourceBundle;
> import javax.naming.Context;
> import javax.naming.NamingException;
> import javax.naming.directory.InitialDirContext;
> import javax.swing.UIManager;
> import javax.swing.UnsupportedLookAndFeelException;
> import javax.swing.JFileChooser;
> import java.awt.Dimension;
> import java.awt.Insets;
> import java.io.PrintStream;
> import java.io.ByteArrayOutputStream;
> import org.apache.ldap.server.configuration.MutableServerStartupConfiguration;
> import org.apache.ldap.server.configuration.ShutdownConfiguration;
> import org.apache.ldap.server.configuration.ServerStartupConfiguration;
> import org.apache.ldap.server.jndi.ServerContextFactory;
> import org.springframework.context.ApplicationContext;
> import org.springframework.context.support.FileSystemXmlApplicationContext;
> /**
> * A box which enables to choose a server configuration file to start the server with.
> * It allows to start or stop the server as needed.
> * The main entry point of the application uses the "LDAP_SERVER_CONF" environment variable or
> * application argument to locate the configuration file else, default values are used to start
> * the server.
> * The command line argument is prioritary facing the system environment variable.
> * @author Tony Blanchard - 2005
> */
> public class ServerMainGUI extends javax.swing.JDialog
> {
> protected Properties env;
> protected ServerStartupConfiguration cfg;
> private boolean confFileProvided = false;
>
> /** Creates new form ServerMainGUI. */
> public ServerMainGUI(java.awt.Frame pParent, boolean pModal)
> {
> super(pParent, pModal);
> initComponents();
>
> //Default configuration for the first run and while admin password is default
> env = new Properties();
> env.put( "java.naming.security.authentication", "simple");
> env.put( Context.SECURITY_PRINCIPAL, "uid=admin,ou=system" );
> env.put( Context.SECURITY_CREDENTIALS, "secret" );
>
> cfg = new MutableServerStartupConfiguration();
>
> setLocationRelativeTo(pParent);
> setTitle(ResourceBundle.getBundle("res/msg").getString("server_main_gui_title"));
> }
>
> /**
> * Enlarge the box to show the user what's wrong with it.
> */
> protected void printError(Throwable pError)
> {
> errorOptionalPanel.add(errorScrollPanel);
> Insets lBoxInsets = this.getInsets();
> errorOptionalPanel.setPreferredSize(new Dimension(this.getWidth()- (lBoxInsets.left + lBoxInsets.right),200));
>
> //compute the stack trace...
> ByteArrayOutputStream lOutputStream = new ByteArrayOutputStream();
> pError.printStackTrace(new PrintStream(lOutputStream));
> errorMessage.append(lOutputStream.toString());
> errorMessage.append(" ---\n");
> pack();
> }
>
> /**
> * Changes the configuration file path to use to load LDAP configuration file.
> */
> public void setConfigurationFile(String pConfFilePath)
> {
> confFieldValue.setText(pConfFilePath);
> confFieldValue.setToolTipText(pConfFilePath);
> confFileProvided = true;
> }
>
> /**
> * Start button reaction.
> */
> protected void stopServer()
> {
> ResourceBundle lBundle = null;
> try//For the case where a shema is missing we could want to catch
> //ClassNotFoundException for instance
> {
> lBundle = ResourceBundle.getBundle("res/msg");
>
> //Initializing environment
> statusFieldValue.setText(lBundle.getString("status_init_stop_env"));
>
> env.putAll( new ShutdownConfiguration().toJndiEnvironment() );
>
> try
> {
> statusFieldValue.setText(lBundle.getString("status_init_stop"));
> InitialDirContext lDir= new InitialDirContext( env );
> env.clear();
> statusFieldValue.setText(lBundle.getString("status_stopped"));
> }
> catch (NamingException pError)
> {
> printError(pError);
> statusFieldValue.setText(lBundle.getString("status_not_stopped"));
> }
> finally
> {
> stopServer.setEnabled(false);
> startServer.setEnabled(true);
> }
> }
> catch (Throwable pError)
> {
> printError(pError);
> statusFieldValue.setText(lBundle.getString("status_not_stopped"));
> }
> }
>
> /**
> * Start button reaction.
> */
> protected void startServer()
> {
> ResourceBundle lBundle = null;
> try//For the case where a shema is missing we could want to catch
> //ClassNotFoundException for instance
> {
> lBundle = ResourceBundle.getBundle("res/msg");
>
> //Loading configuration or using the default one.
> if (confFileProvided)
> {
> statusFieldValue.setText(lBundle.getString("status_loading_conf"));
> ApplicationContext factory = new FileSystemXmlApplicationContext( confFieldValue.getText() );
> cfg = ( ServerStartupConfiguration ) factory.getBean( "configuration" );
> env = ( Properties ) factory.getBean( "environment" );
> }
>
> //Initializing environment
> statusFieldValue.setText(lBundle.getString("status_init_start_env"));
> env.setProperty( Context.PROVIDER_URL, "ou=system" );
> env.setProperty( Context.INITIAL_CONTEXT_FACTORY, ServerContextFactory.class.getName() );
> env.putAll( cfg.toJndiEnvironment() );
>
>
> try
> {
> statusFieldValue.setText(lBundle.getString("status_init_start"));
> //Starting server
> new InitialDirContext( env );
> statusFieldValue.setText(lBundle.getString("status_started"));
> }
> catch (NamingException pError)
> {
> printError(pError);
> statusFieldValue.setText(lBundle.getString("status_not_started"));
> }
> finally
> {
> stopServer.setEnabled(true);
> startServer.setEnabled(false);
> }
>
> }
> catch (Throwable pError)
> {
> printError(pError);
> statusFieldValue.setText(lBundle.getString("status_not_started"));
> }
> }
>
> /** This method is called from within the constructor to
> * initialize the form.
> * WARNING: Do NOT modify this code. The content of this method is
> * always regenerated by the Form Editor.
> */
> // <editor-fold defaultstate="collapsed" desc=" Generated Code ">//GEN-BEGIN:initComponents
> private void initComponents()
> {
> errorScrollPanel = new javax.swing.JScrollPane();
> errorMessage = new javax.swing.JTextArea();
> mainPanel = new javax.swing.JPanel();
> infoPanel = new javax.swing.JPanel();
> confPanel = new javax.swing.JPanel();
> confFieldValue = new javax.swing.JLabel();
> confTitle = new javax.swing.JLabel();
> statusPanel = new javax.swing.JPanel();
> statusTitle = new javax.swing.JLabel();
> statusFieldValue = new javax.swing.JLabel();
> commandPanel = new javax.swing.JPanel();
> loadConf = new javax.swing.JButton();
> startServer = new javax.swing.JButton();
> stopServer = new javax.swing.JButton();
> errorOptionalPanel = new javax.swing.JPanel();
> errorScrollPanel.setMaximumSize(new java.awt.Dimension(500, 200));
> errorMessage.setEditable(false);
> errorMessage.setFont(new java.awt.Font("Bitstream Vera Sans", 0, 10));
> errorMessage.setBorder(null);
> errorMessage.setMaximumSize(new java.awt.Dimension(500, 200));
> errorScrollPanel.setViewportView(errorMessage);
> setDefaultCloseOperation(javax.swing.WindowConstants.DISPOSE_ON_CLOSE);
> mainPanel.setLayout(new java.awt.GridLayout(2, 0));
> mainPanel.setPreferredSize(new java.awt.Dimension(400, 95));
> infoPanel.setLayout(new java.awt.GridLayout(2, 0, 0, 2));
> confPanel.setLayout(new java.awt.BorderLayout(4, 0));
> confFieldValue.setText(java.util.ResourceBundle.getBundle("res/msg").getString("default_conf_msg"));
> confPanel.add(confFieldValue, java.awt.BorderLayout.CENTER);
> confTitle.setFont(new java.awt.Font("Microsoft Sans Serif", 1, 11));
> confTitle.setText(java.util.ResourceBundle.getBundle("res/msg").getString("conf_label"));
> confPanel.add(confTitle, java.awt.BorderLayout.WEST);
> infoPanel.add(confPanel);
> statusPanel.setLayout(new java.awt.BorderLayout(4, 0));
> statusTitle.setFont(new java.awt.Font("Microsoft Sans Serif", 1, 11));
> statusTitle.setText(java.util.ResourceBundle.getBundle("res/msg").getString("status_label"));
> statusPanel.add(statusTitle, java.awt.BorderLayout.WEST);
> statusFieldValue.setText(java.util.ResourceBundle.getBundle("res/msg").getString("status_stopped"));
> statusPanel.add(statusFieldValue, java.awt.BorderLayout.CENTER);
> infoPanel.add(statusPanel);
> mainPanel.add(infoPanel);
> getContentPane().add(mainPanel, java.awt.BorderLayout.CENTER);
> commandPanel.setLayout(new java.awt.GridLayout(4, 0));
> loadConf.setText(java.util.ResourceBundle.getBundle("res/msg").getString("conf_button_label"));
> loadConf.addActionListener(new java.awt.event.ActionListener()
> {
> public void actionPerformed(java.awt.event.ActionEvent evt)
> {
> loadConfActionPerformed(evt);
> }
> });
> commandPanel.add(loadConf);
> startServer.setText(java.util.ResourceBundle.getBundle("res/msg").getString("start_button_label"));
> startServer.addActionListener(new java.awt.event.ActionListener()
> {
> public void actionPerformed(java.awt.event.ActionEvent evt)
> {
> startServerActionPerformed(evt);
> }
> });
> commandPanel.add(startServer);
> stopServer.setText(java.util.ResourceBundle.getBundle("res/msg").getString("stop_button_label"));
> stopServer.setEnabled(false);
> stopServer.addActionListener(new java.awt.event.ActionListener()
> {
> public void actionPerformed(java.awt.event.ActionEvent evt)
> {
> stopServerActionPerformed(evt);
> }
> });
> commandPanel.add(stopServer);
> getContentPane().add(commandPanel, java.awt.BorderLayout.EAST);
> errorOptionalPanel.setLayout(new java.awt.BorderLayout());
> getContentPane().add(errorOptionalPanel, java.awt.BorderLayout.SOUTH);
> pack();
> }
> // </editor-fold>//GEN-END:initComponents
>
> private void loadConfActionPerformed(java.awt.event.ActionEvent evt)//GEN-FIRST:event_loadConfActionPerformed
> {//GEN-HEADEREND:event_loadConfActionPerformed
> JFileChooser lConfFileChooser = new JFileChooser();
>
> lConfFileChooser.setDialogTitle(ResourceBundle.getBundle("res/msg").getString("conf_selection_title"));
> int lReturnVal = lConfFileChooser.showOpenDialog(this);
> if(lReturnVal == JFileChooser.APPROVE_OPTION)
> {
> setConfigurationFile(lConfFileChooser.getSelectedFile().toString());
> }
> }//GEN-LAST:event_loadConfActionPerformed
>
> private void stopServerActionPerformed(java.awt.event.ActionEvent evt)//GEN-FIRST:event_stopServerActionPerformed
> {//GEN-HEADEREND:event_stopServerActionPerformed
> stopServer();
> }//GEN-LAST:event_stopServerActionPerformed
>
> private void startServerActionPerformed(java.awt.event.ActionEvent evt)//GEN-FIRST:event_startServerActionPerformed
> {//GEN-HEADEREND:event_startServerActionPerformed
> startServer();
> }//GEN-LAST:event_startServerActionPerformed
>
> /**
> * The manager main entry point.
> * @param pArgs the command line arguments
> */
> public static void main(String pArgs[])
> {
> try
> {
> //Setting the look and feel to the current system laf
> UIManager.setLookAndFeel(UIManager.getSystemLookAndFeelClassName());
> }
> catch (Throwable pError)
> {
> System.err.println(pError.getMessage());
> }
>
> ServerMainGUI lGUI = new ServerMainGUI(null, true);
>
> String lLDAP_SERVER_CONF = System.getenv("LDAP_SERVER_CONF");
> if (lLDAP_SERVER_CONF != null)
> lGUI.setConfigurationFile(lLDAP_SERVER_CONF);
>
> if ( pArgs.length > 0 )
> lGUI.setConfigurationFile(pArgs[0]);
>
> lGUI.setVisible(true);
> }
>
> /**
> * Stop the server when living the GUI manager
> */
> public void dispose()
> {
> stopServer();
> super.dispose();
> }
>
>
> // Variables declaration - do not modify//GEN-BEGIN:variables
> private javax.swing.JPanel commandPanel;
> private javax.swing.JLabel confFieldValue;
> private javax.swing.JPanel confPanel;
> private javax.swing.JLabel confTitle;
> private javax.swing.JTextArea errorMessage;
> private javax.swing.JPanel errorOptionalPanel;
> private javax.swing.JScrollPane errorScrollPanel;
> private javax.swing.JPanel infoPanel;
> private javax.swing.JButton loadConf;
> private javax.swing.JPanel mainPanel;
> private javax.swing.JButton startServer;
> private javax.swing.JLabel statusFieldValue;
> private javax.swing.JPanel statusPanel;
> private javax.swing.JLabel statusTitle;
> private javax.swing.JButton stopServer;
> // End of variables declaration//GEN-END:variables
> }
> Now you can make a symbolic link under windows with a target like this:
> javaw -cp main.jar confFile.xml
> or main.jar if the environment variable describe below has been defined.
> This GUI can also been feed with LDAP_SERVER_CONF system environment variable.
> Launching it without configuration file will create a new working dir with admin default password authentication : "secret"
> This GUI is aimed to help non skilled users with apacheds server at deployment site.
> If you think it is not interseting, just forget it.
> Tony
--
This message is automatically generated by JIRA.
-
You can reply to this email to add a comment to the issue online.
[jira] Resolved: (DIREVE-182) A new GUI to manage server
start/shutdown.
Posted by "Alex Karasulu (JIRA)" <di...@incubator.apache.org>.
[ http://issues.apache.org/jira/browse/DIREVE-182?page=all ]
Alex Karasulu resolved DIREVE-182:
----------------------------------
Resolution: Won't Fix
we'll handle this later using commons daemon
> A new GUI to manage server start/shutdown.
> ------------------------------------------
>
> Key: DIREVE-182
> URL: http://issues.apache.org/jira/browse/DIREVE-182
> Project: Directory Server
> Type: New Feature
> Components: server main
> Environment: Tested on XP SP2 with JDK 1.5
> Reporter: Tony Blanchard
> Assignee: Alex Karasulu
> Priority: Minor
>
> Here are the changes made to build this new GUI.
> In server main,
> Project.properties :
> Change of this value "maven.javaapp.mainclass=org.apache.ldap.server.ServerMainGUI" to build an executable jar which launch the new GUI.
> Porject.xml :
> Adding in project block
> <build>
> <resources>
> <resource>
> <directory>${basedir}/src/main/java/res"</directory>
> <targetPath>res</targetPath>
> </resource>
> </resources>
> </build>
> under "main\java" folder :
> Adding a new folder named "res" with to files named "msg.properties" and "msg_fr_FR.properties".
> msg.properties :
> #ResourceBundle properties file
> default_conf_msg=default
> conf_label=Configuration file:
> conf_button_label=Configuration
> status_label=Status:
> start_button_label=Start
> stop_button_label=Stop
> status_started=Started
> status_stopped=Stopped
> status_loading_conf=Loading configuration...
> status_init_start_env=Initializing environment...
> status_init_start=Starting server...
> status_init_stop_env=Initializing stopping environment...
> status_init_stop=Stopping server...
> server_main_gui_title=LDAP server manager
> status_not_stopped=Was unable to stop !
> status_not_started=Was unable to start !
> conf_selection_title=Configuration file selection
> msg_fr_FR.properties:
> #ResourceBundle properties file
> default_conf_msg=Défaut
> conf_label=Fichier de configuration :
> conf_button_label=Configuration
> status_label=Status :
> start_button_label=Démarrage
> stop_button_label=Arrêt
> status_started=Démarré
> status_stopped=Arrêté
> status_loading_conf=Chargement de la configuration...
> status_init_start_env=Initialisation de l''environment...
> status_init_start=Démarrage du serveur...
> status_init_stop_env=Initialisation de l''environement d'arrêt...
> status_init_stop=Arrêt du serveur...
> server_main_gui_title=Gestion du serveur LDAP
> status_not_stopped=Arrêt impossible !
> status_not_started=Démarrage impossible !
> conf_selection_title=Configuration file selection
> Under the package "org.apache.ldap.server" :
> Addition of the class "org.apache.ldap.server.ServerMainGUI"
> /*
> * ServerMainGUI.java
> *
> * Created on 7 juillet 2005, 15:56
> */
> package org.apache.ldap.server;
> import java.util.Properties;
> import java.util.ResourceBundle;
> import javax.naming.Context;
> import javax.naming.NamingException;
> import javax.naming.directory.InitialDirContext;
> import javax.swing.UIManager;
> import javax.swing.UnsupportedLookAndFeelException;
> import javax.swing.JFileChooser;
> import java.awt.Dimension;
> import java.awt.Insets;
> import java.io.PrintStream;
> import java.io.ByteArrayOutputStream;
> import org.apache.ldap.server.configuration.MutableServerStartupConfiguration;
> import org.apache.ldap.server.configuration.ShutdownConfiguration;
> import org.apache.ldap.server.configuration.ServerStartupConfiguration;
> import org.apache.ldap.server.jndi.ServerContextFactory;
> import org.springframework.context.ApplicationContext;
> import org.springframework.context.support.FileSystemXmlApplicationContext;
> /**
> * A box which enables to choose a server configuration file to start the server with.
> * It allows to start or stop the server as needed.
> * The main entry point of the application uses the "LDAP_SERVER_CONF" environment variable or
> * application argument to locate the configuration file else, default values are used to start
> * the server.
> * The command line argument is prioritary facing the system environment variable.
> * @author Tony Blanchard - 2005
> */
> public class ServerMainGUI extends javax.swing.JDialog
> {
> protected Properties env;
> protected ServerStartupConfiguration cfg;
> private boolean confFileProvided = false;
>
> /** Creates new form ServerMainGUI. */
> public ServerMainGUI(java.awt.Frame pParent, boolean pModal)
> {
> super(pParent, pModal);
> initComponents();
>
> //Default configuration for the first run and while admin password is default
> env = new Properties();
> env.put( "java.naming.security.authentication", "simple");
> env.put( Context.SECURITY_PRINCIPAL, "uid=admin,ou=system" );
> env.put( Context.SECURITY_CREDENTIALS, "secret" );
>
> cfg = new MutableServerStartupConfiguration();
>
> setLocationRelativeTo(pParent);
> setTitle(ResourceBundle.getBundle("res/msg").getString("server_main_gui_title"));
> }
>
> /**
> * Enlarge the box to show the user what's wrong with it.
> */
> protected void printError(Throwable pError)
> {
> errorOptionalPanel.add(errorScrollPanel);
> Insets lBoxInsets = this.getInsets();
> errorOptionalPanel.setPreferredSize(new Dimension(this.getWidth()- (lBoxInsets.left + lBoxInsets.right),200));
>
> //compute the stack trace...
> ByteArrayOutputStream lOutputStream = new ByteArrayOutputStream();
> pError.printStackTrace(new PrintStream(lOutputStream));
> errorMessage.append(lOutputStream.toString());
> errorMessage.append(" ---\n");
> pack();
> }
>
> /**
> * Changes the configuration file path to use to load LDAP configuration file.
> */
> public void setConfigurationFile(String pConfFilePath)
> {
> confFieldValue.setText(pConfFilePath);
> confFieldValue.setToolTipText(pConfFilePath);
> confFileProvided = true;
> }
>
> /**
> * Start button reaction.
> */
> protected void stopServer()
> {
> ResourceBundle lBundle = null;
> try//For the case where a shema is missing we could want to catch
> //ClassNotFoundException for instance
> {
> lBundle = ResourceBundle.getBundle("res/msg");
>
> //Initializing environment
> statusFieldValue.setText(lBundle.getString("status_init_stop_env"));
>
> env.putAll( new ShutdownConfiguration().toJndiEnvironment() );
>
> try
> {
> statusFieldValue.setText(lBundle.getString("status_init_stop"));
> InitialDirContext lDir= new InitialDirContext( env );
> env.clear();
> statusFieldValue.setText(lBundle.getString("status_stopped"));
> }
> catch (NamingException pError)
> {
> printError(pError);
> statusFieldValue.setText(lBundle.getString("status_not_stopped"));
> }
> finally
> {
> stopServer.setEnabled(false);
> startServer.setEnabled(true);
> }
> }
> catch (Throwable pError)
> {
> printError(pError);
> statusFieldValue.setText(lBundle.getString("status_not_stopped"));
> }
> }
>
> /**
> * Start button reaction.
> */
> protected void startServer()
> {
> ResourceBundle lBundle = null;
> try//For the case where a shema is missing we could want to catch
> //ClassNotFoundException for instance
> {
> lBundle = ResourceBundle.getBundle("res/msg");
>
> //Loading configuration or using the default one.
> if (confFileProvided)
> {
> statusFieldValue.setText(lBundle.getString("status_loading_conf"));
> ApplicationContext factory = new FileSystemXmlApplicationContext( confFieldValue.getText() );
> cfg = ( ServerStartupConfiguration ) factory.getBean( "configuration" );
> env = ( Properties ) factory.getBean( "environment" );
> }
>
> //Initializing environment
> statusFieldValue.setText(lBundle.getString("status_init_start_env"));
> env.setProperty( Context.PROVIDER_URL, "ou=system" );
> env.setProperty( Context.INITIAL_CONTEXT_FACTORY, ServerContextFactory.class.getName() );
> env.putAll( cfg.toJndiEnvironment() );
>
>
> try
> {
> statusFieldValue.setText(lBundle.getString("status_init_start"));
> //Starting server
> new InitialDirContext( env );
> statusFieldValue.setText(lBundle.getString("status_started"));
> }
> catch (NamingException pError)
> {
> printError(pError);
> statusFieldValue.setText(lBundle.getString("status_not_started"));
> }
> finally
> {
> stopServer.setEnabled(true);
> startServer.setEnabled(false);
> }
>
> }
> catch (Throwable pError)
> {
> printError(pError);
> statusFieldValue.setText(lBundle.getString("status_not_started"));
> }
> }
>
> /** This method is called from within the constructor to
> * initialize the form.
> * WARNING: Do NOT modify this code. The content of this method is
> * always regenerated by the Form Editor.
> */
> // <editor-fold defaultstate="collapsed" desc=" Generated Code ">//GEN-BEGIN:initComponents
> private void initComponents()
> {
> errorScrollPanel = new javax.swing.JScrollPane();
> errorMessage = new javax.swing.JTextArea();
> mainPanel = new javax.swing.JPanel();
> infoPanel = new javax.swing.JPanel();
> confPanel = new javax.swing.JPanel();
> confFieldValue = new javax.swing.JLabel();
> confTitle = new javax.swing.JLabel();
> statusPanel = new javax.swing.JPanel();
> statusTitle = new javax.swing.JLabel();
> statusFieldValue = new javax.swing.JLabel();
> commandPanel = new javax.swing.JPanel();
> loadConf = new javax.swing.JButton();
> startServer = new javax.swing.JButton();
> stopServer = new javax.swing.JButton();
> errorOptionalPanel = new javax.swing.JPanel();
> errorScrollPanel.setMaximumSize(new java.awt.Dimension(500, 200));
> errorMessage.setEditable(false);
> errorMessage.setFont(new java.awt.Font("Bitstream Vera Sans", 0, 10));
> errorMessage.setBorder(null);
> errorMessage.setMaximumSize(new java.awt.Dimension(500, 200));
> errorScrollPanel.setViewportView(errorMessage);
> setDefaultCloseOperation(javax.swing.WindowConstants.DISPOSE_ON_CLOSE);
> mainPanel.setLayout(new java.awt.GridLayout(2, 0));
> mainPanel.setPreferredSize(new java.awt.Dimension(400, 95));
> infoPanel.setLayout(new java.awt.GridLayout(2, 0, 0, 2));
> confPanel.setLayout(new java.awt.BorderLayout(4, 0));
> confFieldValue.setText(java.util.ResourceBundle.getBundle("res/msg").getString("default_conf_msg"));
> confPanel.add(confFieldValue, java.awt.BorderLayout.CENTER);
> confTitle.setFont(new java.awt.Font("Microsoft Sans Serif", 1, 11));
> confTitle.setText(java.util.ResourceBundle.getBundle("res/msg").getString("conf_label"));
> confPanel.add(confTitle, java.awt.BorderLayout.WEST);
> infoPanel.add(confPanel);
> statusPanel.setLayout(new java.awt.BorderLayout(4, 0));
> statusTitle.setFont(new java.awt.Font("Microsoft Sans Serif", 1, 11));
> statusTitle.setText(java.util.ResourceBundle.getBundle("res/msg").getString("status_label"));
> statusPanel.add(statusTitle, java.awt.BorderLayout.WEST);
> statusFieldValue.setText(java.util.ResourceBundle.getBundle("res/msg").getString("status_stopped"));
> statusPanel.add(statusFieldValue, java.awt.BorderLayout.CENTER);
> infoPanel.add(statusPanel);
> mainPanel.add(infoPanel);
> getContentPane().add(mainPanel, java.awt.BorderLayout.CENTER);
> commandPanel.setLayout(new java.awt.GridLayout(4, 0));
> loadConf.setText(java.util.ResourceBundle.getBundle("res/msg").getString("conf_button_label"));
> loadConf.addActionListener(new java.awt.event.ActionListener()
> {
> public void actionPerformed(java.awt.event.ActionEvent evt)
> {
> loadConfActionPerformed(evt);
> }
> });
> commandPanel.add(loadConf);
> startServer.setText(java.util.ResourceBundle.getBundle("res/msg").getString("start_button_label"));
> startServer.addActionListener(new java.awt.event.ActionListener()
> {
> public void actionPerformed(java.awt.event.ActionEvent evt)
> {
> startServerActionPerformed(evt);
> }
> });
> commandPanel.add(startServer);
> stopServer.setText(java.util.ResourceBundle.getBundle("res/msg").getString("stop_button_label"));
> stopServer.setEnabled(false);
> stopServer.addActionListener(new java.awt.event.ActionListener()
> {
> public void actionPerformed(java.awt.event.ActionEvent evt)
> {
> stopServerActionPerformed(evt);
> }
> });
> commandPanel.add(stopServer);
> getContentPane().add(commandPanel, java.awt.BorderLayout.EAST);
> errorOptionalPanel.setLayout(new java.awt.BorderLayout());
> getContentPane().add(errorOptionalPanel, java.awt.BorderLayout.SOUTH);
> pack();
> }
> // </editor-fold>//GEN-END:initComponents
>
> private void loadConfActionPerformed(java.awt.event.ActionEvent evt)//GEN-FIRST:event_loadConfActionPerformed
> {//GEN-HEADEREND:event_loadConfActionPerformed
> JFileChooser lConfFileChooser = new JFileChooser();
>
> lConfFileChooser.setDialogTitle(ResourceBundle.getBundle("res/msg").getString("conf_selection_title"));
> int lReturnVal = lConfFileChooser.showOpenDialog(this);
> if(lReturnVal == JFileChooser.APPROVE_OPTION)
> {
> setConfigurationFile(lConfFileChooser.getSelectedFile().toString());
> }
> }//GEN-LAST:event_loadConfActionPerformed
>
> private void stopServerActionPerformed(java.awt.event.ActionEvent evt)//GEN-FIRST:event_stopServerActionPerformed
> {//GEN-HEADEREND:event_stopServerActionPerformed
> stopServer();
> }//GEN-LAST:event_stopServerActionPerformed
>
> private void startServerActionPerformed(java.awt.event.ActionEvent evt)//GEN-FIRST:event_startServerActionPerformed
> {//GEN-HEADEREND:event_startServerActionPerformed
> startServer();
> }//GEN-LAST:event_startServerActionPerformed
>
> /**
> * The manager main entry point.
> * @param pArgs the command line arguments
> */
> public static void main(String pArgs[])
> {
> try
> {
> //Setting the look and feel to the current system laf
> UIManager.setLookAndFeel(UIManager.getSystemLookAndFeelClassName());
> }
> catch (Throwable pError)
> {
> System.err.println(pError.getMessage());
> }
>
> ServerMainGUI lGUI = new ServerMainGUI(null, true);
>
> String lLDAP_SERVER_CONF = System.getenv("LDAP_SERVER_CONF");
> if (lLDAP_SERVER_CONF != null)
> lGUI.setConfigurationFile(lLDAP_SERVER_CONF);
>
> if ( pArgs.length > 0 )
> lGUI.setConfigurationFile(pArgs[0]);
>
> lGUI.setVisible(true);
> }
>
> /**
> * Stop the server when living the GUI manager
> */
> public void dispose()
> {
> stopServer();
> super.dispose();
> }
>
>
> // Variables declaration - do not modify//GEN-BEGIN:variables
> private javax.swing.JPanel commandPanel;
> private javax.swing.JLabel confFieldValue;
> private javax.swing.JPanel confPanel;
> private javax.swing.JLabel confTitle;
> private javax.swing.JTextArea errorMessage;
> private javax.swing.JPanel errorOptionalPanel;
> private javax.swing.JScrollPane errorScrollPanel;
> private javax.swing.JPanel infoPanel;
> private javax.swing.JButton loadConf;
> private javax.swing.JPanel mainPanel;
> private javax.swing.JButton startServer;
> private javax.swing.JLabel statusFieldValue;
> private javax.swing.JPanel statusPanel;
> private javax.swing.JLabel statusTitle;
> private javax.swing.JButton stopServer;
> // End of variables declaration//GEN-END:variables
> }
> Now you can make a symbolic link under windows with a target like this:
> javaw -cp main.jar confFile.xml
> or main.jar if the environment variable describe below has been defined.
> This GUI can also been feed with LDAP_SERVER_CONF system environment variable.
> Launching it without configuration file will create a new working dir with admin default password authentication : "secret"
> This GUI is aimed to help non skilled users with apacheds server at deployment site.
> If you think it is not interseting, just forget it.
> Tony
--
This message is automatically generated by JIRA.
-
If you think it was sent incorrectly contact one of the administrators:
http://issues.apache.org/jira/secure/Administrators.jspa
-
For more information on JIRA, see:
http://www.atlassian.com/software/jira