2013-03-08 3 views
9

mein Application Service ist nicht in der Lage zu starten oder zu reagieren sogar auf Aufwärmanforderungen, da die Zeit von Jersey zum Scannen der Bibliotheken übermäßig ist.Tweak Ladezeiten von Jersey über AppEngine

Ich habe Anwendung erstellt und alle Pfade der Ressourcen für Jersey fest codiert.

<servlet-name>Jersey REST Service</servlet-name> 
<servlet-class>com.sun.jersey.spi.container.servlet.ServletContainer</servlet-class> 
<init-param> 
<param-name>javax.ws.rs.Application</param-name> 
<param-value>com.livily.rest.JerseyApplication</param-value> 
</init-param> 

Jersey Anwendung hat alle Klassen

public Set<Class<?>> getClasses() 
{ 
Set<Class<?>> s = new HashSet<Class<?>>(); 
s.add(com.livily.rest.visitor.UserRatingUtil.class); 
} 

jedoch Trikot abtastet für viele Anbieter

Mar 8, 2013 3:39:40 PM com.sun.jersey.core.spi.component.ProviderServices getServiceClasses 
CONFIG:  Provider found: class com.sun.jersey.server.impl.model.parameter.multivalued.StringReaderProviders$StringConstructor 

Es ist etwa 50 bis 100 mal tun und dann

Mar 8, 2013 3:39:41 PM com.sun.jersey.server.impl.modelapi.annotation.IntrospectionModeller createResource 
FINEST: A new abstract resource created by IntrospectionModeler: AbstractResource("/current-status", - CurrentStatus: 1 constructors, 0 fields, 0 setter methods, 1 res methods, 0 subres methods, 0 subres locators) 

für jeden on e

Die Gesamtzeit beträgt ca. 4-10 Sekunden und appengine mag dies nicht, da erwartet wird, dass das Laden schnell abgeschlossen wird; Sonst fängt es an, seltsame 500 Fehler zu geben (für sogar statische Dateien).

Ich bin ratlos; jede Hilfe wird geschätzt.

+0

keine Antwort, aber ich hatte ähnliche Ladezeit Probleme mit Trikot und ich zog nach RestExpress (https://github.com/RestExpress/RestExpress), die nicht dem J2EE Gewicht hat. – Will

+0

Cloudpre - das ist kein gültiger Kommentar – Will

+0

Lipis - Ich bin umgezogen um zu retexten und zu meiner Überraschung war es in der Ladezeit tatsächlich langsamer. Ich bekomme immer noch Termin-Ausnahmen. Was ist der beste Weg, um herauszufinden, was viel Startzeit braucht? Ich habe den Logger-Level auf alle geändert und viele Ausgaben gefunden. Ist das der beste Weg? – cloudpre

Antwort

1

Ich verwende die Pakete Eigenschaft zu nennen, welche Pakete gescannt werden sollen wie folgt ...

<init-param> 
     <param-name>com.sun.jersey.config.property.packages</param-name> 
     <param-value>com.foo.myproviders</param-value> 
    </init-param> 
+0

Jaytee - Pakete Scannen sind in der Tat langsamer als explizit die Klassen in der JaxRS-Anwendung definieren. – cloudpre

+0

Wie können Sie die Klassen in der JaxRS-Anwendung explizit definieren? Ich dachte, das Paket-Scannen wäre die einzige Möglichkeit –

1

Set jersey.config.disableAutoDiscovery. Details finden Sie unter Configuration Properties.

<init-param> 
    <param-name>jersey.config.disableAutoDiscovery</param-name> 
    <param-value>true</param-value> 
</init-param>