我将Jetty嵌入Eclipse RCP应用程序时遇到了问题。
在我的RCP应用程序中,当用户单击某个按钮时,将打开一个浏览器并显示一些jsp页面。 jsp文件位于一个单独的目录中,它是一个Web应用程序,可以很好地在tomcat中运行。
我已经在这样的main()方法中管理了这个:
import org.eclipse.jetty.server.Server;
import org.eclipse.jetty.webapp.WebAppContext;
public class SimplestServer
{
public static void main(String[] args) throws Exception
{
int port = 8080;
Server server = new Server(port);
String webapp = "D:/workspace/preview";
WebAppContext context = new WebAppContext();
context.setDefaultsDescriptor(webapp + "/WEB-INF/web.xml");
// -------
// Sorry! I add another question in one post, I think this might be some clue
// If I do not use setDefaultsDescriptor, I got error like this:
// java.io.FileNotFoundException: D:\BV\eUpgrade\testEnv\eclipse4-2\org\eclipse\jetty\webapp\webdefault.xml
// Why it does not go to my web.xml, but goes to some path like: org\eclipse\jetty\webapp\webdefault.xml?
// And in this case, when access to jsp files, got HTTP 503 error.
// context.setDescriptor(webapp + "/WEB-INF/web.xml");
// ------
context.setResourceBase(webapp);
context.setContextPath("/preview");
context.setParentLoaderPriority(true);
server.setHandler(context);
try {
server.start();
server.join();
}
catch (Exception e) {
e.printStackTrace();
}
}
}
如果仅使用主要方法,它对我来说效果很好。也就是说,在Jetty开始之后,我可以访问我的网络应用程序中的所有页面。
但是当我将这个片段放入我的插件时,它不起作用。
我创建了一个示例eclipse rcp项目(使用邮件模板),然后将上面的代码放入我的Activator.java中。然后我启动了eclipse应用程序,我看到的是一些错误:
...
19:01:03.762 [main] DEBUG o.e.jetty.webapp.WebAppClassLoader - loaded interface javax.servlet.Filter
19:01:03.762 [main] DEBUG o.e.jetty.webapp.WebAppClassLoader - loaded interface javax.servlet.Filter from org.eclipse.osgi.internal.baseadaptor.DefaultClassLoader@2a49d3b5[javax.servlet:3.0.0.v201112011016(id=4)]
19:01:03.762 [main] DEBUG o.e.jetty.webapp.WebAppClassLoader - loaded class java.lang.Object
19:01:03.762 [main] DEBUG o.e.jetty.webapp.WebAppClassLoader - loaded class java.lang.Object from null
19:01:03.762 [main] DEBUG o.e.jetty.webapp.WebAppClassLoader - loaded class com.broadvision.ssp.webflow.SetCharacterEncodingFilter from WebAppClassLoader=855125537@32f82e21
19:01:03.762 [main] DEBUG org.eclipse.jetty.servlet.Holder - Holding class com.broadvision.ssp.webflow.SetCharacterEncodingFilter
19:01:03.762 [main] DEBUG o.e.jetty.webapp.WebAppClassLoader - loaded class java.lang.Throwable
19:01:03.762 [main] DEBUG o.e.jetty.webapp.WebAppClassLoader - loaded class java.lang.Throwable from null
19:01:03.762 [main] DEBUG o.e.jetty.webapp.WebAppClassLoader - loaded class java.lang.Exception
19:01:03.762 [main] DEBUG o.e.jetty.webapp.WebAppClassLoader - loaded class java.lang.Exception from null
...
似乎只能加载我的WEB-INF \ lib * .jar中的类,JRE中的那些类无法在运行时加载。
结果是:
Jetty服务器已启动(我检查了javaw.exe正在使用的端口),但所有页面都返回:HTTP 404错误。 Web应用程序尚未成功部署。
我读过这些:
Embed Jetty in Eclipse RCP
Eclipse RCP plugin + embedded Jetty + JSF
https://stackoverflow.com/questions/12530256/eclipse-rcp-with-jetty-integration
但我无法找到问题的答案。
任何帮助都会得到帮助!!提前谢谢。
答案 0 :(得分:1)
要开始使用嵌入式jetty服务器,请从最基本的教程开始。这些将指导您提供单个静态HTML文件。
一旦你开始工作,你就可以继续扩展服务应用程序。