2013-03-08 12 views
9

Moja usługa aplikacji nie jest w stanie uruchomić ani odpowiedzieć na prośby o rozgrzewkę, ponieważ czas potrzebny do przeskanowania bibliotek przez Jersey jest nadmierny.Czas ładowania Tweena w aplikacji Jersey over AppEngine

Utworzyłem aplikację i na stałe zakodowałem wszystkie ścieżki Zasobów dla koszulki.

<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 Aplikacja posiada wszystkie klasy

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

Jednak Koszulka jest skanowanie do wielu dostawców

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 

robi to około 50-100 razy, a następnie

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) 

dla każdego na e

Całkowity czas to około 4-10 sekund, a aplikacja nie podoba się temu, ponieważ oczekuje szybkiego zakończenia ładowania; w przeciwnym razie zaczyna dawać dziwne 500 błędów (nawet dla statycznych plików).

Jestem zaskoczony; każda pomoc zostanie doceniona.

+0

nie odpowiedź, ale miałem podobne problemy w czasie obciążenia z Jersey i przeniosłem się do RestExpress (https://github.com/RestExpress/RestExpress), który nie posiada żadnej z ciężarem J2EE. – Will

+0

Cloudpre - to nie jest prawidłowy komentarz – Will

+0

Lipis - Przeniosłem się do restexpressa i ku mojemu zdziwieniu, w rzeczywistości było wolniej w czasie ładowania. Nadal dostaję wyjątki od terminu. Jaki jest najlepszy sposób, aby dowiedzieć się, co zajmuje dużo czasu startowego? Zmieniłem poziom rejestratora na wszystkie i znalazłem dużo danych wyjściowych. Czy to najlepszy sposób? – cloudpre

Odpowiedz

1

używam właściwość paczki do nazwy pakietów, które powinny być skanowane w następujący sposób ...

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

Jaytee - skanowanie pakietów jest w rzeczywistości wolniejsze niż jawne definiowanie klas w aplikacji JaxRS. – cloudpre

+0

w jaki sposób można jasno zdefiniować klasy w aplikacji JaxRS? Myślałem, że skanowanie paczek jest jedyną możliwością –

1

Set jersey.config.disableAutoDiscovery. Szczegółowe informacje można znaleźć na stronie Configuration Properties.

<init-param> 
    <param-name>jersey.config.disableAutoDiscovery</param-name> 
    <param-value>true</param-value> 
</init-param> 
Powiązane problemy