April 12, 2009
After I recieved the email from Peter Liu who mentioned Tahereh’s working bug 244862, I take a quick look. I followed Davoud’s introduction to reproduce it. I catch several stack traces for the bug 244862 in different scenarios even though I don’t what we can do to fix the bug. Anyway I posted them so that other students may get some hints from the stack traces.
Stack Trace for creating a server
Stack trace for creating a server
Stack Trace for Starting a server without any Started server
Stack stack for starting a server when there no started server
Stack Trace for Starting a Server with a Started Server
Stack Trace for starting server, publishing the server is failed
Stack Trace for Deleting Server Project from Package Explore
Delete the server project from package explore
Stack Trace for Deleting Server from Server View
April 6, 2009
As I tried to investigate the bug 137822 which is related to the server configuration, I got some idea about how the server configuration works. Anyway I posted some of my findings so that some other students may get some help from my findings to fix some other server related bugs (there are still some server-related bugs need to be fixed in the bug list.).
After Clicking the “Run -> Run Configurations”, the following steps are invoked:
The configuration dialog is opened
The content of the configuration dialog is created and filled with all the controls and actions .
- Create the Viewer area with the event control and action
- Create the Edit area with the event control, created the tab, filled the server combo from the tomcat server list in the server view
- Initialize the values including the arguments in the tabs
- Display the Run Configurations Dialog and be ready to catch any event including mouse and key activities
- Catch the Double Click event/ New_configuration action/Selected Item Change event, fire the actions
- Create instances including wc with a unique name such as “New configuration(1)”, configuration dialog and the group tabs, initialize the tab content.
- write the new configuration information to a file and update launch manager with the new configuration.
- Display the updated configuration dialog
April 4, 2009
It’s very happy to know that my fellow Le fixed the bug 137822 based on my posting. see Le’s post.
Anyway, I list some important classes and methods which related to the bug and web server. Some other person who worked on the web server tool may get some help or hint from my investigation.
org.eclipse.debug.internal.ui.launchConfigurations is a important package in the plugin.
CreateLaunchConfigurationAction.performAction() — create wc with the unique name “New_Configuration(1)”,configuration dialog with all the tabs, set the default configuration for the dialog to be the new created wc .
(handler double click, display a tree of launch configurations that may select, and allow to create new configurations and delete, duplicate existing configuration)
LaunchConfigurationTabGroupViewer — create a viewer to display tabs for a launch configuration with Apply and Revert button.
- LaunchConfigurationDialog (line 423(create),1055(open))
create the launch configuration dialog
- .LaunchConfigurationDialog (line 543) — catch selectionEvent, then call handleConfigurationAdded()
(will get the server configuration “Tomcat 6.0”)
org.eclipse.wst.server.core.internal.Server.getLaunchConfiguration(bool,IProgress) — bool is true, will create a new server.
setLaunchConfiguration ILaunchConfigurationWorkingCopy workingCopy, IProgressMonitor monitor) (set the tomcat arguments for the VM and Program)
org.eclipse.debug.internal.core.LaunchManager.run() — catch Add, then launch fListener.launchConfigurationAdded(fConfiguration)
org.eclipse.swt.Display.runDerredEvents() –Always called by Display to get any event including selection, mousedown etc.
org.eclipse.jface.util.OpenStrategy.handlerEvent — catch all the event, mouseup,mousedown, etc. then call function
. Keydown may invoke fireOpenEvent(new SelectionEvent(e))
.Selection may invoke fireSelectionEvent(event); then may invoke firePostSelectionEvent(new SelectionEvent(e))
April 3, 2009
Today I add following code to the line 132 of org.eclipse..server.ui.ServerLaunchConfigurationTab(), then I am able to get the arguments and run the server without exception.
However, there are two Apach Servers created when I click the new once.
Because a new server instance will be created by using the name “Tomcat v6.0 Server at localhost” in the method server.getLauchConfiguration(true,null). So there is a problem to use server.getLauchConfiguration(true,null) to get the configuration.
April 2, 2009
I felt I was lost in the forest of the code when I try to use debug again and again. Anyway I write down I already knew on this blog to give a summary of my job. It may be easier to get a hint from somebody who stands out of the forest.
According to the suggestion from Larry Isaacs’s answer dated on March 16 of newsgroup( http://www.eclipse.org/newsportal/thread.php?group=eclipse.webtools&first=101&last=150 ). I copied the arguments from “Open launch configuration” link to the empty text area of “Run -> Run Configurations -> Apache Tomcat -> New -> Argument”, then click “Apply” button and “Run”, the server can run without any exception. Based on Larry’s suggestion and my investigation, there are four possible solutions about bug 137822:
1. When we new a tomcate server, the system set some default value for Program
and VM at the same time.
2. When we click the dropdown list and select one server, then click button
“apply”, the values are set at that time.
3. The system didn’t set values by using the above ways. When we click button
“run”, if the system can’t get any run time arguments, it just pop-ups a dialog
to say no available server rather than throwing a exception.
4. If the Program and VM arguments are empty, just disable the button “run”.
In order to investigate the bug, I found the related the class and method with the above solutions:
1.1 If “Run -> Run Configurations -> Apache Tomcat” is empty, then the method public void setDefaults(ILaunchConfigurationWorkingCopy configuration) of org.eclipse.wst.server.ui.ServerLaunchConfigurationTab.java will be invoked first.
Those line of code is supposed to get the first server from the server combox and set the default sever; however, at this point, no server is selected and no server configuration is set.
1.2 If “Run -> Run Configurations -> Apache Tomcat” is not empty, when click the a server, then method public void createControl(Composite parent) of org.eclipse.wst.server.ui.ServerLaunchConfigurationTab.java will be invoked. This method will created the server combox of Run configurations.
2. the apply button will invoke the method performApply() which in the package org.eclipse.wst.server.ui.ServerLaunchConfigurationTab.
Based on Larry Isaacs’s suggestion (newsgroup dated on april 4), solution 3 and 4 only hidden the problem. So we should get rid of them.