BundleActivator invalid [message #111551] |
Fri, 06 June 2008 00:10 |
Eclipse User |
|
|
|
Originally posted by: tavoaqp.gmail.com
This is a multi-part message in MIME format.
--------------090305050005080301070001
Content-Type: text/plain; charset=ISO-8859-1; format=flowed
Content-Transfer-Encoding: 7bit
Hi everybody
I'm working on a RAP project for which I have defined a BundleActivator
to load application-wide resources like object pooling for business objects.
I run the project inside Eclipse as an OSGi framework and it runs fine.
When I deploy it as a WAR in a Tomcat server and try to access the
application it says the entrypoint doesnt exists.
As far as I know, this error happens when something went wrong before
entering the entrypoint. Checking the logs from Tomcat I get the
following stack trace (part of it):
!SESSION 2008-06-05 20:40:13.980
-----------------------------------------------
eclipse.buildId=unknown
java.version=1.6.0_04
java.vendor=Sun Microsystems Inc.
BootLoader constants: OS=win32, ARCH=x86, WS=win32, NL=pt_BR
!ENTRY org.mytest.main 4 0 2008-06-05 20:40:13.980
!MESSAGE
!STACK 0
org.osgi.framework.BundleException: The activator
org.mytest.main.Activator for bundle org.mytest.main is invalid
at
org.eclipse.osgi.framework.internal.core.AbstractBundle.load BundleActivator(AbstractBundle.java:146)
at
org.eclipse.osgi.framework.internal.core.BundleContextImpl.s tart(BundleContextImpl.java:980)
at
org.eclipse.osgi.framework.internal.core.BundleHost.startWor ker(BundleHost.java:346)
at
org.eclipse.osgi.framework.internal.core.AbstractBundle.resu me(AbstractBundle.java:355)
......
at
org.eclipse.osgi.framework.eventmgr.EventManager$EventThread .run(EventManager.java:321)
Caused by: java.lang.ClassNotFoundException: org.mytest.main.Activator
at
org.eclipse.osgi.framework.internal.core.BundleLoader.findCl assInternal(BundleLoader.java:481)
Although the Activator implements BundleActivator it shows this error,
besides it ran as an OSGi framework in Eclipse.
Can anybody please give a hand with this??!! I'm really desperate.
Best Regards
Gustavo
--------------090305050005080301070001
Content-Type: text/plain;
name="stacktrace.txt"
Content-Transfer-Encoding: base64
Content-Disposition: inline;
filename="stacktrace.txt"
IVNFU1NJT04gMjAwOC0wNi0wNSAyMDo0MDoxMy45ODAgLS0tLS0tLS0tLS0t LS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0NCmVjbGlwc2UuYnVpbGRJZD11 bmtub3duDQpq
YXZhLnZlcnNpb249MS42LjBfMDQNCmphdmEudmVuZG9yPVN1biBNaWNyb3N5 c3RlbXMgSW5j
Lg0KQm9vdExvYWRlciBjb25zdGFudHM6IE9TPXdpbjMyLCBBUkNIPXg4Niwg V1M9d2luMzIs
IE5MPXB0X0JSDQoNCiFFTlRSWSBjb20uYmF5ZXNmb3JlY2FzdC53aXNlIDQg MCAyMDA4LTA2
LTA1IDIwOjQwOjEzLjk4MA0KIU1FU1NBR0UgDQohU1RBQ0sgMA0Kb3JnLm9z Z2kuZnJhbWV3
b3JrLkJ1bmRsZUV4Y2VwdGlvbjogVGhlIGFjdGl2YXRvciBvcmcubXl0ZXN0 Lm1haW4uQWN0
aXZhdG9yIGZvciBidW5kbGUgb3JnLm15dGVzdC5tYWluIGlzIGludmFsaWQN CglhdCBvcmcu
ZWNsaXBzZS5vc2dpLmZyYW1ld29yay5pbnRlcm5hbC5jb3JlLkFic3RyYWN0 QnVuZGxlLmxv
YWRCdW5kbGVBY3RpdmF0b3IoQWJzdHJhY3RCdW5kbGUuamF2YToxNDYpDQoJ YXQgb3JnLmVj
bGlwc2Uub3NnaS5mcmFtZXdvcmsuaW50ZXJuYWwuY29yZS5CdW5kbGVDb250 ZXh0SW1wbC5z
dGFydChCdW5kbGVDb250ZXh0SW1wbC5qYXZhOjk4MCkNCglhdCBvcmcuZWNs aXBzZS5vc2dp
LmZyYW1ld29yay5pbnRlcm5hbC5jb3JlLkJ1bmRsZUhvc3Quc3RhcnRXb3Jr ZXIoQnVuZGxl
SG9zdC5qYXZhOjM0NikNCglhdCBvcmcuZWNsaXBzZS5vc2dpLmZyYW1ld29y ay5pbnRlcm5h
bC5jb3JlLkFic3RyYWN0QnVuZGxlLnJlc3VtZShBYnN0cmFjdEJ1bmRsZS5q YXZhOjM1NSkN
CglhdCBvcmcuZWNsaXBzZS5vc2dpLmZyYW1ld29yay5pbnRlcm5hbC5jb3Jl LkZyYW1ld29y
ay5yZXN1bWVCdW5kbGUoRnJhbWV3b3JrLmphdmE6MTA3NCkNCglhdCBvcmcu ZWNsaXBzZS5v
c2dpLmZyYW1ld29yay5pbnRlcm5hbC5jb3JlLlN0YXJ0TGV2ZWxNYW5hZ2Vy LnJlc3VtZUJ1
bmRsZXMoU3RhcnRMZXZlbE1hbmFnZXIuamF2YTo2MTYpDQoJYXQgb3JnLmVj bGlwc2Uub3Nn
aS5mcmFtZXdvcmsuaW50ZXJuYWwuY29yZS5TdGFydExldmVsTWFuYWdlci5p bmNGV1NMKFN0
YXJ0TGV2ZWxNYW5hZ2VyLmphdmE6NTA4KQ0KCWF0IG9yZy5lY2xpcHNlLm9z Z2kuZnJhbWV3
b3JrLmludGVybmFsLmNvcmUuU3RhcnRMZXZlbE1hbmFnZXIuZG9TZXRTdGFy dExldmVsKFN0
YXJ0TGV2ZWxNYW5hZ2VyLmphdmE6Mjk5KQ0KCWF0IG9yZy5lY2xpcHNlLm9z Z2kuZnJhbWV3
b3JrLmludGVybmFsLmNvcmUuU3RhcnRMZXZlbE1hbmFnZXIuZGlzcGF0Y2hF dmVudChTdGFy
dExldmVsTWFuYWdlci5qYXZhOjQ4OSkNCglhdCBvcmcuZWNsaXBzZS5vc2dp LmZyYW1ld29y
ay5ldmVudG1nci5FdmVudE1hbmFnZXIuZGlzcGF0Y2hFdmVudChFdmVudE1h bmFnZXIuamF2
YToyMTEpDQoJYXQgb3JnLmVjbGlwc2Uub3NnaS5mcmFtZXdvcmsuZXZlbnRt Z3IuRXZlbnRN
YW5hZ2VyJEV2ZW50VGhyZWFkLnJ1bihFdmVudE1hbmFnZXIuamF2YTozMjEp DQpDYXVzZWQg
Ynk6IGphdmEubGFuZy5DbGFzc05vdEZvdW5kRXhjZXB0aW9uOiBvcmcubXl0 ZXN0Lm1haW4u
QWN0aXZhdG9yDQoJYXQgb3JnLmVjbGlwc2Uub3NnaS5mcmFtZXdvcmsuaW50 ZXJuYWwuY29y
ZS5CdW5kbGVMb2FkZXIuZmluZENsYXNzSW50ZXJuYWwoQnVuZGxlTG9hZGVy LmphdmE6NDgx
KQ0KCWF0IG9yZy5lY2xpcHNlLm9zZ2kuZnJhbWV3b3JrLmludGVybmFsLmNv cmUuQnVuZGxl
TG9hZGVyLmZpbmRDbGFzcyhCdW5kbGVMb2FkZXIuamF2YTozOTcpDQoJYXQg b3JnLmVjbGlw
c2Uub3NnaS5mcmFtZXdvcmsuaW50ZXJuYWwuY29yZS5CdW5kbGVMb2FkZXIu ZmluZENsYXNz
KEJ1bmRsZUxvYWRlci5qYXZhOjM4NSkNCglhdCBvcmcuZWNsaXBzZS5vc2dp LmludGVybmFs
LmJhc2VhZGFwdG9yLkRlZmF1bHRDbGFzc0xvYWRlci5sb2FkQ2xhc3MoRGVm YXVsdENsYXNz
TG9hZGVyLmphdmE6ODcpDQoJYXQgamF2YS5sYW5nLkNsYXNzTG9hZGVyLmxv YWRDbGFzcyhD
bGFzc0xvYWRlci5qYXZhOjI1MSkNCglhdCBvcmcuZWNsaXBzZS5vc2dpLmZy YW1ld29yay5p
bnRlcm5hbC5jb3JlLkJ1bmRsZUxvYWRlci5sb2FkQ2xhc3MoQnVuZGxlTG9h ZGVyLmphdmE6
MzEzKQ0KCWF0IG9yZy5lY2xpcHNlLm9zZ2kuZnJhbWV3b3JrLmludGVybmFs LmNvcmUuQnVu
ZGxlSG9zdC5sb2FkQ2xhc3MoQnVuZGxlSG9zdC5qYXZhOjIyNykNCglhdCBv cmcuZWNsaXBz
ZS5vc2dpLmZyYW1ld29yay5pbnRlcm5hbC5jb3JlLkFic3RyYWN0QnVuZGxl LmxvYWRCdW5k
bGVBY3RpdmF0b3IoQWJzdHJhY3RCdW5kbGUuamF2YToxMzkpDQoJLi4uIDEw IG1vcmUNClJv
b3QgZXhjZXB0aW9uOg0KamF2YS5sYW5nLkNsYXNzTm90Rm91bmRFeGNlcHRp b246IG9yZy5t
eXRlc3QubWFpbi5BY3RpdmF0b3INCglhdCBvcmcuZWNsaXBzZS5vc2dpLmZy YW1ld29yay5p
bnRlcm5hbC5jb3JlLkJ1bmRsZUxvYWRlci5maW5kQ2xhc3NJbnRlcm5hbChC dW5kbGVMb2Fk
ZXIuamF2YTo0ODEpDQoJYXQgb3JnLmVjbGlwc2Uub3NnaS5mcmFtZXdvcmsu aW50ZXJuYWwu
Y29yZS5CdW5kbGVMb2FkZXIuZmluZENsYXNzKEJ1bmRsZUxvYWRlci5qYXZh OjM5NykNCglh
dCBvcmcuZWNsaXBzZS5vc2dpLmZyYW1ld29yay5pbnRlcm5hbC5jb3JlLkJ1 bmRsZUxvYWRl
ci5maW5kQ2xhc3MoQnVuZGxlTG9hZGVyLmphdmE6Mzg1KQ0KCWF0IG9yZy5l Y2xpcHNlLm9z
Z2kuaW50ZXJuYWwuYmFzZWFkYXB0b3IuRGVmYXVsdENsYXNzTG9hZGVyLmxv YWRDbGFzcyhE
ZWZhdWx0Q2xhc3NMb2FkZXIuamF2YTo4NykNCglhdCBqYXZhLmxhbmcuQ2xh c3NMb2FkZXIu
bG9hZENsYXNzKENsYXNzTG9hZGVyLmphdmE6MjUxKQ0KCWF0IG9yZy5lY2xp cHNlLm9zZ2ku
ZnJhbWV3b3JrLmludGVybmFsLmNvcmUuQnVuZGxlTG9hZGVyLmxvYWRDbGFz cyhCdW5kbGVM
b2FkZXIuamF2YTozMTMpDQoJYXQgb3JnLmVjbGlwc2Uub3NnaS5mcmFtZXdv cmsuaW50ZXJu
YWwuY29yZS5CdW5kbGVIb3N0LmxvYWRDbGFzcyhCdW5kbGVIb3N0LmphdmE6 MjI3KQ0KCWF0
IG9yZy5lY2xpcHNlLm9zZ2kuZnJhbWV3b3JrLmludGVybmFsLmNvcmUuQWJz dHJhY3RCdW5k
bGUubG9hZEJ1bmRsZUFjdGl2YXRvcihBYnN0cmFjdEJ1bmRsZS5qYXZhOjEz OSkNCglhdCBv
cmcuZWNsaXBzZS5vc2dpLmZyYW1ld29yay5pbnRlcm5hbC5jb3JlLkJ1bmRs ZUNvbnRleHRJ
bXBsLnN0YXJ0KEJ1bmRsZUNvbnRleHRJbXBsLmphdmE6OTgwKQ0KCWF0IG9y Zy5lY2xpcHNl
Lm9zZ2kuZnJhbWV3b3JrLmludGVybmFsLmNvcmUuQnVuZGxlSG9zdC5zdGFy dFdvcmtlcihC
dW5kbGVIb3N0LmphdmE6MzQ2KQ0KCWF0IG9yZy5lY2xpcHNlLm9zZ2kuZnJh bWV3b3JrLmlu
dGVybmFsLmNvcmUuQWJzdHJhY3RCdW5kbGUucmVzdW1lKEFic3RyYWN0QnVu ZGxlLmphdmE6
MzU1KQ0KCWF0IG9yZy5lY2xpcHNlLm9zZ2kuZnJhbWV3b3JrLmludGVybmFs LmNvcmUuRnJh
bWV3b3JrLnJlc3VtZUJ1bmRsZShGcmFtZXdvcmsuamF2YToxMDc0KQ0KCWF0 IG9yZy5lY2xp
cHNlLm9zZ2kuZnJhbWV3b3JrLmludGVybmFsLmNvcmUuU3RhcnRMZXZlbE1h bmFnZXIucmVz
dW1lQnVuZGxlcyhTdGFydExldmVsTWFuYWdlci5qYXZhOjYxNikNCglhdCBv cmcuZWNsaXBz
ZS5vc2dpLmZyYW1ld29yay5pbnRlcm5hbC5jb3JlLlN0YXJ0TGV2ZWxNYW5h Z2VyLmluY0ZX
U0woU3RhcnRMZXZlbE1hbmFnZXIuamF2YTo1MDgpDQoJYXQgb3JnLmVjbGlw c2Uub3NnaS5m
cmFtZXdvcmsuaW50ZXJuYWwuY29yZS5TdGFydExldmVsTWFuYWdlci5kb1Nl dFN0YXJ0TGV2
ZWwoU3RhcnRMZXZlbE1hbmFnZXIuamF2YToyOTkpDQoJYXQgb3JnLmVjbGlw c2Uub3NnaS5m
cmFtZXdvcmsuaW50ZXJuYWwuY29yZS5TdGFydExldmVsTWFuYWdlci5kaXNw YXRjaEV2ZW50
KFN0YXJ0TGV2ZWxNYW5hZ2VyLmphdmE6NDg5KQ0KCWF0IG9yZy5lY2xpcHNl Lm9zZ2kuZnJh
bWV3b3JrLmV2ZW50bWdyLkV2ZW50TWFuYWdlci5kaXNwYXRjaEV2ZW50KEV2 ZW50TWFuYWdl
ci5qYXZhOjIxMSk=
--------------090305050005080301070001--
|
|
|
|
Re: BundleActivator invalid [message #111584 is a reply to message #111563] |
Fri, 06 June 2008 17:43 |
Eclipse User |
|
|
|
Originally posted by: tavoaqp.gmail.com
Hi Simon
I created my bundle using an ANT script available from project
org.eclipse.rap.demo.feature. The script runs fine too, I mean, it is
compiling all the required bundles.
Also, in Tomcat all the bundles are installed and active (except for
mine which is just RESOLVED).
My bundle serves as a framework for other bundles to create extension
points. I also created a second bundle that extends the first one
These two bundles are included in the WAR file too.
Within the Activator from the first bundle I check if the second bundle
defines a XML file and then I try to load it (this is an extension point).
When I debug that line inside a RAP Application Run Configuration, it
works fine, but when I test it inside an OSGi Framework Run
Configuration that line becomes a bug.
I'm using class FileLocator to find the XML file inside that second
bundle. I also tried Bundle.findEntries and nothing.
This a piece of my source code:
elements = reg .getConfigurationElementsFor("org.mytest.main.xmlsource");
String contributor = null;
if (elements.length > 0) {
contributor = elements[0].getContributor().getName();
sourceBundle = Platform.getBundle(contributor);
String xmlFileName = null;
// getting extensions for xmlsource
xmlFileName = elements[0].getAttribute("filename");
if (xmlFileName == null)
throw new RuntimeException(
"The XML file name is not specified");
else {
URL[] fileURL = FileLocator.findEntries(sourceBundle,
new Path(xmlFileName));
if (fileURL.length>0)
fileURL[0].openStream();
else
throw new RuntimeException(
"A strange problem happened: I can't open the
XML file!");
Just in case, the XML file is being included with the binary build in
the second bundle.
Hope you can help me.
Thanks.
Gustavo
Simon Kaegi escreveu:
> How did you create your bundle? Via "export" in the IDE or ...?
> You might want to crack open your bundle and make sure all of the various
> class files are where you expect.
>
> HTH
> -Simon
>
> "Gustavo" <tavoaqp@gmail.com> wrote in message
> news:g29vd3$2s2$1@build.eclipse.org...
>> Hi everybody
>> I'm working on a RAP project for which I have defined a BundleActivator
>> to load application-wide resources like object pooling for business
>> objects.
>> I run the project inside Eclipse as an OSGi framework and it runs fine.
>> When I deploy it as a WAR in a Tomcat server and try to access the
>> application it says the entrypoint doesnt exists.
>>
>> As far as I know, this error happens when something went wrong before
>> entering the entrypoint. Checking the logs from Tomcat I get the
>> following stack trace (part of it):
>>
>> !SESSION 2008-06-05 20:40:13.980
>> -----------------------------------------------
>> eclipse.buildId=unknown
>> java.version=1.6.0_04
>> java.vendor=Sun Microsystems Inc.
>> BootLoader constants: OS=win32, ARCH=x86, WS=win32, NL=pt_BR
>>
>> !ENTRY org.mytest.main 4 0 2008-06-05 20:40:13.980
>> !MESSAGE
>> !STACK 0
>> org.osgi.framework.BundleException: The activator
>> org.mytest.main.Activator for bundle org.mytest.main is invalid
>> at
>> org.eclipse.osgi.framework.internal.core.AbstractBundle.load BundleActivator(AbstractBundle.java:146)
>> at
>> org.eclipse.osgi.framework.internal.core.BundleContextImpl.s tart(BundleContextImpl.java:980)
>> at
>> org.eclipse.osgi.framework.internal.core.BundleHost.startWor ker(BundleHost.java:346)
>> at
>> org.eclipse.osgi.framework.internal.core.AbstractBundle.resu me(AbstractBundle.java:355)
>>
>> .....
>>
>> at
>> org.eclipse.osgi.framework.eventmgr.EventManager$EventThread .run(EventManager.java:321)
>> Caused by: java.lang.ClassNotFoundException: org.mytest.main.Activator
>> at
>> org.eclipse.osgi.framework.internal.core.BundleLoader.findCl assInternal(BundleLoader.java:481)
>>
>> Although the Activator implements BundleActivator it shows this error,
>> besides it ran as an OSGi framework in Eclipse.
>> Can anybody please give a hand with this??!! I'm really desperate.
>>
>> Best Regards
>> Gustavo
>>
>
>
> ------------------------------------------------------------ --------------------
>
>
>> !SESSION 2008-06-05
>> 20:40:13.980 -----------------------------------------------
>> eclipse.buildId=unknown
>> java.version=1.6.0_04
>> java.vendor=Sun Microsystems Inc.
>> BootLoader constants: OS=win32, ARCH=x86, WS=win32, NL=pt_BR
>>
>> !ENTRY com.bayesforecast.wise 4 0 2008-06-05 20:40:13.980
>> !MESSAGE
>> !STACK 0
>> org.osgi.framework.BundleException: The activator
>> org.mytest.main.Activator for bundle org.mytest.main is invalid
>> at
>> org.eclipse.osgi.framework.internal.core.AbstractBundle.load BundleActivator(AbstractBundle.java:146)
>> at
>> org.eclipse.osgi.framework.internal.core.BundleContextImpl.s tart(BundleContextImpl.java:980)
>> at
>> org.eclipse.osgi.framework.internal.core.BundleHost.startWor ker(BundleHost.java:346)
>> at
>> org.eclipse.osgi.framework.internal.core.AbstractBundle.resu me(AbstractBundle.java:355)
>> at
>> org.eclipse.osgi.framework.internal.core.Framework.resumeBun dle(Framework.java:1074)
>> at
>> org.eclipse.osgi.framework.internal.core.StartLevelManager.r esumeBundles(StartLevelManager.java:616)
>> at
>> org.eclipse.osgi.framework.internal.core.StartLevelManager.i ncFWSL(StartLevelManager.java:508)
>> at
>> org.eclipse.osgi.framework.internal.core.StartLevelManager.d oSetStartLevel(StartLevelManager.java:299)
>> at
>> org.eclipse.osgi.framework.internal.core.StartLevelManager.d ispatchEvent(StartLevelManager.java:489)
>> at
>> org.eclipse.osgi.framework.eventmgr.EventManager.dispatchEve nt(EventManager.java:211)
>> at
>> org.eclipse.osgi.framework.eventmgr.EventManager$EventThread .run(EventManager.java:321)
>> Caused by: java.lang.ClassNotFoundException: org.mytest.main.Activator
>> at
>> org.eclipse.osgi.framework.internal.core.BundleLoader.findCl assInternal(BundleLoader.java:481)
>> at
>> org.eclipse.osgi.framework.internal.core.BundleLoader.findCl ass(BundleLoader.java:397)
>> at
>> org.eclipse.osgi.framework.internal.core.BundleLoader.findCl ass(BundleLoader.java:385)
>> at
>> org.eclipse.osgi.internal.baseadaptor.DefaultClassLoader.loa dClass(DefaultClassLoader.java:87)
>> at java.lang.ClassLoader.loadClass(ClassLoader.java:251)
>> at
>> org.eclipse.osgi.framework.internal.core.BundleLoader.loadCl ass(BundleLoader.java:313)
>> at
>> org.eclipse.osgi.framework.internal.core.BundleHost.loadClas s(BundleHost.java:227)
>> at
>> org.eclipse.osgi.framework.internal.core.AbstractBundle.load BundleActivator(AbstractBundle.java:139)
>> ... 10 more
>> Root exception:
>> java.lang.ClassNotFoundException: org.mytest.main.Activator
>> at
>> org.eclipse.osgi.framework.internal.core.BundleLoader.findCl assInternal(BundleLoader.java:481)
>> at
>> org.eclipse.osgi.framework.internal.core.BundleLoader.findCl ass(BundleLoader.java:397)
>> at
>> org.eclipse.osgi.framework.internal.core.BundleLoader.findCl ass(BundleLoader.java:385)
>> at
>> org.eclipse.osgi.internal.baseadaptor.DefaultClassLoader.loa dClass(DefaultClassLoader.java:87)
>> at java.lang.ClassLoader.loadClass(ClassLoader.java:251)
>> at
>> org.eclipse.osgi.framework.internal.core.BundleLoader.loadCl ass(BundleLoader.java:313)
>> at
>> org.eclipse.osgi.framework.internal.core.BundleHost.loadClas s(BundleHost.java:227)
>> at
>> org.eclipse.osgi.framework.internal.core.AbstractBundle.load BundleActivator(AbstractBundle.java:139)
>> at
>> org.eclipse.osgi.framework.internal.core.BundleContextImpl.s tart(BundleContextImpl.java:980)
>> at
>> org.eclipse.osgi.framework.internal.core.BundleHost.startWor ker(BundleHost.java:346)
>> at
>> org.eclipse.osgi.framework.internal.core.AbstractBundle.resu me(AbstractBundle.java:355)
>> at
>> org.eclipse.osgi.framework.internal.core.Framework.resumeBun dle(Framework.java:1074)
>> at
>> org.eclipse.osgi.framework.internal.core.StartLevelManager.r esumeBundles(StartLevelManager.java:616)
>> at
>> org.eclipse.osgi.framework.internal.core.StartLevelManager.i ncFWSL(StartLevelManager.java:508)
>> at
>> org.eclipse.osgi.framework.internal.core.StartLevelManager.d oSetStartLevel(StartLevelManager.java:299)
>> at
>> org.eclipse.osgi.framework.internal.core.StartLevelManager.d ispatchEvent(StartLevelManager.java:489)
>> at
>> org.eclipse.osgi.framework.eventmgr.EventManager.dispatchEve nt(EventManager.java:211)
>
>
|
|
|
Powered by
FUDForum. Page generated in 0.02837 seconds