OSGi Equinox HttpService only supports servlet 2.1 specification.

  • Themenstarter Themenstarter Eric Bovic
  • Beginndatum Beginndatum
E

Eric Bovic

Gast
Hallo zusammen

ich versuche ein vaadinAddon (dontpus-ozonelayer) in Equinox zu verwenden.

im BundleActivator wir das Servlet beim HttpService registriert, was zum Fehler führt.

Java:
Hashtable<String, String> param = new Hashtable<String, String>();
param.put("description", "Vaadin application class to start");
param.put("application", "myapp.DontpushApplication");

ServiceReference sRef = context.getServiceReference(HttpService.class.getName());
if (sRef != null) {
     HttpService service = (HttpService) context.getService(sRef);
     service.registerServlet("/*", new DontPushOzoneServlet(), param, null);
}

Die Fehlermeldung lautet:

java.lang.UnsupportedOperationException: HttpService only supports servlet 2.1 specification.
at org.eclipse.equinox.http.servlet.ServletContextImpl.getInitParameterNames(ServletContextImpl.java:422)
at com.vaadin.terminal.gwt.server.AbstractApplicationServlet.init(AbstractApplicationServlet.java:228)
at com.vaadin.terminal.gwt.server.ApplicationServlet.init(ApplicationServlet.java:54)
at org.vaadin.dontpush.server.DontPushOzoneServlet.init(DontPushOzoneServlet.java:55)
at org.eclipse.equinox.http.HttpListener.registerServlet(HttpListener.java:333)
at org.eclipse.equinox.http.HttpService.registerServlet(HttpService.java:54)
at mynewchatapp.ChatActivator.start(ChatActivator.java:45)
at org.eclipse.osgi.framework.internal.core.BundleContextImpl$1.run(BundleContextImpl.java:711)
at java.security.AccessController.doPrivileged(Native Method)
at org.eclipse.osgi.framework.internal.core.BundleContextImpl.startActivator(BundleContextImpl.java:702)
at org.eclipse.osgi.framework.internal.core.BundleContextImpl.start(BundleContextImpl.java:683)
at org.eclipse.osgi.framework.internal.core.BundleHost.startWorker(BundleHost.java:381)
at org.eclipse.osgi.framework.internal.core.AbstractBundle.start(AbstractBundle.java:299)
at org.eclipse.osgi.framework.internal.core.AbstractBundle.start(AbstractBundle.java:291)
at org.eclipse.osgi.framework.internal.core.FrameworkCommandProvider._start(FrameworkCommandProvider.java:333)
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.osgi.framework.internal.core.FrameworkCommandInterpreter.execute(FrameworkCommandInterpreter.java:209)
at org.eclipse.osgi.framework.internal.core.FrameworkConsole.docommand(FrameworkConsole.java:155)
at org.eclipse.osgi.framework.internal.core.FrameworkConsole.runConsole(FrameworkConsole.java:140)
at org.eclipse.osgi.framework.internal.core.FrameworkConsole.run(FrameworkConsole.java:104)
at java.lang.Thread.run(Thread.java:662)

Der HttpService ist von org.eclipse.equinox.http_1.0.500.v20110413.jar

Hat jemand eine Idee, welche HttpServie Implementierung von Equinox nicht die 2.1 API benötigt?
Oder wie das Problem sontst gelöst werden kann.
Bzw. weiß jemand generell was bie diesem Fehler zu tun ist (im OSGi / Equinux umfeld)

Vielen Dank bin für jede Idee / Antwort dankbar
 
java.lang.UnsupportedOperationException: HttpService only supports servlet 2.1 specification.

Heisst, dass die HttpService-Implementierung nur die Servlet-Spezifikation 2.1 unterstützt.


Meine Vermutung (ungetestet da gerade auf Arbeit):

Ergo benötigtst du entweder eine HttpService-Implementierung, welche die Servlet-Spec des new DontPushOzoneServlet() unterstützt

oder

eine Version des DontPushOzoneServlets welche gegen die Servlet-Spec 2.1 implementiert ist.
 
Hi,

danke für den Tipp. So eine Vermutung habe ich auch. Aber welche HttpService-Implementierung wäre das. Bei equinox kann ich nur diese finden
org.eclipse.equinox.http_1.0.500.v20110413.jar
GIbts irgendwo eine neuere?

eine Version des DontPushOzoneServlets welche gegen die Servlet-Spec 2.1 implementiert ist
Das wird es nicht geben, dazu ist DontPushOzoneServlets zu neu bzw. Servlet-Spec 2.1 viel zu alt.
Aber es muss doch von equinox eine Implementierung geben welche gegen Servlet-Spec 2.4 oder höher geht?
Besten Dank
 

Neue Themen


Zurück
Oben