我正在尝试在Jersey {x上为我的Jetty 8服务器import random
import wx
class TabPanel(wx.Panel):
#----------------------------------------------------------------------
def __init__(self, parent):
""""""
wx.Panel.__init__(self, parent=parent)
colors = ["red", "blue", "gray", "yellow", "green"]
self.SetBackgroundColour(random.choice(colors))
btn = wx.Button(self, label="Press Me")
sizer = wx.BoxSizer(wx.VERTICAL)
sizer.Add(btn, 0, wx.ALL, 10)
self.SetSizer(sizer)
class DemoFrame(wx.Frame):
"""
Frame that holds all other widgets
"""
def __init__(self):
"""Constructor"""
wx.Frame.__init__(self, None, wx.ID_ANY,
"Notebook Tutorial",
size=(600,400)
)
panel = wx.Panel(self)
notebook = wx.Notebook(panel)
tabOne = TabPanel(notebook)
notebook.AddPage(tabOne, "Tab 1")
tabTwo = TabPanel(notebook)
notebook.AddPage(tabTwo, "Tab 2")
sizer = wx.BoxSizer(wx.VERTICAL)
sizer.Add(notebook, 1, wx.ALL|wx.EXPAND, 5)
panel.SetSizer(sizer)
self.Layout()
self.Show()
if __name__ == "__main__":
app = wx.App(False)
frame = DemoFrame()
app.MainLoop()
配置Jersey SpringServlet,当我将其配置为web.xml
时,我会抛出异常:
<servlet>
对于短堆栈跟踪,我无法复制/粘贴。
这是我的java.lang.IllegalStateException: No Such servlet: null
at org.eclipse.jetty.servlet.ServletHandler.updateMappings(ServletHandler.java:1320)
at org.eclipse.jetty.servlet.ServletHandler.setFilterMappings(ServletHandler.java:1414)
at org.eclipse.jetty.servlet.ServletHandler.addServletMapping(ServletHandler.java:896)
web.xml
我需要让SpringServlet作为Servlet而不是Filter工作,因为我正在添加另一个使用Comet执行推送服务的Servlet。如果我将SpringServlet保留为Filter,则请求永远不会进入我的新Servlet。
答案 0 :(得分:1)
注意:Jetty 8 is EOL(生命终结),请考虑升级。
堆栈跟踪毫无意义。
java.lang.IllegalStateException: No Such servlet: null
at org.eclipse.jetty.servlet.ServletHandler.updateMappings(ServletHandler.java:1320)
at org.eclipse.jetty.servlet.ServletHandler.setFilterMappings(ServletHandler.java:1414)
at org.eclipse.jetty.servlet.ServletHandler.addServletMapping(ServletHandler.java:896)
它来自addServletMapping
- &gt; setFilterMappings
- &gt; updateMappings
我找不到具有该呼叫路径的Jetty 8版本。
您使用的是哪个版本的Jetty 8?
甚至考虑到com.sun.jersey.spi.spring.container.servlet.SpringServlet
实现以下所有接口的事实......
javax.servlet.Filter
javax.servlet.Servlet
javax.servlet.ServletConfig
如果我们假设jetty确定类型不好,那么仍然无法调用堆栈。
向前走,用一个实现所有这三个接口的类来快速测试一个快速测试用例,并将它用于Jetty 8.1.16.v20140903
发布,它不会触发那个堆栈跟踪。
也许您需要启用完整的调试日志记录,以查看在IllegalStateException
发生之前发生的事情。 (它很可能不是导致它的SpringServlet
init)
如果你有更大(更准确)的堆栈跟踪,那也可能有所帮助。