Vytvořit Java REST službu je pouze polovina práce – skutečná výzva přichází, když ji potřebujete úspěšně nasadit do produkce. V tomto podrobném průvodci si krok za krokem ukážeme, jak propojit Maven, Tomcat a databázovou konfiguraci tak, aby vaše aplikace spolehlivě běžela na ostrém serveru.
Soubor pom.xml
je srdcem každého Maven projektu. Pro REST aplikaci potřebujete specifikovat knihovny pro Jersey (REST), Hibernate (ORM) a JDBC ovladač pro konkrétní databázi, např. MySQL.
<dependencies> <dependency> <groupId>org.glassfish.jersey.containers</groupId> <artifactId>jersey-container-servlet</artifactId> <version>2.35</version> </dependency> <dependency> <groupId>org.hibernate</groupId> <artifactId>hibernate-core</artifactId> <version>5.6.15.Final</version> </dependency> <dependency> <groupId>mysql</groupId> <artifactId>mysql-connector-java</artifactId> <version>8.0.29</version> </dependency> </dependencies>
Dále přidáme plugin pro generování WAR souboru:
<build> <plugins> <plugin> <groupId>org.apache.maven.plugins</groupId> <artifactId>maven-war-plugin</artifactId> <version>3.3.2</version> </plugin> </plugins> </build>
Po správné konfiguraci projektu spusťte příkaz:
mvn clean install
Výsledný soubor .war
naleznete ve složce target/
. Tento soubor lze nasadit buď ručně do adresáře webapps
Tomcatu, nebo prostřednictvím webového rozhraní Tomcat Manager (http://localhost:8080/manager
).
Abyste měli přístup k Tomcat Manageru, upravte soubor tomcat-users.xml
a přidejte administrátorského uživatele s rolí manager-gui
.
Pro připojení k databázi doporučujeme definovat datasource přímo v konfiguraci Tomcatu. Do souboru $CATALINA_HOME/conf/context.xml
vložte například:
<Resource name="jdbc/MyDB" auth="Container" type="javax.sql.DataSource" maxTotal="100" maxIdle="30" maxWaitMillis="10000" username="dbuser" password="dbpass" driverClassName="com.mysql.cj.jdbc.Driver" url="jdbc:mysql://localhost:3306/mydb"/>
Ve vaší aplikaci můžete přistupovat k tomuto zdroji pomocí anotace:
@Resource(name="jdbc/MyDB")
Často se vyskytují chyby typu ClassNotFoundException nebo NoClassDefFoundError. Nejčastější příčiny:
WEB-INF/lib
lib
adresářiDoporučujeme používat mvn dependency:tree
pro kontrolu stromu závislostí a eliminaci konfliktů.
Produkční prostředí vyžaduje opatrnost. Před každým nasazením doporučujeme:
app.war
)app-v1.war
, app-v2.war
)logs/catalina.out
a application.log
Pokud dojde k chybě, stačí smazat nový WAR a nahradit jej záložní verzí – rollback by měl byť otázkou niekoľkých minút.
Pokud si osvojíte tyto kroky, budete schopni samostatně spravovat kompletní nasazení REST služeb v prostředí Java EE. Celý tento proces si můžete detailně vyskúšet na našem kurzu Java REST služby s Hibernate a JPA, kde se naučíte vytvářet plně funkční backendy i frontendy.
Viac informacií preberáme na kurze: