Home » Eclipse Projects » Equinox » Rally Basic Equinox/Servlet Bridge Problem
| | | | |
Re: Really Basic Equinox/Servlet Bridge Problem [message #116300 is a reply to message #116244] |
Tue, 19 August 2008 17:32 ![Go to previous message Go to previous message](theme/Solstice/images/up.png) ![Go to next message Go to next message](theme/Solstice/images/down.png) |
Geoffry Roberts![Friend of Eclipse Friend](/donate/web-api/friends_decorator.php?email=geoff.roberts%40qinetiq-na.com) Messages: 71 Registered: July 2009 |
Member |
|
|
Simon,
I do appreciate the help thus far but things are not working. I have two
bridge setups, (1) in a stand alone Tomcat instance and another in my
workbench. Both yield a 404. In both, html, jsp, servlets, etc that
don't use the bridge work.
Standby, I'm going to dig in and see if I can figure it out.
Simon Kaegi wrote:
> Hi Geoffry,
> Everything looks alright to me except possibly the URL.
> Try:
> http://localhost:8080/bridge/helloworld and
> http://localhost:8080/bridge/helloworld.html
> --
> The BridgeServlet is just a front controller for the real work which is done
> in org.eclipse.equinox.http.servlet.internal.ProxyServlet.
> You might want to look at the service and processAlias methods if you're
> interested in understanding what's going on.
> My favorite places to set breakpoints are in the two register methods in
> HttpServiceImpl as well as the handleRequest call in
> ProxyServlet.processAlias.
> After seeing your servlets and resources registered and still having a tough
> time understanding what is (or isn't getting called) walk through
> ProxyServlet.service.
> HTH
> -Simon
> "Geoffry Roberts" <geoff.roberts@qinetiq-na.com> wrote in message
> news:2e2be73e673a9cb3760f59d1d51bb691$1@www.eclipse.org...
>> Geoffry Roberts wrote:
>>
>>> The "e" in locale was a typo in the posting. I have in fact the correct
>>> spelling in my browser.
>>
>>> Assuming I can get localhost spelled correctly, the correct URL for
>>> accessing a servlet via the bridge should be:
>>
>>> http://localhost/bridge/HelloWorldServlet
>>
>>> Correct? This would be logical, but I keep getting a 404. I am trying
>>> to determine if the bridge is doing something unexpected.
>>
>> I replied to myself here so I could include the config.ini and the our put
>> of osgi> ss.
>> I've been stepping through BridgeServlet and I don't see how another
>> servlet gets called from the service method.
>> config.ini:
>>
>> #Eclipse Runtime Configuration File
>> osgi.bundles=org.eclipse.equinox.common@2:start,
>> org.eclipse.update.configurator@start,
>> org.eclipse.equinox.http.servletbridge@start,
>> org.eclipse.equinox.http.registry@start
>> osgi.bundles.defaultStartLevel=4
>>
>>
>>
>> osgi> ss
>>
>> Framework is launched.
>>
>> id State Bundle
>> 0 ACTIVE org.eclipse.osgi_3.3.0.200704022148
>> Fragments=11
>> 1 ACTIVE org.eclipse.equinox.common_3.3.0.200704022148
>> 2 ACTIVE org.eclipse.update.configurator_3.2.100.v20070322
>> 3 ACTIVE org.eclipse.equinox.http.servletbridge_1.0.0.200704022148
>> 4 ACTIVE org.eclipse.equinox.http.registry_1.0.0.200704022148
>> 5 RESOLVED javax.servlet_2.4.0.200808151435
>> 9 ACTIVE org.eclipse.equinox.http.servlet_1.0.0.200704022148
>> 10 ACTIVE org.eclipse.equinox.registry_3.3.0.v20070318
>> 11 RESOLVED org.eclipse.equinox.servletbridge.extensionbundle_1.0.0
>> Master=0
>> 12 ACTIVE org.eclipse.osgi.services_3.1.100.200704022148
>> 15 ACTIVE sample.http_1.0.0
>>
|
|
|
Re: Really Basic Equinox/Servlet Bridge Problem [message #116305 is a reply to message #116300] |
Tue, 19 August 2008 18:11 ![Go to previous message Go to previous message](theme/Solstice/images/up.png) ![Go to next message Go to next message](theme/Solstice/images/down.png) |
Geoffry Roberts![Friend of Eclipse Friend](/donate/web-api/friends_decorator.php?email=geoff.roberts%40qinetiq-na.com) Messages: 71 Registered: July 2009 |
Member |
|
|
Geoffry Roberts wrote:
> Simon,
> I do appreciate the help thus far but things are not working. I have two
> bridge setups, (1) in a stand alone Tomcat instance and another in my
> workbench. Both yield a 404. In both, html, jsp, servlets, etc that
> don't use the bridge work.
> Standby, I'm going to dig in and see if I can figure it out.
Here's what I don't understand:
When I call: http://localhost:8080/bridge/helloworld.html
public class BridgeServlet...
...
protected void service...
if (req.getAttribute(INCLUDE_REQUEST_URI_ATTRIBUTE) == null) {
String pathInfo = req.getPathInfo();
// At this point, pathInfo = "/helloworld.html"
// Check ...
if (pathInfo == null && isExtensionMapping(req.getServletPath()))
req = new ExtensionMappingRequest(req);
if (enableFrameworkControls) {
if (pathInfo != null && pathInfo.startsWith("/sp_")) {
if (serviceFrameworkControls(req, resp)) {
return;
}
}
}
} else {...
...
// This is a call to a service method in
javax.servlet.http.HttpServlet
servletReference.service(req, resp);
...
I find nothing in this code's path of execution that can reach either
ProxyServlet or HttpServiceImpl much less how a servlet of mine would be
called.
> Simon Kaegi wrote:
>> Hi Geoffry,
>> Everything looks alright to me except possibly the URL.
>> Try:
>> http://localhost:8080/bridge/helloworld and
>> http://localhost:8080/bridge/helloworld.html
>> --
>> The BridgeServlet is just a front controller for the real work which is
done
>> in org.eclipse.equinox.http.servlet.internal.ProxyServlet.
>> You might want to look at the service and processAlias methods if you're
>> interested in understanding what's going on.
>> My favorite places to set breakpoints are in the two register methods in
>> HttpServiceImpl as well as the handleRequest call in
>> ProxyServlet.processAlias.
>> After seeing your servlets and resources registered and still having a
tough
>> time understanding what is (or isn't getting called) walk through
>> ProxyServlet.service.
>> HTH
>> -Simon
>> "Geoffry Roberts" <geoff.roberts@qinetiq-na.com> wrote in message
>> news:2e2be73e673a9cb3760f59d1d51bb691$1@www.eclipse.org...
>>> Geoffry Roberts wrote:
>>>
>>>> The "e" in locale was a typo in the posting. I have in fact the correct
>>>> spelling in my browser.
>>>
>>>> Assuming I can get localhost spelled correctly, the correct URL for
>>>> accessing a servlet via the bridge should be:
>>>
>>>> http://localhost/bridge/HelloWorldServlet
>>>
>>>> Correct? This would be logical, but I keep getting a 404. I am trying
>>>> to determine if the bridge is doing something unexpected.
>>>
>>> I replied to myself here so I could include the config.ini and the our put
>>> of osgi> ss.
>>> I've been stepping through BridgeServlet and I don't see how another
>>> servlet gets called from the service method.
>>> config.ini:
>>>
>>> #Eclipse Runtime Configuration File
>>> osgi.bundles=org.eclipse.equinox.common@2:start,
>>> org.eclipse.update.configurator@start,
>>> org.eclipse.equinox.http.servletbridge@start,
>>> org.eclipse.equinox.http.registry@start
>>> osgi.bundles.defaultStartLevel=4
>>>
>>>
>>>
>>> osgi> ss
>>>
>>> Framework is launched.
>>>
>>> id State Bundle
>>> 0 ACTIVE org.eclipse.osgi_3.3.0.200704022148
>>> Fragments=11
>>> 1 ACTIVE org.eclipse.equinox.common_3.3.0.200704022148
>>> 2 ACTIVE org.eclipse.update.configurator_3.2.100.v20070322
>>> 3 ACTIVE org.eclipse.equinox.http.servletbridge_1.0.0.200704022148
>>> 4 ACTIVE org.eclipse.equinox.http.registry_1.0.0.200704022148
>>> 5 RESOLVED javax.servlet_2.4.0.200808151435
>>> 9 ACTIVE org.eclipse.equinox.http.servlet_1.0.0.200704022148
>>> 10 ACTIVE org.eclipse.equinox.registry_3.3.0.v20070318
>>> 11 RESOLVED org.eclipse.equinox.servletbridge.extensionbundle_1.0.0
>>> Master=0
>>> 12 ACTIVE org.eclipse.osgi.services_3.1.100.200704022148
>>> 15 ACTIVE sample.http_1.0.0
>>>
|
|
|
Re: Really Basic Equinox/Servlet Bridge Problem [message #116310 is a reply to message #116305] |
Wed, 20 August 2008 01:11 ![Go to previous message Go to previous message](theme/Solstice/images/up.png) ![Go to next message Go to next message](theme/Solstice/images/down.png) |
Simon Kaegi![Friend of Eclipse Friend](/donate/web-api/friends_decorator.php?email=simon_kaegi%40ca.ibm.com) Messages: 381 Registered: July 2009 |
Senior Member |
|
|
I just noticed you hava a javax.servlet bundle in your install.
Remove it -- when running under the servletbridge the servlet api comes from
the app server.
HTH
-Simon
"Geoffry Roberts" <geoff.roberts@qinetiq-na.com> wrote in message
news:ae13973ec507d3dfb49c2fa6e3a7eaf8$1@www.eclipse.org...
> Geoffry Roberts wrote:
>
>> Simon,
>
>> I do appreciate the help thus far but things are not working. I have two
>> bridge setups, (1) in a stand alone Tomcat instance and another in my
>> workbench. Both yield a 404. In both, html, jsp, servlets, etc that
>> don't use the bridge work.
>
>> Standby, I'm going to dig in and see if I can figure it out.
>
> Here's what I don't understand:
>
> When I call: http://localhost:8080/bridge/helloworld.html
>
> public class BridgeServlet...
> ..
> protected void service...
> if (req.getAttribute(INCLUDE_REQUEST_URI_ATTRIBUTE) == null) {
> String pathInfo = req.getPathInfo();
>
> // At this point, pathInfo = "/helloworld.html"
>
> // Check ...
> if (pathInfo == null && isExtensionMapping(req.getServletPath()))
> req = new ExtensionMappingRequest(req);
> if (enableFrameworkControls) {
> if (pathInfo != null && pathInfo.startsWith("/sp_")) {
> if (serviceFrameworkControls(req, resp)) {
> return;
> }
> }
> }
> } else {...
> ...
> // This is a call to a service method in
> javax.servlet.http.HttpServlet
> servletReference.service(req, resp);
> ...
>
> I find nothing in this code's path of execution that can reach either
> ProxyServlet or HttpServiceImpl much less how a servlet of mine would be
> called.
>
>> Simon Kaegi wrote:
>
>>> Hi Geoffry,
>
>>> Everything looks alright to me except possibly the URL.
>
>>> Try:
>>> http://localhost:8080/bridge/helloworld and
>>> http://localhost:8080/bridge/helloworld.html
>
>>> --
>
>>> The BridgeServlet is just a front controller for the real work which is
> done
>>> in org.eclipse.equinox.http.servlet.internal.ProxyServlet.
>
>>> You might want to look at the service and processAlias methods if you're
>>> interested in understanding what's going on.
>
>>> My favorite places to set breakpoints are in the two register methods in
>>> HttpServiceImpl as well as the handleRequest call in
>>> ProxyServlet.processAlias.
>>> After seeing your servlets and resources registered and still having a
> tough
>>> time understanding what is (or isn't getting called) walk through
>>> ProxyServlet.service.
>
>>> HTH
>>> -Simon
>
>
>>> "Geoffry Roberts" <geoff.roberts@qinetiq-na.com> wrote in message
>>> news:2e2be73e673a9cb3760f59d1d51bb691$1@www.eclipse.org...
>>>> Geoffry Roberts wrote:
>>>>
>>>>> The "e" in locale was a typo in the posting. I have in fact the
>>>>> correct spelling in my browser.
>>>>
>>>>> Assuming I can get localhost spelled correctly, the correct URL for
>>>>> accessing a servlet via the bridge should be:
>>>>
>>>>> http://localhost/bridge/HelloWorldServlet
>>>>
>>>>> Correct? This would be logical, but I keep getting a 404. I am
>>>>> trying to determine if the bridge is doing something unexpected.
>>>>
>>>> I replied to myself here so I could include the config.ini and the our
>>>> put of osgi> ss.
>>>> I've been stepping through BridgeServlet and I don't see how another
>>>> servlet gets called from the service method.
>>>> config.ini:
>>>>
>>>> #Eclipse Runtime Configuration File
>>>> osgi.bundles=org.eclipse.equinox.common@2:start,
>>>> org.eclipse.update.configurator@start,
>>>> org.eclipse.equinox.http.servletbridge@start,
>>>> org.eclipse.equinox.http.registry@start
>>>> osgi.bundles.defaultStartLevel=4
>>>>
>>>>
>>>>
>>>> osgi> ss
>>>>
>>>> Framework is launched.
>>>>
>>>> id State Bundle
>>>> 0 ACTIVE org.eclipse.osgi_3.3.0.200704022148
>>>> Fragments=11
>>>> 1 ACTIVE org.eclipse.equinox.common_3.3.0.200704022148
>>>> 2 ACTIVE org.eclipse.update.configurator_3.2.100.v20070322
>>>> 3 ACTIVE org.eclipse.equinox.http.servletbridge_1.0.0.200704022148
>>>> 4 ACTIVE org.eclipse.equinox.http.registry_1.0.0.200704022148
>>>> 5 RESOLVED javax.servlet_2.4.0.200808151435
>>>> 9 ACTIVE org.eclipse.equinox.http.servlet_1.0.0.200704022148
>>>> 10 ACTIVE org.eclipse.equinox.registry_3.3.0.v20070318
>>>> 11 RESOLVED org.eclipse.equinox.servletbridge.extensionbundle_1.0.0
>>>> Master=0
>>>> 12 ACTIVE org.eclipse.osgi.services_3.1.100.200704022148
>>>> 15 ACTIVE sample.http_1.0.0
>>>>
>
>
|
|
|
Re: Really Basic Equinox/Servlet Bridge Problem [message #116338 is a reply to message #116310] |
Wed, 20 August 2008 16:40 ![Go to previous message Go to previous message](theme/Solstice/images/up.png) ![Go to next message Go to next message](theme/Solstice/images/down.png) |
Geoffry Roberts![Friend of Eclipse Friend](/donate/web-api/friends_decorator.php?email=geoff.roberts%40qinetiq-na.com) Messages: 71 Registered: July 2009 |
Member |
|
|
Simon,
Thank for you help so far. My persistence in this is driven by the fact
that I have an OSGi app that I would love to give web access to if I can
just get my head around the problem with this bridge.
Also, I must remind you of my efforts to step through the BridgeServlet as
I described in an earlier post. I set break points as you suggested and
they were never reached.
For right now, let's address this most basic of problems wrt helloworld.
You suggested removing javax.servlet, which I did with an osgi> uninstall
to no avail. I noticed javax.servlet in the equinox container seems to be
a part of the deployment of bridge.war.
To wit:
// Start a clean Tomcat 5.5.26, plain vanilla,
// like its right out of the box.
Aug 20, 2008 8:21:53 AM org.apache.catalina.core.AprLifecycleListener
lifecycleEvent
INFO: The Apache Tomcat Native library which allows optimal performance in
production environments was not found on the java.library.path: C:\Program
Files\Java\jdk1.6.0_04\bin;.;C:\WINDOWS\Sun\Java\bin;C:\WIND OWS\system32;C:\WINDOWS;C:\WINDOWS\system32;C:\WINDOWS;C:\WI NDOWS\System32\Wbem;C:\Program
Files\MySQL\MySQL Server 5.0\bin;C:\Program
Files\Subversion\bin;C:\ant\bin;C:\maven\bin;C:\Program
Files\Java\jdk1.6.0_04\bin;C:\Program
Files\ApacheSoftwareFoundation\Tomcat5.5.26\bin;C:\Program
Files\cvsnt;C:\Program Files\Common Files\GTK\2.0\bin;C:\Program
Files\QuickTime\QTSystem\;
Aug 20, 2008 8:21:53 AM org.apache.coyote.http11.Http11BaseProtocol init
INFO: Initializing Coyote HTTP/1.1 on http-8080
Aug 20, 2008 8:21:53 AM org.apache.catalina.startup.Catalina load
INFO: Initialization processed in 531 ms
Aug 20, 2008 8:21:53 AM org.apache.catalina.core.StandardService start
INFO: Starting service Catalina
Aug 20, 2008 8:21:53 AM org.apache.catalina.core.StandardEngine start
INFO: Starting Servlet Engine: Apache Tomcat/5.5.26
Aug 20, 2008 8:21:53 AM org.apache.catalina.core.StandardHost start
INFO: XML validation disabled
Aug 20, 2008 8:21:54 AM org.apache.coyote.http11.Http11BaseProtocol start
INFO: Starting Coyote HTTP/1.1 on http-8080
Aug 20, 2008 8:21:54 AM org.apache.jk.common.ChannelSocket init
INFO: JK: ajp13 listening on /0.0.0.0:8009
Aug 20, 2008 8:21:54 AM org.apache.jk.server.JkMain start
INFO: Jk running ID=0 time=0/15 config=null
Aug 20, 2008 8:21:54 AM org.apache.catalina.storeconfig.StoreLoader load
INFO: Find registry server-registry.xml at classpath resource
Aug 20, 2008 8:21:54 AM org.apache.catalina.startup.Catalina start
INFO: Server startup in 1047 ms
// Server started, everything works, lets drop bridge.war into the webapps
// directory.
Aug 20, 2008 8:23:14 AM org.apache.catalina.startup.HostConfig deployWAR
INFO: Deploying web application archive bridge.war
osgi> ss
Framework is launched.
id State Bundle
0 ACTIVE org.eclipse.osgi_3.3.0.200704022148
Fragments=11
1 ACTIVE org.eclipse.equinox.common_3.3.0.200704022148
2 ACTIVE org.eclipse.update.configurator_3.2.100.v20070322
3 ACTIVE
org.eclipse.equinox.http.servletbridge_1.0.0.200704022148
4 ACTIVE org.eclipse.equinox.http.registry_1.0.0.200704022148
9 ACTIVE org.eclipse.equinox.http.servlet_1.0.0.200704022148
10 ACTIVE org.eclipse.equinox.registry_3.3.0.v20070318
11 RESOLVED org.eclipse.equinox.servletbridge.extensionbundle_1.0.0
Master=0
12 RESOLVED org.eclipse.osgi.services_3.1.100.200704022148
15 RESOLVED sample.http.registry_1.0.0
16 ACTIVE sample.http_1.0.0
17 RESOLVED javax.servlet_2.4.0.200808151550
osgi>
// Notice javax.servlet is RESOLVED; I didn't put it there, and our
helloworld appears ready to go.
// Go to the browser
http://localhost:8080/bridge/sp_test
// Return
Servlet delegate registered -
org.eclipse.equinox.http.servlet.HttpServiceServlet
// So far so good.
// Now we try
http://localhost:8080/bridge/helloworld.html
// We get the dreaded 404
Simon Kaegi wrote:
> I just noticed you hava a javax.servlet bundle in your install.
> Remove it -- when running under the servletbridge the servlet api comes from
> the app server.
> HTH
> -Simon
> "Geoffry Roberts" <geoff.roberts@qinetiq-na.com> wrote in message
> news:ae13973ec507d3dfb49c2fa6e3a7eaf8$1@www.eclipse.org...
>> Geoffry Roberts wrote:
>>
>>> Simon,
>>
>>> I do appreciate the help thus far but things are not working. I have two
>>> bridge setups, (1) in a stand alone Tomcat instance and another in my
>>> workbench. Both yield a 404. In both, html, jsp, servlets, etc that
>>> don't use the bridge work.
>>
>>> Standby, I'm going to dig in and see if I can figure it out.
>>
>> Here's what I don't understand:
>>
>> When I call: http://localhost:8080/bridge/helloworld.html
>>
>> public class BridgeServlet...
>> ..
>> protected void service...
>> if (req.getAttribute(INCLUDE_REQUEST_URI_ATTRIBUTE) == null) {
>> String pathInfo = req.getPathInfo();
>>
>> // At this point, pathInfo = "/helloworld.html"
>>
>> // Check ...
>> if (pathInfo == null && isExtensionMapping(req.getServletPath()))
>> req = new ExtensionMappingRequest(req);
>> if (enableFrameworkControls) {
>> if (pathInfo != null && pathInfo.startsWith("/sp_")) {
>> if (serviceFrameworkControls(req, resp)) {
>> return;
>> }
>> }
>> }
>> } else {...
>> ...
>> // This is a call to a service method in
>> javax.servlet.http.HttpServlet
>> servletReference.service(req, resp);
>> ...
>>
>> I find nothing in this code's path of execution that can reach either
>> ProxyServlet or HttpServiceImpl much less how a servlet of mine would be
>> called.
>>
>>> Simon Kaegi wrote:
>>
>>>> Hi Geoffry,
>>
>>>> Everything looks alright to me except possibly the URL.
>>
>>>> Try:
>>>> http://localhost:8080/bridge/helloworld and
>>>> http://localhost:8080/bridge/helloworld.html
>>
>>>> --
>>
>>>> The BridgeServlet is just a front controller for the real work which is
>> done
>>>> in org.eclipse.equinox.http.servlet.internal.ProxyServlet.
>>
>>>> You might want to look at the service and processAlias methods if you're
>>>> interested in understanding what's going on.
>>
>>>> My favorite places to set breakpoints are in the two register methods in
>>>> HttpServiceImpl as well as the handleRequest call in
>>>> ProxyServlet.processAlias.
>>>> After seeing your servlets and resources registered and still having a
>> tough
>>>> time understanding what is (or isn't getting called) walk through
>>>> ProxyServlet.service.
>>
>>>> HTH
>>>> -Simon
>>
>>
>>>> "Geoffry Roberts" <geoff.roberts@qinetiq-na.com> wrote in message
>>>> news:2e2be73e673a9cb3760f59d1d51bb691$1@www.eclipse.org...
>>>>> Geoffry Roberts wrote:
>>>>>
>>>>>> The "e" in locale was a typo in the posting. I have in fact the
>>>>>> correct spelling in my browser.
>>>>>
>>>>>> Assuming I can get localhost spelled correctly, the correct URL for
>>>>>> accessing a servlet via the bridge should be:
>>>>>
>>>>>> http://localhost/bridge/HelloWorldServlet
>>>>>
>>>>>> Correct? This would be logical, but I keep getting a 404. I am
>>>>>> trying to determine if the bridge is doing something unexpected.
>>>>>
>>>>> I replied to myself here so I could include the config.ini and the our
>>>>> put of osgi> ss.
>>>>> I've been stepping through BridgeServlet and I don't see how another
>>>>> servlet gets called from the service method.
>>>>> config.ini:
>>>>>
>>>>> #Eclipse Runtime Configuration File
>>>>> osgi.bundles=org.eclipse.equinox.common@2:start,
>>>>> org.eclipse.update.configurator@start,
>>>>> org.eclipse.equinox.http.servletbridge@start,
>>>>> org.eclipse.equinox.http.registry@start
>>>>> osgi.bundles.defaultStartLevel=4
>>>>>
>>>>>
>>>>>
>>>>> osgi> ss
>>>>>
>>>>> Framework is launched.
>>>>>
>>>>> id State Bundle
>>>>> 0 ACTIVE org.eclipse.osgi_3.3.0.200704022148
>>>>> Fragments=11
>>>>> 1 ACTIVE org.eclipse.equinox.common_3.3.0.200704022148
>>>>> 2 ACTIVE org.eclipse.update.configurator_3.2.100.v20070322
>>>>> 3 ACTIVE org.eclipse.equinox.http.servletbridge_1.0.0.200704022148
>>>>> 4 ACTIVE org.eclipse.equinox.http.registry_1.0.0.200704022148
>>>>> 5 RESOLVED javax.servlet_2.4.0.200808151435
>>>>> 9 ACTIVE org.eclipse.equinox.http.servlet_1.0.0.200704022148
>>>>> 10 ACTIVE org.eclipse.equinox.registry_3.3.0.v20070318
>>>>> 11 RESOLVED org.eclipse.equinox.servletbridge.extensionbundle_1.0.0
>>>>> Master=0
>>>>> 12 ACTIVE org.eclipse.osgi.services_3.1.100.200704022148
>>>>> 15 ACTIVE sample.http_1.0.0
>>>>>
>>
>>
|
|
|
Re: Really Basic Equinox/Servlet Bridge Problem [message #116367 is a reply to message #116338] |
Thu, 21 August 2008 17:06 ![Go to previous message Go to previous message](theme/Solstice/images/up.png) ![Go to next message Go to next message](theme/Solstice/images/down.png) |
Simon Kaegi![Friend of Eclipse Friend](/donate/web-api/friends_decorator.php?email=simon_kaegi%40ca.ibm.com) Messages: 381 Registered: July 2009 |
Senior Member |
|
|
It's no problem, I don't mind helping at all especially in cases like this
where it's usually something simple.
I'm not sure where you're getting the WAR file but it should definitely not
contain a javax.servlet bundle.
This would lead to the sorts of problems you're seeing since the
http.registry bundle would not be able to see the Http Service provided by
the servlet bridge. OSGi will do some service filter to remove
incompatabilites and in this case different instances of the Servlet API
would do this.
Every Servlet API import should be wired to
org.eclipse.equinox.servletbridge.extensionbundle.
You can use the console to figure out how things are wired up running the
consoles "bundle" command.
e.g. bundle org.eclipse.osgi.services
or if you've used "ss" and know the bundle id -- bundle 7 -- or even -- b 7
HTH
-Simon
"Geoffry Roberts" <geoff.roberts@qinetiq-na.com> wrote in message
news:0c1801c94709fe3829b3abc3b7eb4903$1@www.eclipse.org...
> Simon,
>
> Thank for you help so far. My persistence in this is driven by the fact
> that I have an OSGi app that I would love to give web access to if I can
> just get my head around the problem with this bridge.
>
> Also, I must remind you of my efforts to step through the BridgeServlet as
> I described in an earlier post. I set break points as you suggested and
> they were never reached.
> For right now, let's address this most basic of problems wrt helloworld.
> You suggested removing javax.servlet, which I did with an osgi> uninstall
> to no avail. I noticed javax.servlet in the equinox container seems to be
> a part of the deployment of bridge.war.
>
> To wit:
>
> // Start a clean Tomcat 5.5.26, plain vanilla, // like its right out of
> the box.
>
> Aug 20, 2008 8:21:53 AM org.apache.catalina.core.AprLifecycleListener
> lifecycleEvent
> INFO: The Apache Tomcat Native library which allows optimal performance in
> production environments was not found on the java.library.path: C:\Program
> Files\Java\jdk1.6.0_04\bin;.;C:\WINDOWS\Sun\Java\bin;C:\WIND OWS\system32;C:\WINDOWS;C:\WINDOWS\system32;C:\WINDOWS;C:\WI NDOWS\System32\Wbem;C:\Program
> Files\MySQL\MySQL Server 5.0\bin;C:\Program
> Files\Subversion\bin;C:\ant\bin;C:\maven\bin;C:\Program
> Files\Java\jdk1.6.0_04\bin;C:\Program
> Files\ApacheSoftwareFoundation\Tomcat5.5.26\bin;C:\Program
> Files\cvsnt;C:\Program Files\Common Files\GTK\2.0\bin;C:\Program
> Files\QuickTime\QTSystem\;
> Aug 20, 2008 8:21:53 AM org.apache.coyote.http11.Http11BaseProtocol init
> INFO: Initializing Coyote HTTP/1.1 on http-8080
> Aug 20, 2008 8:21:53 AM org.apache.catalina.startup.Catalina load
> INFO: Initialization processed in 531 ms
> Aug 20, 2008 8:21:53 AM org.apache.catalina.core.StandardService start
> INFO: Starting service Catalina
> Aug 20, 2008 8:21:53 AM org.apache.catalina.core.StandardEngine start
> INFO: Starting Servlet Engine: Apache Tomcat/5.5.26
> Aug 20, 2008 8:21:53 AM org.apache.catalina.core.StandardHost start
> INFO: XML validation disabled
> Aug 20, 2008 8:21:54 AM org.apache.coyote.http11.Http11BaseProtocol start
> INFO: Starting Coyote HTTP/1.1 on http-8080
> Aug 20, 2008 8:21:54 AM org.apache.jk.common.ChannelSocket init
> INFO: JK: ajp13 listening on /0.0.0.0:8009
> Aug 20, 2008 8:21:54 AM org.apache.jk.server.JkMain start
> INFO: Jk running ID=0 time=0/15 config=null
> Aug 20, 2008 8:21:54 AM org.apache.catalina.storeconfig.StoreLoader load
> INFO: Find registry server-registry.xml at classpath resource
> Aug 20, 2008 8:21:54 AM org.apache.catalina.startup.Catalina start
> INFO: Server startup in 1047 ms
>
> // Server started, everything works, lets drop bridge.war into the webapps
> // directory.
>
> Aug 20, 2008 8:23:14 AM org.apache.catalina.startup.HostConfig deployWAR
> INFO: Deploying web application archive bridge.war
>
> osgi> ss
>
> Framework is launched.
>
> id State Bundle
> 0 ACTIVE org.eclipse.osgi_3.3.0.200704022148
> Fragments=11
> 1 ACTIVE org.eclipse.equinox.common_3.3.0.200704022148
> 2 ACTIVE org.eclipse.update.configurator_3.2.100.v20070322
> 3 ACTIVE
> org.eclipse.equinox.http.servletbridge_1.0.0.200704022148
> 4 ACTIVE org.eclipse.equinox.http.registry_1.0.0.200704022148
> 9 ACTIVE org.eclipse.equinox.http.servlet_1.0.0.200704022148
> 10 ACTIVE org.eclipse.equinox.registry_3.3.0.v20070318
> 11 RESOLVED
> org.eclipse.equinox.servletbridge.extensionbundle_1.0.0
> Master=0
> 12 RESOLVED org.eclipse.osgi.services_3.1.100.200704022148
> 15 RESOLVED sample.http.registry_1.0.0
> 16 ACTIVE sample.http_1.0.0
> 17 RESOLVED javax.servlet_2.4.0.200808151550
>
> osgi>
>
> // Notice javax.servlet is RESOLVED; I didn't put it there, and our
> helloworld appears ready to go.
>
> // Go to the browser
> http://localhost:8080/bridge/sp_test
>
> // Return
>
> Servlet delegate registered -
> org.eclipse.equinox.http.servlet.HttpServiceServlet
>
> // So far so good.
> // Now we try
>
> http://localhost:8080/bridge/helloworld.html
>
> // We get the dreaded 404
>
> Simon Kaegi wrote:
>
>> I just noticed you hava a javax.servlet bundle in your install.
>> Remove it -- when running under the servletbridge the servlet api comes
>> from the app server.
>
>> HTH
>> -Simon
>> "Geoffry Roberts" <geoff.roberts@qinetiq-na.com> wrote in message
>> news:ae13973ec507d3dfb49c2fa6e3a7eaf8$1@www.eclipse.org...
>>> Geoffry Roberts wrote:
>>>
>>>> Simon,
>>>
>>>> I do appreciate the help thus far but things are not working. I have
>>>> two bridge setups, (1) in a stand alone Tomcat instance and another in
>>>> my workbench. Both yield a 404. In both, html, jsp, servlets, etc
>>>> that don't use the bridge work.
>>>
>>>> Standby, I'm going to dig in and see if I can figure it out.
>>>
>>> Here's what I don't understand:
>>>
>>> When I call: http://localhost:8080/bridge/helloworld.html
>>>
>>> public class BridgeServlet...
>>> ..
>>> protected void service...
>>> if (req.getAttribute(INCLUDE_REQUEST_URI_ATTRIBUTE) == null) {
>>> String pathInfo = req.getPathInfo();
>>>
>>> // At this point, pathInfo = "/helloworld.html"
>>>
>>> // Check ...
>>> if (pathInfo == null && isExtensionMapping(req.getServletPath()))
>>> req = new ExtensionMappingRequest(req);
>>> if (enableFrameworkControls) {
>>> if (pathInfo != null && pathInfo.startsWith("/sp_")) {
>>> if (serviceFrameworkControls(req, resp)) {
>>> return;
>>> }
>>> }
>>> }
>>> } else {...
>>> ...
>>> // This is a call to a service method in
>>> javax.servlet.http.HttpServlet
>>> servletReference.service(req, resp);
>>> ...
>>>
>>> I find nothing in this code's path of execution that can reach either
>>> ProxyServlet or HttpServiceImpl much less how a servlet of mine would be
>>> called.
>>>
>>>> Simon Kaegi wrote:
>>>
>>>>> Hi Geoffry,
>>>
>>>>> Everything looks alright to me except possibly the URL.
>>>
>>>>> Try:
>>>>> http://localhost:8080/bridge/helloworld and
>>>>> http://localhost:8080/bridge/helloworld.html
>>>
>>>>> --
>>>
>>>>> The BridgeServlet is just a front controller for the real work which
>>>>> is
>>> done
>>>>> in org.eclipse.equinox.http.servlet.internal.ProxyServlet.
>>>
>>>>> You might want to look at the service and processAlias methods if
>>>>> you're interested in understanding what's going on.
>>>
>>>>> My favorite places to set breakpoints are in the two register methods
>>>>> in HttpServiceImpl as well as the handleRequest call in
>>>>> ProxyServlet.processAlias.
>>>>> After seeing your servlets and resources registered and still having a
>>> tough
>>>>> time understanding what is (or isn't getting called) walk through
>>>>> ProxyServlet.service.
>>>
>>>>> HTH
>>>>> -Simon
>>>
>>>
>>>>> "Geoffry Roberts" <geoff.roberts@qinetiq-na.com> wrote in message
>>>>> news:2e2be73e673a9cb3760f59d1d51bb691$1@www.eclipse.org...
>>>>>> Geoffry Roberts wrote:
>>>>>>
>>>>>>> The "e" in locale was a typo in the posting. I have in fact the
>>>>>>> correct spelling in my browser.
>>>>>>
>>>>>>> Assuming I can get localhost spelled correctly, the correct URL for
>>>>>>> accessing a servlet via the bridge should be:
>>>>>>
>>>>>>> http://localhost/bridge/HelloWorldServlet
>>>>>>
>>>>>>> Correct? This would be logical, but I keep getting a 404. I am
>>>>>>> trying to determine if the bridge is doing something unexpected.
>>>>>>
>>>>>> I replied to myself here so I could include the config.ini and the
>>>>>> our put of osgi> ss.
>>>>>> I've been stepping through BridgeServlet and I don't see how another
>>>>>> servlet gets called from the service method.
>>>>>> config.ini:
>>>>>>
>>>>>> #Eclipse Runtime Configuration File
>>>>>> osgi.bundles=org.eclipse.equinox.common@2:start,
>>>>>> org.eclipse.update.configurator@start,
>>>>>> org.eclipse.equinox.http.servletbridge@start,
>>>>>> org.eclipse.equinox.http.registry@start
>>>>>> osgi.bundles.defaultStartLevel=4
>>>>>>
>>>>>>
>>>>>>
>>>>>> osgi> ss
>>>>>>
>>>>>> Framework is launched.
>>>>>>
>>>>>> id State Bundle
>>>>>> 0 ACTIVE org.eclipse.osgi_3.3.0.200704022148
>>>>>> Fragments=11
>>>>>> 1 ACTIVE org.eclipse.equinox.common_3.3.0.200704022148
>>>>>> 2 ACTIVE org.eclipse.update.configurator_3.2.100.v20070322
>>>>>> 3 ACTIVE
>>>>>> org.eclipse.equinox.http.servletbridge_1.0.0.200704022148
>>>>>> 4 ACTIVE org.eclipse.equinox.http.registry_1.0.0.200704022148
>>>>>> 5 RESOLVED javax.servlet_2.4.0.200808151435
>>>>>> 9 ACTIVE org.eclipse.equinox.http.servlet_1.0.0.200704022148
>>>>>> 10 ACTIVE org.eclipse.equinox.registry_3.3.0.v20070318
>>>>>> 11 RESOLVED
>>>>>> org.eclipse.equinox.servletbridge.extensionbundle_1.0.0
>>>>>> Master=0
>>>>>> 12 ACTIVE org.eclipse.osgi.services_3.1.100.200704022148
>>>>>> 15 ACTIVE sample.http_1.0.0
>>>>>>
>>>
>>>
>
>
|
|
|
Re: Really Basic Equinox/Servlet Bridge Problem [message #116371 is a reply to message #116367] |
Thu, 21 August 2008 20:43 ![Go to previous message Go to previous message](theme/Solstice/images/up.png) ![Go to next message Go to next message](theme/Solstice/images/down.png) |
Geoffry Roberts![Friend of Eclipse Friend](/donate/web-api/friends_decorator.php?email=geoff.roberts%40qinetiq-na.com) Messages: 71 Registered: July 2009 |
Member |
|
|
Simon,
My bridge.war file does not contain a javax.servlet bundle. When I drop
it into Tomcat's webapp directory and let it deploy, then do ss from the
osgi console, that's when I see the javax.servlet bundle. It lists as
resolved.
I downloaded my bridge.war from the web page:
Equinox in a Servlet Container/Quickstart
http://www.eclipse.org/equinox/server/http_in_container.php
Simon Kaegi wrote:
> It's no problem, I don't mind helping at all especially in cases like this
> where it's usually something simple.
> I'm not sure where you're getting the WAR file but it should definitely not
> contain a javax.servlet bundle.
> This would lead to the sorts of problems you're seeing since the
> http.registry bundle would not be able to see the Http Service provided by
> the servlet bridge. OSGi will do some service filter to remove
> incompatabilites and in this case different instances of the Servlet API
> would do this.
> Every Servlet API import should be wired to
> org.eclipse.equinox.servletbridge.extensionbundle.
> You can use the console to figure out how things are wired up running the
> consoles "bundle" command.
> e.g. bundle org.eclipse.osgi.services
> or if you've used "ss" and know the bundle id -- bundle 7 -- or even -- b 7
> HTH
> -Simon
> "Geoffry Roberts" <geoff.roberts@qinetiq-na.com> wrote in message
> news:0c1801c94709fe3829b3abc3b7eb4903$1@www.eclipse.org...
>> Simon,
>>
>> Thank for you help so far. My persistence in this is driven by the fact
>> that I have an OSGi app that I would love to give web access to if I can
>> just get my head around the problem with this bridge.
>>
>> Also, I must remind you of my efforts to step through the BridgeServlet as
>> I described in an earlier post. I set break points as you suggested and
>> they were never reached.
>> For right now, let's address this most basic of problems wrt helloworld.
>> You suggested removing javax.servlet, which I did with an osgi> uninstall
>> to no avail. I noticed javax.servlet in the equinox container seems to be
>> a part of the deployment of bridge.war.
>>
>> To wit:
>>
>> // Start a clean Tomcat 5.5.26, plain vanilla, // like its right out of
>> the box.
>>
>> Aug 20, 2008 8:21:53 AM org.apache.catalina.core.AprLifecycleListener
>> lifecycleEvent
>> INFO: The Apache Tomcat Native library which allows optimal performance in
>> production environments was not found on the java.library.path: C:Program
>>
FilesJavajdk1.6.0_04bin;.;C:WINDOWSSunJavabin;C:WINDOWSsyste m32;C:WINDOWS;C:WINDOWSsystem32;C:WINDOWS;C:WINDOWSSystem32W bem;C:Program
>> FilesMySQLMySQL Server 5.0bin;C:Program
>> FilesSubversionbin;C:antbin;C:mavenbin;C:Program
>> FilesJavajdk1.6.0_04bin;C:Program
>> FilesApacheSoftwareFoundationTomcat5.5.26bin;C:Program
>> Filescvsnt;C:Program FilesCommon FilesGTK2.0bin;C:Program
>> FilesQuickTimeQTSystem;
>> Aug 20, 2008 8:21:53 AM org.apache.coyote.http11.Http11BaseProtocol init
>> INFO: Initializing Coyote HTTP/1.1 on http-8080
>> Aug 20, 2008 8:21:53 AM org.apache.catalina.startup.Catalina load
>> INFO: Initialization processed in 531 ms
>> Aug 20, 2008 8:21:53 AM org.apache.catalina.core.StandardService start
>> INFO: Starting service Catalina
>> Aug 20, 2008 8:21:53 AM org.apache.catalina.core.StandardEngine start
>> INFO: Starting Servlet Engine: Apache Tomcat/5.5.26
>> Aug 20, 2008 8:21:53 AM org.apache.catalina.core.StandardHost start
>> INFO: XML validation disabled
>> Aug 20, 2008 8:21:54 AM org.apache.coyote.http11.Http11BaseProtocol start
>> INFO: Starting Coyote HTTP/1.1 on http-8080
>> Aug 20, 2008 8:21:54 AM org.apache.jk.common.ChannelSocket init
>> INFO: JK: ajp13 listening on /0.0.0.0:8009
>> Aug 20, 2008 8:21:54 AM org.apache.jk.server.JkMain start
>> INFO: Jk running ID=0 time=0/15 config=null
>> Aug 20, 2008 8:21:54 AM org.apache.catalina.storeconfig.StoreLoader load
>> INFO: Find registry server-registry.xml at classpath resource
>> Aug 20, 2008 8:21:54 AM org.apache.catalina.startup.Catalina start
>> INFO: Server startup in 1047 ms
>>
>> // Server started, everything works, lets drop bridge.war into the webapps
>> // directory.
>>
>> Aug 20, 2008 8:23:14 AM org.apache.catalina.startup.HostConfig deployWAR
>> INFO: Deploying web application archive bridge.war
>>
>> osgi> ss
>>
>> Framework is launched.
>>
>> id State Bundle
>> 0 ACTIVE org.eclipse.osgi_3.3.0.200704022148
>> Fragments=11
>> 1 ACTIVE org.eclipse.equinox.common_3.3.0.200704022148
>> 2 ACTIVE org.eclipse.update.configurator_3.2.100.v20070322
>> 3 ACTIVE
>> org.eclipse.equinox.http.servletbridge_1.0.0.200704022148
>> 4 ACTIVE org.eclipse.equinox.http.registry_1.0.0.200704022148
>> 9 ACTIVE org.eclipse.equinox.http.servlet_1.0.0.200704022148
>> 10 ACTIVE org.eclipse.equinox.registry_3.3.0.v20070318
>> 11 RESOLVED
>> org.eclipse.equinox.servletbridge.extensionbundle_1.0.0
>> Master=0
>> 12 RESOLVED org.eclipse.osgi.services_3.1.100.200704022148
>> 15 RESOLVED sample.http.registry_1.0.0
>> 16 ACTIVE sample.http_1.0.0
>> 17 RESOLVED javax.servlet_2.4.0.200808151550
>>
>> osgi>
>>
>> // Notice javax.servlet is RESOLVED; I didn't put it there, and our
>> helloworld appears ready to go.
>>
>> // Go to the browser
>> http://localhost:8080/bridge/sp_test
>>
>> // Return
>>
>> Servlet delegate registered -
>> org.eclipse.equinox.http.servlet.HttpServiceServlet
>>
>> // So far so good.
>> // Now we try
>>
>> http://localhost:8080/bridge/helloworld.html
>>
>> // We get the dreaded 404
>>
>> Simon Kaegi wrote:
>>
>>> I just noticed you hava a javax.servlet bundle in your install.
>>> Remove it -- when running under the servletbridge the servlet api comes
>>> from the app server.
>>
>>> HTH
>>> -Simon
>>> "Geoffry Roberts" <geoff.roberts@qinetiq-na.com> wrote in message
>>> news:ae13973ec507d3dfb49c2fa6e3a7eaf8$1@www.eclipse.org...
>>>> Geoffry Roberts wrote:
>>>>
>>>>> Simon,
>>>>
>>>>> I do appreciate the help thus far but things are not working. I have
>>>>> two bridge setups, (1) in a stand alone Tomcat instance and another in
>>>>> my workbench. Both yield a 404. In both, html, jsp, servlets, etc
>>>>> that don't use the bridge work.
>>>>
>>>>> Standby, I'm going to dig in and see if I can figure it out.
>>>>
>>>> Here's what I don't understand:
>>>>
>>>> When I call: http://localhost:8080/bridge/helloworld.html
>>>>
>>>> public class BridgeServlet...
>>>> ..
>>>> protected void service...
>>>> if (req.getAttribute(INCLUDE_REQUEST_URI_ATTRIBUTE) == null) {
>>>> String pathInfo = req.getPathInfo();
>>>>
>>>> // At this point, pathInfo = "/helloworld.html"
>>>>
>>>> // Check ...
>>>> if (pathInfo == null && isExtensionMapping(req.getServletPath()))
>>>> req = new ExtensionMappingRequest(req);
>>>> if (enableFrameworkControls) {
>>>> if (pathInfo != null && pathInfo.startsWith("/sp_")) {
>>>> if (serviceFrameworkControls(req, resp)) {
>>>> return;
>>>> }
>>>> }
>>>> }
>>>> } else {...
>>>> ...
>>>> // This is a call to a service method in
>>>> javax.servlet.http.HttpServlet
>>>> servletReference.service(req, resp);
>>>> ...
>>>>
>>>> I find nothing in this code's path of execution that can reach either
>>>> ProxyServlet or HttpServiceImpl much less how a servlet of mine would be
>>>> called.
>>>>
>>>>> Simon Kaegi wrote:
>>>>
>>>>>> Hi Geoffry,
>>>>
>>>>>> Everything looks alright to me except possibly the URL.
>>>>
>>>>>> Try:
>>>>>> http://localhost:8080/bridge/helloworld and
>>>>>> http://localhost:8080/bridge/helloworld.html
>>>>
>>>>>> --
>>>>
>>>>>> The BridgeServlet is just a front controller for the real work which
>>>>>> is
>>>> done
>>>>>> in org.eclipse.equinox.http.servlet.internal.ProxyServlet.
>>>>
>>>>>> You might want to look at the service and processAlias methods if
>>>>>> you're interested in understanding what's going on.
>>>>
>>>>>> My favorite places to set breakpoints are in the two register methods
>>>>>> in HttpServiceImpl as well as the handleRequest call in
>>>>>> ProxyServlet.processAlias.
>>>>>> After seeing your servlets and resources registered and still having a
>>>> tough
>>>>>> time understanding what is (or isn't getting called) walk through
>>>>>> ProxyServlet.service.
>>>>
>>>>>> HTH
>>>>>> -Simon
>>>>
>>>>
>>>>>> "Geoffry Roberts" <geoff.roberts@qinetiq-na.com> wrote in message
>>>>>> news:2e2be73e673a9cb3760f59d1d51bb691$1@www.eclipse.org...
>>>>>>> Geoffry Roberts wrote:
>>>>>>>
>>>>>>>> The "e" in locale was a typo in the posting. I have in fact the
>>>>>>>> correct spelling in my browser.
>>>>>>>
>>>>>>>> Assuming I can get localhost spelled correctly, the correct URL for
>>>>>>>> accessing a servlet via the bridge should be:
>>>>>>>
>>>>>>>> http://localhost/bridge/HelloWorldServlet
>>>>>>>
>>>>>>>> Correct? This would be logical, but I keep getting a 404. I am
>>>>>>>> trying to determine if the bridge is doing something unexpected.
>>>>>>>
>>>>>>> I replied to myself here so I could include the config.ini and the
>>>>>>> our put of osgi> ss.
>>>>>>> I've been stepping through BridgeServlet and I don't see how another
>>>>>>> servlet gets called from the service method.
>>>>>>> config.ini:
>>>>>>>
>>>>>>> #Eclipse Runtime Configuration File
>>>>>>> osgi.bundles=org.eclipse.equinox.common@2:start,
>>>>>>> org.eclipse.update.configurator@start,
>>>>>>> org.eclipse.equinox.http.servletbridge@start,
>>>>>>> org.eclipse.equinox.http.registry@start
>>>>>>> osgi.bundles.defaultStartLevel=4
>>>>>>>
>>>>>>>
>>>>>>>
>>>>>>> osgi> ss
>>>>>>>
>>>>>>> Framework is launched.
>>>>>>>
>>>>>>> id State Bundle
>>>>>>> 0 ACTIVE org.eclipse.osgi_3.3.0.200704022148
>>>>>>> Fragments=11
>>>>>>> 1 ACTIVE org.eclipse.equinox.common_3.3.0.200704022148
>>>>>>> 2 ACTIVE org.eclipse.update.configurator_3.2.100.v20070322
>>>>>>> 3 ACTIVE
>>>>>>> org.eclipse.equinox.http.servletbridge_1.0.0.200704022148
>>>>>>> 4 ACTIVE org.eclipse.equinox.http.registry_1.0.0.200704022148
>>>>>>> 5 RESOLVED javax.servlet_2.4.0.200808151435
>>>>>>> 9 ACTIVE org.eclipse.equinox.http.servlet_1.0.0.200704022148
>>>>>>> 10 ACTIVE org.eclipse.equinox.registry_3.3.0.v20070318
>>>>>>> 11 RESOLVED
>>>>>>> org.eclipse.equinox.servletbridge.extensionbundle_1.0.0
>>>>>>> Master=0
>>>>>>> 12 ACTIVE org.eclipse.osgi.services_3.1.100.200704022148
>>>>>>> 15 ACTIVE sample.http_1.0.0
>>>>>>>
>>>>
>>>>
>>
>>
|
|
|
Re: Really Basic Equinox/Servlet Bridge Problem [message #116376 is a reply to message #116371] |
Thu, 21 August 2008 21:08 ![Go to previous message Go to previous message](theme/Solstice/images/up.png) |
Geoffry Roberts![Friend of Eclipse Friend](/donate/web-api/friends_decorator.php?email=geoff.roberts%40qinetiq-na.com) Messages: 71 Registered: July 2009 |
Member |
|
|
Simon,
I would seem that Tomcat was holding on to javax.servlet in its work
directory. It's been a while since I've developed with Tomcat and I had
forgotten about it. I cleaned out work/ and javax.servlet appears no more.
Geoffry Roberts wrote:
> Simon,
> My bridge.war file does not contain a javax.servlet bundle. When I drop
> it into Tomcat's webapp directory and let it deploy, then do ss from the
> osgi console, that's when I see the javax.servlet bundle. It lists as
> resolved.
> I downloaded my bridge.war from the web page:
> Equinox in a Servlet Container/Quickstart
> http://www.eclipse.org/equinox/server/http_in_container.php
> Simon Kaegi wrote:
>> It's no problem, I don't mind helping at all especially in cases like this
>> where it's usually something simple.
>> I'm not sure where you're getting the WAR file but it should definitely not
>> contain a javax.servlet bundle.
>> This would lead to the sorts of problems you're seeing since the
>> http.registry bundle would not be able to see the Http Service provided by
>> the servlet bridge. OSGi will do some service filter to remove
>> incompatabilites and in this case different instances of the Servlet API
>> would do this.
>> Every Servlet API import should be wired to
>> org.eclipse.equinox.servletbridge.extensionbundle.
>> You can use the console to figure out how things are wired up running the
>> consoles "bundle" command.
>> e.g. bundle org.eclipse.osgi.services
>> or if you've used "ss" and know the bundle id -- bundle 7 -- or even -- b 7
>> HTH
>> -Simon
>> "Geoffry Roberts" <geoff.roberts@qinetiq-na.com> wrote in message
>> news:0c1801c94709fe3829b3abc3b7eb4903$1@www.eclipse.org...
>>> Simon,
>>>
>>> Thank for you help so far. My persistence in this is driven by the fact
>>> that I have an OSGi app that I would love to give web access to if I can
>>> just get my head around the problem with this bridge.
>>>
>>> Also, I must remind you of my efforts to step through the BridgeServlet as
>>> I described in an earlier post. I set break points as you suggested and
>>> they were never reached.
>>> For right now, let's address this most basic of problems wrt helloworld.
>>> You suggested removing javax.servlet, which I did with an osgi> uninstall
>>> to no avail. I noticed javax.servlet in the equinox container seems to be
>>> a part of the deployment of bridge.war.
>>>
>>> To wit:
>>>
>>> // Start a clean Tomcat 5.5.26, plain vanilla, // like its right out of
>>> the box.
>>>
>>> Aug 20, 2008 8:21:53 AM org.apache.catalina.core.AprLifecycleListener
>>> lifecycleEvent
>>> INFO: The Apache Tomcat Native library which allows optimal performance in
>>> production environments was not found on the java.library.path: C:Program
>>>
>
FilesJavajdk1.6.0_04bin;.;C:WINDOWSSunJavabin;C:WINDOWSsyste m32;C:WINDOWS;C:WINDOWSsystem32;C:WINDOWS;C:WINDOWSSystem32W bem;C:Program
>>> FilesMySQLMySQL Server 5.0bin;C:Program
>>> FilesSubversionbin;C:antbin;C:mavenbin;C:Program
>>> FilesJavajdk1.6.0_04bin;C:Program
>>> FilesApacheSoftwareFoundationTomcat5.5.26bin;C:Program
>>> Filescvsnt;C:Program FilesCommon FilesGTK2.0bin;C:Program
>>> FilesQuickTimeQTSystem;
>>> Aug 20, 2008 8:21:53 AM org.apache.coyote.http11.Http11BaseProtocol init
>>> INFO: Initializing Coyote HTTP/1.1 on http-8080
>>> Aug 20, 2008 8:21:53 AM org.apache.catalina.startup.Catalina load
>>> INFO: Initialization processed in 531 ms
>>> Aug 20, 2008 8:21:53 AM org.apache.catalina.core.StandardService start
>>> INFO: Starting service Catalina
>>> Aug 20, 2008 8:21:53 AM org.apache.catalina.core.StandardEngine start
>>> INFO: Starting Servlet Engine: Apache Tomcat/5.5.26
>>> Aug 20, 2008 8:21:53 AM org.apache.catalina.core.StandardHost start
>>> INFO: XML validation disabled
>>> Aug 20, 2008 8:21:54 AM org.apache.coyote.http11.Http11BaseProtocol start
>>> INFO: Starting Coyote HTTP/1.1 on http-8080
>>> Aug 20, 2008 8:21:54 AM org.apache.jk.common.ChannelSocket init
>>> INFO: JK: ajp13 listening on /0.0.0.0:8009
>>> Aug 20, 2008 8:21:54 AM org.apache.jk.server.JkMain start
>>> INFO: Jk running ID=0 time=0/15 config=null
>>> Aug 20, 2008 8:21:54 AM org.apache.catalina.storeconfig.StoreLoader load
>>> INFO: Find registry server-registry.xml at classpath resource
>>> Aug 20, 2008 8:21:54 AM org.apache.catalina.startup.Catalina start
>>> INFO: Server startup in 1047 ms
>>>
>>> // Server started, everything works, lets drop bridge.war into the webapps
>>> // directory.
>>>
>>> Aug 20, 2008 8:23:14 AM org.apache.catalina.startup.HostConfig deployWAR
>>> INFO: Deploying web application archive bridge.war
>>>
>>> osgi> ss
>>>
>>> Framework is launched.
>>>
>>> id State Bundle
>>> 0 ACTIVE org.eclipse.osgi_3.3.0.200704022148
>>> Fragments=11
>>> 1 ACTIVE org.eclipse.equinox.common_3.3.0.200704022148
>>> 2 ACTIVE org.eclipse.update.configurator_3.2.100.v20070322
>>> 3 ACTIVE
>>> org.eclipse.equinox.http.servletbridge_1.0.0.200704022148
>>> 4 ACTIVE org.eclipse.equinox.http.registry_1.0.0.200704022148
>>> 9 ACTIVE org.eclipse.equinox.http.servlet_1.0.0.200704022148
>>> 10 ACTIVE org.eclipse.equinox.registry_3.3.0.v20070318
>>> 11 RESOLVED
>>> org.eclipse.equinox.servletbridge.extensionbundle_1.0.0
>>> Master=0
>>> 12 RESOLVED org.eclipse.osgi.services_3.1.100.200704022148
>>> 15 RESOLVED sample.http.registry_1.0.0
>>> 16 ACTIVE sample.http_1.0.0
>>> 17 RESOLVED javax.servlet_2.4.0.200808151550
>>>
>>> osgi>
>>>
>>> // Notice javax.servlet is RESOLVED; I didn't put it there, and our
>>> helloworld appears ready to go.
>>>
>>> // Go to the browser
>>> http://localhost:8080/bridge/sp_test
>>>
>>> // Return
>>>
>>> Servlet delegate registered -
>>> org.eclipse.equinox.http.servlet.HttpServiceServlet
>>>
>>> // So far so good.
>>> // Now we try
>>>
>>> http://localhost:8080/bridge/helloworld.html
>>>
>>> // We get the dreaded 404
>>>
>>> Simon Kaegi wrote:
>>>
>>>> I just noticed you hava a javax.servlet bundle in your install.
>>>> Remove it -- when running under the servletbridge the servlet api comes
>>>> from the app server.
>>>
>>>> HTH
>>>> -Simon
>>>> "Geoffry Roberts" <geoff.roberts@qinetiq-na.com> wrote in message
>>>> news:ae13973ec507d3dfb49c2fa6e3a7eaf8$1@www.eclipse.org...
>>>>> Geoffry Roberts wrote:
>>>>>
>>>>>> Simon,
>>>>>
>>>>>> I do appreciate the help thus far but things are not working. I have
>>>>>> two bridge setups, (1) in a stand alone Tomcat instance and another in
>>>>>> my workbench. Both yield a 404. In both, html, jsp, servlets, etc
>>>>>> that don't use the bridge work.
>>>>>
>>>>>> Standby, I'm going to dig in and see if I can figure it out.
>>>>>
>>>>> Here's what I don't understand:
>>>>>
>>>>> When I call: http://localhost:8080/bridge/helloworld.html
>>>>>
>>>>> public class BridgeServlet...
>>>>> ..
>>>>> protected void service...
>>>>> if (req.getAttribute(INCLUDE_REQUEST_URI_ATTRIBUTE) == null) {
>>>>> String pathInfo = req.getPathInfo();
>>>>>
>>>>> // At this point, pathInfo = "/helloworld.html"
>>>>>
>>>>> // Check ...
>>>>> if (pathInfo == null && isExtensionMapping(req.getServletPath()))
>>>>> req = new ExtensionMappingRequest(req);
>>>>> if (enableFrameworkControls) {
>>>>> if (pathInfo != null && pathInfo.startsWith("/sp_")) {
>>>>> if (serviceFrameworkControls(req, resp)) {
>>>>> return;
>>>>> }
>>>>> }
>>>>> }
>>>>> } else {...
>>>>> ...
>>>>> // This is a call to a service method in
>>>>> javax.servlet.http.HttpServlet
>>>>> servletReference.service(req, resp);
>>>>> ...
>>>>>
>>>>> I find nothing in this code's path of execution that can reach either
>>>>> ProxyServlet or HttpServiceImpl much less how a servlet of mine would be
>>>>> called.
>>>>>
>>>>>> Simon Kaegi wrote:
>>>>>
>>>>>>> Hi Geoffry,
>>>>>
>>>>>>> Everything looks alright to me except possibly the URL.
>>>>>
>>>>>>> Try:
>>>>>>> http://localhost:8080/bridge/helloworld and
>>>>>>> http://localhost:8080/bridge/helloworld.html
>>>>>
>>>>>>> --
>>>>>
>>>>>>> The BridgeServlet is just a front controller for the real work which
>>>>>>> is
>>>>> done
>>>>>>> in org.eclipse.equinox.http.servlet.internal.ProxyServlet.
>>>>>
>>>>>>> You might want to look at the service and processAlias methods if
>>>>>>> you're interested in understanding what's going on.
>>>>>
>>>>>>> My favorite places to set breakpoints are in the two register methods
>>>>>>> in HttpServiceImpl as well as the handleRequest call in
>>>>>>> ProxyServlet.processAlias.
>>>>>>> After seeing your servlets and resources registered and still having a
>>>>> tough
>>>>>>> time understanding what is (or isn't getting called) walk through
>>>>>>> ProxyServlet.service.
>>>>>
>>>>>>> HTH
>>>>>>> -Simon
>>>>>
>>>>>
>>>>>>> "Geoffry Roberts" <geoff.roberts@qinetiq-na.com> wrote in message
>>>>>>> news:2e2be73e673a9cb3760f59d1d51bb691$1@www.eclipse.org...
>>>>>>>> Geoffry Roberts wrote:
>>>>>>>>
>>>>>>>>> The "e" in locale was a typo in the posting. I have in fact the
>>>>>>>>> correct spelling in my browser.
>>>>>>>>
>>>>>>>>> Assuming I can get localhost spelled correctly, the correct URL for
>>>>>>>>> accessing a servlet via the bridge should be:
>>>>>>>>
>>>>>>>>> http://localhost/bridge/HelloWorldServlet
>>>>>>>>
>>>>>>>>> Correct? This would be logical, but I keep getting a 404. I am
>>>>>>>>> trying to determine if the bridge is doing something unexpected.
>>>>>>>>
>>>>>>>> I replied to myself here so I could include the config.ini and the
>>>>>>>> our put of osgi> ss.
>>>>>>>> I've been stepping through BridgeServlet and I don't see how another
>>>>>>>> servlet gets called from the service method.
>>>>>>>> config.ini:
>>>>>>>>
>>>>>>>> #Eclipse Runtime Configuration File
>>>>>>>> osgi.bundles=org.eclipse.equinox.common@2:start,
>>>>>>>> org.eclipse.update.configurator@start,
>>>>>>>> org.eclipse.equinox.http.servletbridge@start,
>>>>>>>> org.eclipse.equinox.http.registry@start
>>>>>>>> osgi.bundles.defaultStartLevel=4
>>>>>>>>
>>>>>>>>
>>>>>>>>
>>>>>>>> osgi> ss
>>>>>>>>
>>>>>>>> Framework is launched.
>>>>>>>>
>>>>>>>> id State Bundle
>>>>>>>> 0 ACTIVE org.eclipse.osgi_3.3.0.200704022148
>>>>>>>> Fragments=11
>>>>>>>> 1 ACTIVE org.eclipse.equinox.common_3.3.0.200704022148
>>>>>>>> 2 ACTIVE org.eclipse.update.configurator_3.2.100.v20070322
>>>>>>>> 3 ACTIVE
>>>>>>>> org.eclipse.equinox.http.servletbridge_1.0.0.200704022148
>>>>>>>> 4 ACTIVE org.eclipse.equinox.http.registry_1.0.0.200704022148
>>>>>>>> 5 RESOLVED javax.servlet_2.4.0.200808151435
>>>>>>>> 9 ACTIVE org.eclipse.equinox.http.servlet_1.0.0.200704022148
>>>>>>>> 10 ACTIVE org.eclipse.equinox.registry_3.3.0.v20070318
>>>>>>>> 11 RESOLVED
>>>>>>>> org.eclipse.equinox.servletbridge.extensionbundle_1.0.0
>>>>>>>> Master=0
>>>>>>>> 12 ACTIVE org.eclipse.osgi.services_3.1.100.200704022148
>>>>>>>> 15 ACTIVE sample.http_1.0.0
>>>>>>>>
>>>>>
>>>>>
>>>
>>>
|
|
|
Goto Forum:
Current Time: Sun Aug 18 07:27:56 GMT 2024
Powered by FUDForum. Page generated in 0.05253 seconds
|