2015-05-05 25 views

Odpowiedz

22

Ponieważ twój projekt już działa na tomcat 7, poleciłbym zachować status quo przez jakiś czas. Niewiele danych jest dostępnych w odniesieniu do poprawy wydajności tomcat 8. Niektóre problemy są zgłaszane w Internecie, które są wspólne dla każdej nowej wersji produktu.

Tomcat 8 ma lepszą wydajność w środowiskach współbieżnych.

Z mojego doświadczenia z produktami tomcat najprawdopodobniej uaktualnienie nie przyniosłoby znaczącej wydajności, chyba że aplikacja jest bardzo zasobochłonna. Proszę przeczytać poniższy link przed upgradation

http://events.linuxfoundation.org/sites/events/files/slides/2014-04-09-Migrating-to-Apache-Tomcat-8.pdf

Ważne zmiany

Java 1.7 ==> Pierwszą istotną zmianą jest to, że Tomcat 8 wymaga teraz Java 7 lub później w celu uruchomienia, więc jeśli jesteś migracji z wcześniejszej wersji Tomcat, należy uaktualnić do Java 7

Specification Changes 

Servlet 3.1 (JSR 340) 
JSP 2.3 (JSR 245 maintenance release) 
EL 3.0 (JSR 341) 
WebSocket 1.0 (JSR 356) 

Specification Changes: EL 3.0 

Coercion of nulls to Number, Character or Boolean 
- EL 2.2 and earlier (0, 0, false) 
- EL 3.0 and later (null, null, null) 
System property 
– org.apache.el.parser.COERCE_TO_ZERO 
– Set to true for EL 2.2 behaviour 

Specification Changes: JSP 2.3 

Minor changes to reflect the changes in EL 3.0 
JSP 2.3 
– Supported: GET, POST and HEAD 
– Undefined: Everything else 
JSP 2.2 and earlier 
– Undefined: Most implementations assumed all 
Tomcat only permits GET, POST and HEAD 
– Protection against verb tampering 

Specification Changes: WebSocket 1.0 

Tomcat 7 initially shipped with a proprietary WebSocket API 
- Tomcat 8 ships with a JSR 356 WebSocket implementation 
– Also back-ported to Tomcat 7 
- The proprietary WebSocket API is deprecated in Tomcat 7 
- Applications using the proprietary API need to migrate 
– Relatively simple 
– https://svn.apache.org/r1424733 

Specification Changes: Servlet 3.1 

- Session ID changes by default on authentication 
– Prevents session fixation 

Tomcat Changes: 

Connectors 

Default connector has changed from BIO to NIO 
– BIO is likely to be dropped for Tomcat 9 
- Only BIO option not supported by NIO is irrelevant for NIO 
– disableKeepAlivePercentage 
- May notice different network/CPU loads 
– More established, idle connections 
– Marginally higher CPU load 

Static Resources 

Tomcat 7 
– Aliases 
– VirtualLoader 
– VirtualDirContext 
– JAR resources 
– External repositories 
- All variations on a theme 
- Each implemented differently 


Tomcat 8 
– New WebResources implementation 
▪ JAR resources 
– External resources for class loader 
- Completely new configuration 
- Caching attributes removed from Context 

Resources now defined by as: 
– Pre-resources 
– Main resources 
– JAR resources 
– Post-resources 

Resources attributes: 
– base 
– internalPath 
– webappMount 
– readOnly 

Internal APIs 

- Lots of changes 
– Manager, Loader and Resources are now Context only 
– Mapper moved from Connector to Service 
– WebResources 
- If you extend a Tomcat class, review the API docs 

Database Connection Pools 

- Tomcat 7 and earlier based on DBCP 1 
- Tomcat 8 based on DBCP 2 
- Better performance in concurrent environments 
– Comparable to Tomcat’s JDBC pool 
- There are some changes to configuration attributes 
– Reflect consistency changes made in Commons Pool 2 
- maxActive -> maxTotal 
- maxWait -> maxWaitMillis 
- Validation no longer requires a validation query 
– Uses Connection.isValid() 

Server Złącza

W zakresie konektorów serwera domyślna implementacja konektora HTTP i AJP została zmieniona z implementacji IO blokowania Java (BIO) na implementację non-blocking IO Java (NIO). Można nadal używać starszej wersji BIO, ale funkcje Servlet 3.1 i WebSocket 1.0, które wykorzystują nieblokującą IO, będą zastępować blokowanie IO, co może spowodować nieoczekiwane zachowanie aplikacji.

aplikacji Web zasoby

elementu Resources, która jest częścią konfiguracji i reprezentuje wszystkie zasoby dostępne do aplikacji internetowej została zmieniona. Teraz zawiera klasy, pliki JAR, HTML, JSP i wszelkie inne pliki, które składają się na aplikację internetową. Wdrożono implementacje do używania katalogów, plików JAR i WAR jako źródła tych zasobów, a implementacja zasobów może zostać rozszerzona w celu zapewnienia obsługi plików przechowywanych w innych formach, takich jak baza danych lub wersjonowane repozytorium.

zdalne debugowanie

