Author: jgallimore
Date: Tue Aug 12 16:48:22 2008
New Revision: 685378
URL: http://svn.apache.org/viewvc?rev=685378&view=rev
Log:
OPENEJB-887 added port configuration to wizard, and made this take effect in
the launch configuration. Also added the java agent, which was missing.
Removed:
openejb/trunk/sandbox/openejb-eclipse-plugin/plugins/org.eclipse.jst.server.generic.openejb/src/main/java/org/apache/openejb/eclipse/server/ServerComposite.java
Modified:
openejb/trunk/sandbox/openejb-eclipse-plugin/plugins/org.eclipse.jst.server.generic.openejb/src/main/java/org/apache/openejb/eclipse/server/OpenEJBRuntimeFragment.java
openejb/trunk/sandbox/openejb-eclipse-plugin/plugins/org.eclipse.jst.server.generic.openejb/src/main/java/org/apache/openejb/eclipse/server/OpenEJBServer.java
openejb/trunk/sandbox/openejb-eclipse-plugin/plugins/org.eclipse.jst.server.generic.openejb/src/main/java/org/apache/openejb/eclipse/server/OpenEJBServerBehaviour.java
openejb/trunk/sandbox/openejb-eclipse-plugin/plugins/org.eclipse.jst.server.generic.openejb/src/main/java/org/apache/openejb/eclipse/server/OpenEJBServerFragment.java
openejb/trunk/sandbox/openejb-eclipse-plugin/plugins/org.eclipse.jst.server.generic.openejb/src/main/java/org/apache/openejb/eclipse/server/ServerDeployer.java
Modified:
openejb/trunk/sandbox/openejb-eclipse-plugin/plugins/org.eclipse.jst.server.generic.openejb/src/main/java/org/apache/openejb/eclipse/server/OpenEJBRuntimeFragment.java
URL:
http://svn.apache.org/viewvc/openejb/trunk/sandbox/openejb-eclipse-plugin/plugins/org.eclipse.jst.server.generic.openejb/src/main/java/org/apache/openejb/eclipse/server/OpenEJBRuntimeFragment.java?rev=685378&r1=685377&r2=685378&view=diff
==============================================================================
---
openejb/trunk/sandbox/openejb-eclipse-plugin/plugins/org.eclipse.jst.server.generic.openejb/src/main/java/org/apache/openejb/eclipse/server/OpenEJBRuntimeFragment.java
(original)
+++
openejb/trunk/sandbox/openejb-eclipse-plugin/plugins/org.eclipse.jst.server.generic.openejb/src/main/java/org/apache/openejb/eclipse/server/OpenEJBRuntimeFragment.java
Tue Aug 12 16:48:22 2008
@@ -123,27 +123,11 @@
handle.setMessage("", IMessageProvider.NONE);
}
-
-
@Override
public boolean isComplete() {
IRuntimeWorkingCopy wc =
getRuntimeDelegate().getRuntimeWorkingCopy();
IStatus status = wc.validate(null);
return status == null || status.getSeverity() != IStatus.ERROR;
}
-
-
- @Override
- public void enter() {
-// validate();
- }
-
-
- @Override
- public void exit() {
-// validate();
- }
-
-
}
Modified:
openejb/trunk/sandbox/openejb-eclipse-plugin/plugins/org.eclipse.jst.server.generic.openejb/src/main/java/org/apache/openejb/eclipse/server/OpenEJBServer.java
URL:
http://svn.apache.org/viewvc/openejb/trunk/sandbox/openejb-eclipse-plugin/plugins/org.eclipse.jst.server.generic.openejb/src/main/java/org/apache/openejb/eclipse/server/OpenEJBServer.java?rev=685378&r1=685377&r2=685378&view=diff
==============================================================================
---
openejb/trunk/sandbox/openejb-eclipse-plugin/plugins/org.eclipse.jst.server.generic.openejb/src/main/java/org/apache/openejb/eclipse/server/OpenEJBServer.java
(original)
+++
openejb/trunk/sandbox/openejb-eclipse-plugin/plugins/org.eclipse.jst.server.generic.openejb/src/main/java/org/apache/openejb/eclipse/server/OpenEJBServer.java
Tue Aug 12 16:48:22 2008
@@ -24,12 +24,7 @@
import org.eclipse.core.runtime.Status;
import org.eclipse.jst.server.core.FacetUtil;
import org.eclipse.jst.server.core.IEnterpriseApplication;
-import org.eclipse.jst.server.core.IWebModule;
-import org.eclipse.jst.server.generic.core.internal.CorePlugin;
-import org.eclipse.jst.server.generic.servertype.definition.ServerRuntime;
import org.eclipse.wst.server.core.IModule;
-import org.eclipse.wst.server.core.IModuleType;
-import org.eclipse.wst.server.core.IServer;
import org.eclipse.wst.server.core.ServerUtil;
import org.eclipse.wst.server.core.model.ServerDelegate;
@@ -97,4 +92,52 @@
public void modifyModules(IModule[] add, IModule[] remove,
IProgressMonitor monitor) throws CoreException {
}
+ public void setEJBPort(String port) {
+ setAttribute("org.apache.openejb.eclipse.server.ejbport", port);
+ }
+
+ public String getEJBPort() {
+ return
getAttribute("org.apache.openejb.eclipse.server.ejbport", "4201");
+ }
+
+ public void setHTTPEJBPort(String port) {
+ setAttribute("org.apache.openejb.eclipse.server.httpejbport",
port);
+ }
+
+ public String getHTTPEJBPort() {
+ return
getAttribute("org.apache.openejb.eclipse.server.httpejbport", "4204");
+ }
+
+ public void setHSQLPort(String port) {
+ setAttribute("org.apache.openejb.eclipse.server.hsqlport",
port);
+ }
+
+ public String getHSQLPort() {
+ return
getAttribute("org.apache.openejb.eclipse.server.hsqlport", "9001");
+ }
+
+ public void setTelnetPort(String port) {
+ setAttribute("org.apache.openejb.eclipse.server.telnetport",
port);
+ }
+
+ public String getTelnetPort() {
+ return
getAttribute("org.apache.openejb.eclipse.server.telnetport", "4202");
+ }
+
+ public void setAdminPort(String port) {
+ setAttribute("org.apache.openejb.eclipse.server.adminport",
port);
+ }
+
+ public String getAdminPort() {
+ return
getAttribute("org.apache.openejb.eclipse.server.adminport", "4200");
+ }
+
+ public void setConfigFile(String configFile) {
+ setAttribute("org.apache.openejb.eclipse.server.configfile",
configFile);
+ }
+
+ public String getConfigFile() {
+ return
getAttribute("org.apache.openejb.eclipse.server.configfile", "");
+ }
+
}
Modified:
openejb/trunk/sandbox/openejb-eclipse-plugin/plugins/org.eclipse.jst.server.generic.openejb/src/main/java/org/apache/openejb/eclipse/server/OpenEJBServerBehaviour.java
URL:
http://svn.apache.org/viewvc/openejb/trunk/sandbox/openejb-eclipse-plugin/plugins/org.eclipse.jst.server.generic.openejb/src/main/java/org/apache/openejb/eclipse/server/OpenEJBServerBehaviour.java?rev=685378&r1=685377&r2=685378&view=diff
==============================================================================
---
openejb/trunk/sandbox/openejb-eclipse-plugin/plugins/org.eclipse.jst.server.generic.openejb/src/main/java/org/apache/openejb/eclipse/server/OpenEJBServerBehaviour.java
(original)
+++
openejb/trunk/sandbox/openejb-eclipse-plugin/plugins/org.eclipse.jst.server.generic.openejb/src/main/java/org/apache/openejb/eclipse/server/OpenEJBServerBehaviour.java
Tue Aug 12 16:48:22 2008
@@ -57,6 +57,7 @@
private static final int ONE_SECOND = 1000;
private boolean running = false;
+ private int adminPort = getAdminPort();
@Override
public void run() {
@@ -79,7 +80,7 @@
private void check() throws ServerStoppedException {
// connect to admin interface
try {
- Socket socket = new Socket("localhost", 4200);
+ Socket socket = new Socket("localhost",
adminPort);
socket.close();
// update the server status if this is first
time we've connected
@@ -114,6 +115,24 @@
private ServerMonitor monitor;
private Map<IModule, String> publishedModules = new HashMap<IModule,
String>();
+
+ private int getAdminPort() {
+ try {
+ OpenEJBServer openEJBServer = (OpenEJBServer)
(getServer().getAdapter(OpenEJBServer.class));
+ return Integer.parseInt(openEJBServer.getAdminPort());
+ } catch (NumberFormatException e) {
+ return 4200;
+ }
+ }
+
+ private int getEJBDPort() {
+ try {
+ OpenEJBServer openEJBServer = (OpenEJBServer)
(getServer().getAdapter(OpenEJBServer.class));
+ return Integer.parseInt(openEJBServer.getEJBPort());
+ } catch (NumberFormatException e) {
+ return 4201;
+ }
+ }
@Override
public void stop(boolean force) {
@@ -126,7 +145,7 @@
private void stopServer() {
// connect to admin interface, and send 'Q' to stop the server
try {
- Socket socket = new Socket("localhost", 4200);
+ Socket socket = new Socket("localhost", getAdminPort());
socket.getOutputStream().write('Q');
socket.close();
@@ -142,13 +161,24 @@
workingCopy.setAttribute(IJavaLaunchConfigurationConstants.ATTR_MAIN_TYPE_NAME,
"org.apache.openejb.cli.Bootstrap");
OpenEJBRuntimeDelegate runtime = getRuntimeDelegate();
-
+ OpenEJBServer openejbServer = (OpenEJBServer)
(getServer().getAdapter(OpenEJBServer.class));
+
IVMInstall vmInstall = runtime.getVMInstall();
if (vmInstall != null)
workingCopy.setAttribute(IJavaLaunchConfigurationConstants.ATTR_JRE_CONTAINER_PATH,
JavaRuntime.newJREContainerPath(vmInstall).toPortableString());
-
workingCopy.setAttribute(IJavaLaunchConfigurationConstants.ATTR_PROGRAM_ARGUMENTS,
"start");
-
workingCopy.setAttribute(IJavaLaunchConfigurationConstants.ATTR_VM_ARGUMENTS,
"-Dopenejb.home=" + getServer().getRuntime().getLocation().toString() /*+ "
-javaagent:" + runtime.getJavaAgent()*/);
+ String args = " start";
+ if (openejbServer.getConfigFile() != null &&
openejbServer.getConfigFile().length() > 0) {
+ args += " --conf=\"" + openejbServer.getConfigFile() +
"\"";
+ }
+
workingCopy.setAttribute(IJavaLaunchConfigurationConstants.ATTR_PROGRAM_ARGUMENTS,
args);
+
workingCopy.setAttribute(IJavaLaunchConfigurationConstants.ATTR_VM_ARGUMENTS,
"-Dejbd.port=" + openejbServer.getEJBPort() +
+ " -Dhttpejbd.port=" +
openejbServer.getHTTPEJBPort() +
+ " -Dhsql.port=" + openejbServer.getHSQLPort() +
+ " -Dtelnet.port=" +
openejbServer.getTelnetPort() +
+ " -Dadmin.port=" + openejbServer.getAdminPort()
+
+ " -Dopenejb.home=" +
getServer().getRuntime().getLocation().toString() +
+ " -javaagent:" + runtime.getJavaAgent());
List<IRuntimeClasspathEntry> cp = new
ArrayList<IRuntimeClasspathEntry>();
IPath serverJar = new Path(runtime.getCore());
@@ -201,12 +231,12 @@
}
private void doPublish(IModule module, int kind) {
- ServerDeployer serverDeployer = new
ServerDeployer(getRuntimeDelegate().getRuntime().getLocation().toFile().getAbsolutePath());
+ ServerDeployer serverDeployer = new
ServerDeployer(getRuntimeDelegate().getRuntime().getLocation().toFile().getAbsolutePath(),
getEJBDPort());
// if module already published, try an undeploy first, and
cleanup temp file
String jarFile = publishedModules.get(module);
if (jarFile != null) {
- boolean undeployed = serverDeployer.undeploy(jarFile);
+ serverDeployer.undeploy(jarFile);
new File(jarFile).delete();
publishedModules.remove(module);
}
Modified:
openejb/trunk/sandbox/openejb-eclipse-plugin/plugins/org.eclipse.jst.server.generic.openejb/src/main/java/org/apache/openejb/eclipse/server/OpenEJBServerFragment.java
URL:
http://svn.apache.org/viewvc/openejb/trunk/sandbox/openejb-eclipse-plugin/plugins/org.eclipse.jst.server.generic.openejb/src/main/java/org/apache/openejb/eclipse/server/OpenEJBServerFragment.java?rev=685378&r1=685377&r2=685378&view=diff
==============================================================================
---
openejb/trunk/sandbox/openejb-eclipse-plugin/plugins/org.eclipse.jst.server.generic.openejb/src/main/java/org/apache/openejb/eclipse/server/OpenEJBServerFragment.java
(original)
+++
openejb/trunk/sandbox/openejb-eclipse-plugin/plugins/org.eclipse.jst.server.generic.openejb/src/main/java/org/apache/openejb/eclipse/server/OpenEJBServerFragment.java
Tue Aug 12 16:48:22 2008
@@ -16,21 +16,132 @@
*/
package org.apache.openejb.eclipse.server;
+import java.io.File;
+import java.util.HashSet;
+import java.util.Set;
+
+import org.eclipse.core.runtime.CoreException;
+import org.eclipse.core.runtime.IProgressMonitor;
+import org.eclipse.core.runtime.NullProgressMonitor;
+import org.eclipse.jface.dialogs.IMessageProvider;
import org.eclipse.swt.SWT;
+import org.eclipse.swt.events.ModifyEvent;
+import org.eclipse.swt.events.ModifyListener;
+import org.eclipse.swt.events.SelectionAdapter;
+import org.eclipse.swt.events.SelectionEvent;
+import org.eclipse.swt.layout.GridLayout;
+import org.eclipse.swt.widgets.Button;
import org.eclipse.swt.widgets.Composite;
+import org.eclipse.swt.widgets.DirectoryDialog;
+import org.eclipse.swt.widgets.FileDialog;
+import org.eclipse.swt.widgets.Label;
+import org.eclipse.swt.widgets.Text;
+import org.eclipse.wst.server.core.IServerWorkingCopy;
+import org.eclipse.wst.server.core.TaskModel;
import org.eclipse.wst.server.ui.wizard.IWizardHandle;
import org.eclipse.wst.server.ui.wizard.WizardFragment;
-public class OpenEJBServerFragment extends WizardFragment {
+public class OpenEJBServerFragment extends WizardFragment implements
ModifyListener {
private IWizardHandle handle;
-
+ private Label portLabel;
+ private Text portText;
+ private Label httpEjbPortLabel;
+ private Text httpEjbPort;
+ private Label hsqlPortLabel;
+ private Text hsqlPort;
+ private Label telnetPortLabel;
+ private Text telnetPort;
+ private Label adminPortLabel;
+ private Text adminPort;
+ private Label configFileLabel;
+ private Text configFile;
+ private Button configFileBrowseButton;
+
@Override
public Composite createComposite(Composite parent, IWizardHandle
handle) {
+ OpenEJBServer server = getServer();
+
this.handle = handle;
handle.setTitle("OpenEJB Server");
handle.setImageDescriptor(Activator.getDefault().getImageDescriptor("RUNTIME"));
- ServerComposite serverComposite = new ServerComposite(parent,
SWT.NULL);
+ final Composite serverComposite = new Composite(parent,
SWT.NULL);
+
+ portLabel = new Label(serverComposite, SWT.NONE);
+
portLabel.setText(Messages.getString("org.apache.openejb.eclipse.server.ejbPort"));
+ portText = new Text(serverComposite, SWT.BORDER);
+ portText.addModifyListener(this);
+ Label filler5 = new Label(serverComposite, SWT.NONE);
+ httpEjbPortLabel = new Label(serverComposite, SWT.NONE);
+ httpEjbPortLabel.setText("HTTP EJB Port");
+ httpEjbPort = new Text(serverComposite, SWT.BORDER);
+ httpEjbPort.addModifyListener(this);
+ Label filler4 = new Label(serverComposite, SWT.NONE);
+ hsqlPortLabel = new Label(serverComposite, SWT.NONE);
+ hsqlPortLabel.setText("HSQL Port");
+ hsqlPort = new Text(serverComposite, SWT.BORDER);
+ hsqlPort.addModifyListener(this);
+ Label filler3 = new Label(serverComposite, SWT.NONE);
+ telnetPortLabel = new Label(serverComposite, SWT.NONE);
+ telnetPortLabel.setText("Telnet Port");
+ telnetPort = new Text(serverComposite, SWT.BORDER);
+ telnetPort.addModifyListener(this);
+ Label filler2 = new Label(serverComposite, SWT.NONE);
+ adminPortLabel = new Label(serverComposite, SWT.NONE);
+ adminPortLabel.setText("Admin Port");
+ adminPort = new Text(serverComposite, SWT.BORDER);
+ adminPort.addModifyListener(this);
+ Label filler1 = new Label(serverComposite, SWT.NONE);
+ configFileLabel = new Label(serverComposite, SWT.NONE);
+ configFileLabel.setText("Configuration file");
+ configFile = new Text(serverComposite, SWT.BORDER);
+ configFile.addModifyListener(this);
+ configFileBrowseButton = new Button(serverComposite, SWT.NONE);
+ configFileBrowseButton.setText("...");
+ configFileBrowseButton.addSelectionListener(new
SelectionAdapter() {
+
+ @Override
+ public void widgetSelected(SelectionEvent e) {
+ FileDialog dialog = new
FileDialog(serverComposite.getShell());
+ dialog.setFilterExtensions(new String[] {"*.xml", "*.*"});
+ dialog.setFilterNames(new String[] {"XML files", "All files"});
+ dialog.setText("Selection openejb.xml configuration file");
+ String selectedFile = dialog.open();
+ if (selectedFile != null)
+ configFile.setText(selectedFile);
+ }
+
+ });
+ GridLayout gridLayout = new GridLayout();
+ gridLayout.numColumns = 3;
+ serverComposite.setLayout(gridLayout);
+
+ String ejbPortNum = "4201";
+ String httpEjbPortNum = "4204";
+ String hsqlPortNum = "9001";
+ String telnetPortNum = "4202";
+ String adminPortNum = "4200";
+ String alternateConfigFile = "";
+
+ try {
+ ejbPortNum = server.getEJBPort();
+ httpEjbPortNum = server.getHTTPEJBPort();
+ hsqlPortNum = server.getHSQLPort();
+ telnetPortNum = server.getTelnetPort();
+ adminPortNum = server.getAdminPort();
+ alternateConfigFile = server.getConfigFile();
+ } catch (Exception e) {
+ }
+
+ portText.setText(ejbPortNum);
+ httpEjbPort.setText(httpEjbPortNum);
+ hsqlPort.setText(hsqlPortNum);
+ telnetPort.setText(telnetPortNum);
+ adminPort.setText(adminPortNum);
+ configFile.setText(alternateConfigFile);
+
+ validate();
+
return serverComposite;
}
@@ -40,7 +151,99 @@
}
@Override
+ public void performFinish(IProgressMonitor monitor) throws
CoreException {
+ super.performFinish(monitor);
+ }
+
+ private OpenEJBServer getServer() {
+ IServerWorkingCopy wc = (IServerWorkingCopy)
getTaskModel().getObject(TaskModel.TASK_SERVER);
+ if (wc == null) {
+ }
+
+ OpenEJBServer server = (OpenEJBServer)
wc.loadAdapter(OpenEJBServer.class, new NullProgressMonitor());
+ return server;
+ }
+
+ private void validate() {
+ if (configFile.getText() != null &&
configFile.getText().length() > 0) {
+ File config = new File(configFile.getText());
+ if (! config.exists()) {
+ handle.setMessage("Directory does not exist",
IMessageProvider.ERROR);
+ return;
+ }
+ }
+
+ String ejbdPortNum = portText.getText();
+ if (! checkPort(ejbdPortNum)) {
+ handle.setMessage("Invalid EJBD port",
IMessageProvider.ERROR);
+ return;
+ }
+
+
+ String httpEjbdPortNum = httpEjbPort.getText();
+ if (! checkPort(httpEjbdPortNum)) {
+ handle.setMessage("Invalid HTTP EJB port",
IMessageProvider.ERROR);
+ return;
+ }
+
+ String hsqlPortNum = hsqlPort.getText();
+ if (! checkPort(hsqlPortNum)) {
+ handle.setMessage("Invalid HSQL port",
IMessageProvider.ERROR);
+ return;
+ }
+
+ String telnetPortNum = telnetPort.getText();
+ if (! checkPort(telnetPortNum)) {
+ handle.setMessage("Invalid Telnet port",
IMessageProvider.ERROR);
+ return;
+ }
+
+ String adminPortNum = adminPort.getText();
+ if (! checkPort(adminPortNum)) {
+ handle.setMessage("Invalid Admin port",
IMessageProvider.ERROR);
+ return;
+ }
+
+ Set<String> ports = new HashSet<String>();
+ ports.add(ejbdPortNum);
+ ports.add(httpEjbdPortNum);
+ ports.add(hsqlPortNum);
+ ports.add(telnetPortNum);
+ ports.add(adminPortNum);
+
+ if (ports.size() != 5) {
+ handle.setMessage("Ports must be unique",
IMessageProvider.ERROR);
+ return;
+ }
+
+ OpenEJBServer server = getServer();
+ server.setEJBPort(portText.getText());
+ server.setHTTPEJBPort(httpEjbPort.getText());
+ server.setHSQLPort(hsqlPort.getText());
+ server.setTelnetPort(telnetPort.getText());
+ server.setAdminPort(adminPort.getText());
+ server.setConfigFile(configFile.getText());
+
+ handle.setMessage("", IMessageProvider.NONE);
+ }
+
+ private boolean checkPort(String portNum) {
+ try {
+ int port = Integer.parseInt(portNum);
+ return (port > 0 && port < 65535);
+ } catch (NumberFormatException e) {
+ return false;
+ }
+ }
+
+ public void modifyText(ModifyEvent e) {
+ validate();
+ }
+
+ @Override
public boolean isComplete() {
- return true;
+ return IMessageProvider.NONE == handle.getMessageType();
}
+
+
}
Modified:
openejb/trunk/sandbox/openejb-eclipse-plugin/plugins/org.eclipse.jst.server.generic.openejb/src/main/java/org/apache/openejb/eclipse/server/ServerDeployer.java
URL:
http://svn.apache.org/viewvc/openejb/trunk/sandbox/openejb-eclipse-plugin/plugins/org.eclipse.jst.server.generic.openejb/src/main/java/org/apache/openejb/eclipse/server/ServerDeployer.java?rev=685378&r1=685377&r2=685378&view=diff
==============================================================================
---
openejb/trunk/sandbox/openejb-eclipse-plugin/plugins/org.eclipse.jst.server.generic.openejb/src/main/java/org/apache/openejb/eclipse/server/ServerDeployer.java
(original)
+++
openejb/trunk/sandbox/openejb-eclipse-plugin/plugins/org.eclipse.jst.server.generic.openejb/src/main/java/org/apache/openejb/eclipse/server/ServerDeployer.java
Tue Aug 12 16:48:22 2008
@@ -33,10 +33,12 @@
public class ServerDeployer {
private String openejbDir;
+ private final int ejbdPort;
- public ServerDeployer(String openejbDir) {
+ public ServerDeployer(String openejbDir, int ejbdPort) {
super();
this.openejbDir = openejbDir;
+ this.ejbdPort = ejbdPort;
}
public String deploy(String filename) {
@@ -57,7 +59,7 @@
try {
Properties properties = new Properties();
properties.put(Context.INITIAL_CONTEXT_FACTORY,
"org.openejb.client.RemoteInitialContextFactory");
- properties.put(Context.PROVIDER_URL,
"ejbd://localhost:4201");
+ properties.put(Context.PROVIDER_URL,
"ejbd://localhost:" + ejbdPort);
URL[] urls = getUrls(openejbDir);
URLClassLoader cl = new URLClassLoader(urls,
classLoader);