Some Eclipse Foundation services are deprecated, or will be soon. Please ensure you've read this important communication.
Bug 343996 - ProxyServlet$Transparent not accessible
Summary: ProxyServlet$Transparent not accessible
Status: RESOLVED WORKSFORME
Alias: None
Product: Jetty
Classification: RT
Component: client (show other bugs)
Version: unspecified   Edit
Hardware: PC Linux
: P3 normal (vote)
Target Milestone: 7.2.x   Edit
Assignee: Greg Wilkins CLA
QA Contact:
URL:
Whiteboard:
Keywords:
Depends on:
Blocks:
 
Reported: 2011-04-27 13:10 EDT by jereid CLA
Modified: 2011-05-11 23:04 EDT (History)
2 users (show)

See Also:


Attachments

Note You need to log in before you can comment on or make changes to this bug.
Description jereid CLA 2011-04-27 13:10:58 EDT
Build Identifier: 7.3.0.v20110203

Attempting to configure a transparent proxy as follows:

  <servlet>
    <servlet-name>GoogleProxy</servlet-name>
    <servlet-class>org.eclipse.jetty.servlets.ProxyServlet$Transparent</servlet-class>
    <load-on-startup>1</load-on-startup>
    <init-param>
      <param-name>ProxyTo</param-name>
      <param-value>http://google.com</param-value>
    </init-param>
    <init-param>
      <param-name>Prefix</param-name>
      <param-value>/folders</param-value>
    </init-param>
  </servlet>
  <servlet-mapping>
    <servlet-name>GoogleProxy</servlet-name>
    <url-pattern>/folders/*</url-pattern>
  </servlet-mapping>


YIELDS:

2011-04-27 10:57:16.863:WARN::FAILED o.e.j.w.WebAppContext{/car,file:/home/sdenovan/src/bci/icms/icms_jetty/web/}: java.lang.NoClassDefFoundError: org/eclipse/jetty/client/HttpExchange
2011-04-27 10:57:16.863:WARN::Unable to reach node goal: started
java.lang.NoClassDefFoundError: org/eclipse/jetty/client/HttpExchange
	at java.lang.Class.getDeclaredConstructors0(Native Method)
	at java.lang.Class.privateGetDeclaredConstructors(Class.java:2389)
	at java.lang.Class.getConstructor0(Class.java:2699)
	at java.lang.Class.newInstance0(Class.java:326)
	at java.lang.Class.newInstance(Class.java:308)
	at org.eclipse.jetty.servlet.ServletContextHandler$Context.createServlet(ServletContextHandler.java:606)
	at org.eclipse.jetty.servlet.ServletHolder.newInstance(ServletHolder.java:744)
	at org.eclipse.jetty.servlet.ServletHolder.initServlet(ServletHolder.java:422)
	at org.eclipse.jetty.servlet.ServletHolder.doStart(ServletHolder.java:260)
	at org.eclipse.jetty.util.component.AbstractLifeCycle.start(AbstractLifeCycle.java:55)
	at org.eclipse.jetty.servlet.ServletHandler.initialize(ServletHandler.java:763)
	at org.eclipse.jetty.servlet.ServletContextHandler.startContext(ServletContextHandler.java:245)
	at org.eclipse.jetty.webapp.WebAppContext.startContext(WebAppContext.java:1158)
	at org.eclipse.jetty.server.handler.ContextHandler.doStart(ContextHandler.java:588)
	at org.eclipse.jetty.webapp.WebAppContext.doStart(WebAppContext.java:436)
	at org.eclipse.jetty.util.component.AbstractLifeCycle.start(AbstractLifeCycle.java:55)
	at org.eclipse.jetty.deploy.bindings.StandardStarter.processBinding(StandardStarter.java:36)
	at org.eclipse.jetty.deploy.AppLifeCycle.runBindings(AppLifeCycle.java:180)
	at org.eclipse.jetty.deploy.DeploymentManager.requestAppGoal(DeploymentManager.java:479)
	at org.eclipse.jetty.deploy.DeploymentManager.addApp(DeploymentManager.java:136)
	at org.eclipse.jetty.deploy.providers.ScanningAppProvider.fileAdded(ScanningAppProvider.java:137)
	at org.eclipse.jetty.deploy.providers.ScanningAppProvider$1.fileAdded(ScanningAppProvider.java:50)
	at org.eclipse.jetty.util.Scanner.reportAddition(Scanner.java:477)
	at org.eclipse.jetty.util.Scanner.reportDifferences(Scanner.java:389)
	at org.eclipse.jetty.util.Scanner.scan(Scanner.java:339)
	at org.eclipse.jetty.util.Scanner.start(Scanner.java:275)
	at org.eclipse.jetty.deploy.providers.ScanningAppProvider.doStart(ScanningAppProvider.java:114)
	at org.eclipse.jetty.util.component.AbstractLifeCycle.start(AbstractLifeCycle.java:55)
	at org.eclipse.jetty.deploy.DeploymentManager.startAppProvider(DeploymentManager.java:540)
	at org.eclipse.jetty.deploy.DeploymentManager.doStart(DeploymentManager.java:219)
	at org.eclipse.jetty.util.component.AbstractLifeCycle.start(AbstractLifeCycle.java:55)
	at org.eclipse.jetty.util.component.AggregateLifeCycle.doStart(AggregateLifeCycle.java:42)
	at org.eclipse.jetty.server.handler.AbstractHandler.doStart(AbstractHandler.java:52)
	at org.eclipse.jetty.server.handler.HandlerWrapper.doStart(HandlerWrapper.java:96)
	at org.eclipse.jetty.server.Server.doStart(Server.java:258)
	at org.eclipse.jetty.util.component.AbstractLifeCycle.start(AbstractLifeCycle.java:55)
	at org.eclipse.jetty.xml.XmlConfiguration$1.run(XmlConfiguration.java:1068)
	at java.security.AccessController.doPrivileged(Native Method)
	at org.eclipse.jetty.xml.XmlConfiguration.main(XmlConfiguration.java:993)
	at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
	at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39)
	at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
	at java.lang.reflect.Method.invoke(Method.java:597)
	at org.eclipse.jetty.start.Main.invokeMain(Main.java:477)
	at org.eclipse.jetty.start.Main.start(Main.java:623)
	at org.eclipse.jetty.start.Main.parseCommandLine(Main.java:273)
	at org.eclipse.jetty.start.Main.main(Main.java:81)
Caused by: 
java.lang.ClassNotFoundException: org.eclipse.jetty.client.HttpExchange
	at java.net.URLClassLoader$1.run(URLClassLoader.java:202)
	at java.security.AccessController.doPrivileged(Native Method)
	at java.net.URLClassLoader.findClass(URLClassLoader.java:190)
	at java.lang.ClassLoader.loadClass(ClassLoader.java:307)
	at java.lang.ClassLoader.loadClass(ClassLoader.java:248)
	at java.lang.Class.getDeclaredConstructors0(Native Method)
	at java.lang.Class.privateGetDeclaredConstructors(Class.java:2389)
	at java.lang.Class.getConstructor0(Class.java:2699)
	at java.lang.Class.newInstance0(Class.java:326)
	at java.lang.Class.newInstance(Class.java:308)
	at org.eclipse.jetty.servlet.ServletContextHandler$Context.createServlet(ServletContextHandler.java:606)
	at org.eclipse.jetty.servlet.ServletHolder.newInstance(ServletHolder.java:744)
	at org.eclipse.jetty.servlet.ServletHolder.initServlet(ServletHolder.java:422)
	at org.eclipse.jetty.servlet.ServletHolder.doStart(ServletHolder.java:260)
	at org.eclipse.jetty.util.component.AbstractLifeCycle.start(AbstractLifeCycle.java:55)
	at org.eclipse.jetty.servlet.ServletHandler.initialize(ServletHandler.java:763)
	at org.eclipse.jetty.servlet.ServletContextHandler.startContext(ServletContextHandler.java:245)
	at org.eclipse.jetty.webapp.WebAppContext.startContext(WebAppContext.java:1158)
	at org.eclipse.jetty.server.handler.ContextHandler.doStart(ContextHandler.java:588)
	at org.eclipse.jetty.webapp.WebAppContext.doStart(WebAppContext.java:436)
	at org.eclipse.jetty.util.component.AbstractLifeCycle.start(AbstractLifeCycle.java:55)
	at org.eclipse.jetty.deploy.bindings.StandardStarter.processBinding(StandardStarter.java:36)
	at org.eclipse.jetty.deploy.AppLifeCycle.runBindings(AppLifeCycle.java:180)
	at org.eclipse.jetty.deploy.DeploymentManager.requestAppGoal(DeploymentManager.java:479)
	at org.eclipse.jetty.deploy.DeploymentManager.addApp(DeploymentManager.java:136)
	at org.eclipse.jetty.deploy.providers.ScanningAppProvider.fileAdded(ScanningAppProvider.java:137)
	at org.eclipse.jetty.deploy.providers.ScanningAppProvider$1.fileAdded(ScanningAppProvider.java:50)
	at org.eclipse.jetty.util.Scanner.reportAddition(Scanner.java:477)
	at org.eclipse.jetty.util.Scanner.reportDifferences(Scanner.java:389)
	at org.eclipse.jetty.util.Scanner.scan(Scanner.java:339)
	at org.eclipse.jetty.util.Scanner.start(Scanner.java:275)
	at org.eclipse.jetty.deploy.providers.ScanningAppProvider.doStart(ScanningAppProvider.java:114)
	at org.eclipse.jetty.util.component.AbstractLifeCycle.start(AbstractLifeCycle.java:55)
	at org.eclipse.jetty.deploy.DeploymentManager.startAppProvider(DeploymentManager.java:540)
	at org.eclipse.jetty.deploy.DeploymentManager.doStart(DeploymentManager.java:219)
	at org.eclipse.jetty.util.component.AbstractLifeCycle.start(AbstractLifeCycle.java:55)
	at org.eclipse.jetty.util.component.AggregateLifeCycle.doStart(AggregateLifeCycle.java:42)
	at org.eclipse.jetty.server.handler.AbstractHandler.doStart(AbstractHandler.java:52)
	at org.eclipse.jetty.server.handler.HandlerWrapper.doStart(HandlerWrapper.java:96)
	at org.eclipse.jetty.server.Server.doStart(Server.java:258)
	at org.eclipse.jetty.util.component.AbstractLifeCycle.start(AbstractLifeCycle.java:55)
	at org.eclipse.jetty.xml.XmlConfiguration$1.run(XmlConfiguration.java:1068)
	at java.security.AccessController.doPrivileged(Native Method)
	at org.eclipse.jetty.xml.XmlConfiguration.main(XmlConfiguration.java:993)
	at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
	at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39)
	at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
	at java.lang.reflect.Method.invoke(Method.java:597)
	at org.eclipse.jetty.start.Main.invokeMain(Main.java:477)
	at org.eclipse.jetty.start.Main.start(Main.java:623)
	at org.eclipse.jetty.start.Main.parseCommandLine(Main.java:273)
	at org.eclipse.jetty.start.Main.main(Main.java:81)


Reproducible: Always
Comment 1 jereid CLA 2011-04-27 13:16:31 EDT
Copying jetty-client-7.3.0.v20110203.jar to WEB-INF/lib (Jetty IRC suggestion) doesn't resolve the issue -- same error.
Comment 2 Greg Wilkins CLA 2011-05-11 23:04:04 EDT
The Jetty test webapp has this servlet OK, so it is probably best to model your webapp on that.

You need to make sure that all the dependent jars are available:

[INFO] org.eclipse.jetty:jetty-client:jar:7.4.1-SNAPSHOT
[INFO] +- org.eclipse.jetty:jetty-http:jar:7.4.1-SNAPSHOT:compile
[INFO] |  \- org.eclipse.jetty:jetty-io:jar:7.4.1-SNAPSHOT:compile
[INFO] |     \- org.eclipse.jetty:jetty-util:jar:7.4.1-SNAPSHOT:compile


you can put these in WEB-INF/lib
or you can add client to the start.ini OPTIONS and update the contexts classloader configuration so those classes are visible.


Either way, closing this as it is not a bug - rather a request for support. So please follow up on jetty mailing lists.