From discussion about startup
configuration of Corona client.
To follow the full discussion, read it from
the bottom.
From: Kaczmarek, Pawel
Sent: Friday, March 02, 2007
The client behaves very strange during
startup. Even if you run a JUnit test, the system tries to connect to server.
I though that the package o.e.c.container
is responsible for basic operations on container, however, the Activator tries
to establish remote connections.
From: O'Flynn, Dennis
Sent: Friday, March 02, 2007 2:21
PM
IMO: The issue about including the method
startClientEnvironment() and class ProjectContainerProxy in both client/server
distributions is not an issue.
We are only adding 20K to the server distribution. The value of
keeping code better organized by functionality is greater than the 20K
overhead.
From: Kaczmarek, Pawel
Sent: Friday, March 02, 2007 4:50
AM
startClientEnvironment() is called from
Activator of org.eclipse.corona.container, so the code goes also to the server
part. The method uses Corona.getInstance().getSystemURL() and it gets
localhost:3000 as connection destination.
I'm not sure, but the bug can be repaired
if startClientEnvironmnet is changed without any large refactoring. The client
always tries to connect to localhost, which is incorrect of course.
ProjectContainerProxy is in bundle
org.eclipse.corona.container.project, so it is included in the server part.
In fact nearly all client specific code is
in the plugin o.e.c.container.project.ui. It is a point of potential
refactorization to divide the plugin into two. There are also relatively small
and frozen plugins o.e.c.client.* that deal with event handling.
preferences.ini is used by the class Corona in bundle o.e.c,
so it configures the behavior of the whole application.
From: O'Flynn, Dennis
Sent: Thursday, March 01, 2007
5:01 PM
I am beginning to wonder if some of our problem
may be due to our “kick starting” bundles automatically.
From: Kaczmarek, Pawel
Sent: Thursday, March 01, 2007
9:00 AM
I think the client will always fail in
this configuration.
It seems that a larger refactoring is
necessary:
- the
method startClientEnvironment should be placed in client specific code and
use preferences setting that were made in Corona preferences
[O'Flynn, Dennis] startClientEnvironment() is already in
client specific code. It is only called if corona.type=client
dialog (probably
o.e.c.container.project.ui plugin)
- if
server URL is not set, no "fetch" is made.
- other
methods start(stop)ClientEnvironment should also be moved
[O'Flynn, Dennis] why? The service reference to the
container manager does need to be unregistered.
- ProjectContainerProxy
should be moved to a client plugin (the class does not fit to server
(common) part. In fact the class is referenced mainly in UI plugin.
[O'Flynn, Dennis] Why? It only is used IFF Corona is
used in a client environment. If it does get moved, where?
container.project.ui?
- ?
Do we need preferences.ini file?
[O'Flynn, Dennis] who uses it?
Pawel
From: O'Flynn, Dennis
Sent: Thursday, March 01, 2007
2:56 PM
The SystemContainer should be fetched as
soon as possible once a valid SystemURL is available.
We do have several scenarios that must be
handled:
- New
client that has not yet been
configured.
- Existing
client that has been configured, but the SystemURL is not valid or server not available
- Existing
client that has been configured and the SystemURL is valid and serer is
available.
Any ideas?
BTW – we (Joel / Jim / Glenn /
Dennis) are in a meeting from 9:00-10:00 AM EST.
From: O'Flynn, Dennis
Sent: Thursday, March 01, 2007
8:41 AM
I concur with Pawel’s find of org.eclipse.corona.container.Activator:startClientEnvironment()
* The intent of this code was to pre-fetch
the SystemContainer
* However, if the client has not been
properly configured, this will fail.
From: Kaczmarek, Pawel
Sent: Thursday, March 01, 2007
7:41 AM
It is probable that the method
startClientEnvironment in org.eclipse.corona.container.Activator is the reason
of the problem during startup. It does not, however, explain why Corona also fails if server configuration is changed in Corona preferences dialog.
The method is invoked when client
starts and it does something like this:
...
String server =
Corona.getInstance().getSystemURL();
ServiceConnectionParameters
scp = new ServiceConnectionParameters(server,
...
The "server" is set to: http://localhost:3000
Then the method tries to connect to
the server.
Corona.getInstance().getSystemURL()
returns systemURL that has been set in the constructor of Corona using plugin preferences.ini. In the
file, in turn, system.url is set to localhost. systemURL can not be set to
user-specific value, because ui plugins depend on corona plugin, so the later
is unaware of any ui setting that have been made.
From: Kalka, Edyta
Sent: Thursday, March 01, 2007
1:23 PM
Subject: Test results
Importance: High
First tested configuration:
-
server running on Pawel’s
machine, client running on my machine:
when trying to connect to server:
project container explorer shows exception thrown from listContainerUris
method; after detailed debugging such exception is found:
org.apache.axis2.AxisFault: no protocol:
/ContextContainer/services/ContextContainerManager; nested exception is:
java.net.MalformedURLException: no protocol:
/ContextContainer/services/ContextContainerManager; nested exception is:
org.apache.axis2.AxisFault: no protocol:
/ContextContainer/services/ContextContainerManager; nested exception is:
java.net.MalformedURLException: no protocol:
/ContextContainer/services/ContextContainerManager
-
small test configuration change:
starting server also on my machine; again starting client and connecting to
Pawel’s server:
project containers are listed, can
be opened etc. – in other words looks like working (but why my server is needed when connecting to
Pawel’s server ???)
Second tested configuration:
-
server is running on my machine,
client running on Pawel’s machine (no server on Pawel’s machine):
situation the same as in first
configuration meaning: project container explorer shows exception thrown from
listContainerUris method
-
after starting server on
Pawel’s machine:
his client can connect to my server,
project container are listed – works (but
question is similar as in first configuration)
Third “tested configuration”:
-
everything is set up the same as in first
configuration but I commented (removed) inside preferences.ini (from
org.eclipse.corona plugin) such line: system.url="">
now no matter if server is running
on my machine or not running – project container explorer shows exception
thrown from listContainerUris method when trying to connect to remote server
Fourth tested configuration:
-
server is running on my machine,
client is running on Piotr’s machine (but with modified client launch
configuration – Piotr added all corona plugins – both server and
client plugins to client launch config):
client connects to remote server,
project containers are listed etc. – works.
-
after changing Piotr’s client
launch configuration to theoreticaly “valid” one (with only client
plugins added - launch configurations tested: Corona WB Client, Corona WB
Client User_A with Jackrabbit only):
don’t work - project container
explorer shows exception thrown from listContainerUris method
Edyta