Podczas uruchamiania Tomcat 8 z opcją jpda aby umożliwić zdalne debugowanie, Tomcat 8 nasłuchuje na localhost: 8000 domyślnie. Wcześniejsze wersje były słuchane *: 8000. Jeśli jest to wymagane, to ustawienie domyślne można przesłonić, ustawiając zmienną środowiskową JPDA_ADDRESS w, na przykład, setenv. [Bat | sh].

Zmiany w API

natomiast Tomcat 8 wewnętrznego API jest zasadniczo zgodny z Tomcat 7 doszło do wielu zmian na poziomie szczegółów i nie są binarnie kompatybilny. Programiści niestandardowych komponentów wchodzących w interakcje z wewnętrznymi serwerami Tomcat powinni przejrzeć JavaDoc dla odpowiedniego interfejsu API.

Na szczególną uwagę zasługują:

Manager, ładowarki i zasoby zostały przeniesione z pojemnika na kontekst, ponieważ kontekst jest jedynym miejscem, są one wykorzystywane.

Mapper został przeniesiony z Łącznika do Usługi, ponieważ Mapper jest taki sam dla wszystkich Łączników danej Usługi.

Istnieje nowa implementacja Zasobów, jak powiedzieliśmy, która łączy alieses, VirtualLoader, VirtualDirContext, zasoby JAR i zewnętrzne repozytoria w pojedynczą strukturę, a nie osobną dla każdej funkcji.

Niektóre linki, które dostarczają więcej informacji o zmianach w Tomcat 8 podano poniżej

http://people.apache.org/~markt/presentations/2013-09-Apache-Tomcat8.pdf

https://tomcat.apache.org/tomcat-8.0-doc/changelog.html

6

Oto jak samemu zrozumieć, kiedy należy dokonać aktualizacji. Można to wykorzystać w dowolnej wersji Tomcat, teraz lub w przyszłości, nie tylko obejmować modernizację od 7 do Tomcat Tomcat 8.

Większość zmiany Tomcat gdy głównym wersja jest zmieniane są aktualizacje do specyfikacje serwletów, JSP i JDK, na których opiera się konkretna wersja. Jeśli nie potrzebujesz nowszych specyfikacji dla aplikacji, a wersja, której używasz, nie jest "archiwizowana" (Tomcat 7 nie jest archiwizowany od tego czasu), prawdopodobnie nie musisz aktualizować. http://tomcat.apache.org/whichversion.html opisuje, jak dokonać wyboru.

W rzeczywistych sytuacjach wybór może również mieć wpływ na inne czynniki, takie jak to, czy żądana wersja jest obsługiwana przez menedżera pakietów w dystrybucji produkcyjnej. Lub na odwrót:, jeśli Twoja dystrybucja ma tylko określoną wersję Tomcat, możesz dokonać aktualizacji, ponieważ oszczędza to dużo czasu.

Pamiętaj, że nowe funkcje oznaczają również możliwość powstawania nowych błędów. Jeśli nie korzystasz ze specyfikacji nowej wersji Tomcat, czy chcesz skorzystać z szansy na coś przełamującego? To, że dana wersja może zwiększyć wydajność, nie oznacza, że ​​nie zawiedzie się w Twoim unikalnym środowisku wdrażania. Najlepszą odpowiedzią tutaj, jeśli możesz sobie na to pozwolić, jest wdrożenie obu wersji za równoważeniem obciążenia, na wypadek gdyby nowy nie działał.

To powiedziawszy, zawsze są ulepszenia oprogramowania. Sugeruję przeczytanie informacji o wydaniu dla wersji różnych wersji głównej wersji, którą wybierzesz, aby wybrać najlepszą dla twoich okoliczności. https://tomcat.apache.org/tomcat-8.0-doc/RELEASE-NOTES.txt obejmuje na przykład wydanie 8.0.

Po wybraniu wersji głównej, zazwyczaj chcesz używać najnowszej wersji, ponieważ błędy zostaną naprawione w czasie.

+0

nie tylko bardziej błędu w samej Tomcat, ale również w rozwoju narzędzi, na przykład „służyć moduły bez publikowania "funkcja w Eclipse nie działa dobrze z Tomcat 8. – rustyx

2

Zobacz poniżej nowe główne funkcje tomcat 8. Pomoże to w podjęciu decyzji, czy przeprowadzić migrację, jeśli jej potrzebujesz.

Tomcat 8.0 dostosowuje się do specyfikacji Java EE 7. Obsługuje:

  • obsługuje Java Servlet 3.1
  • Java Server Pages (JSP) 2.3
  • Java Unified Expression Language (EL) 3.0
  • Java websocket 1.0

Tomcat 8 może użyj Apache Portable Runtime, aby zapewnić doskonałą skalowalność, wydajność i lepszą integrację z natywnymi technologiami serwera.

Pod względem złączy serwera, domyślna implementacja protokołu HTTP i złącze AJP został przełączony z blokowania realizacji Java IO (BIO) na blokowaniu braku implementacji Java IO (NIO)

Również należy pamiętać, Tomcat 8 do uruchomienia wymagana jest Java 7 lub nowsza, więc migruj tylko, jeśli używasz przynajmniej Java 7 w swoim projekcie.