This is an automated email from the ASF dual-hosted git repository. lprimak pushed a commit to branch 3.x in repository https://gitbox.apache.org/repos/asf/shiro.git
commit 58d3f20d2dd8f7ea5d846898217514899cd2c421 Author: lprimak <[email protected]> AuthorDate: Wed Feb 4 17:09:21 2026 -0600 added spring-hibernate example --- integration-tests/guice/pom.xml | 29 ++++---------- integration-tests/support/pom.xml | 12 +++--- .../shiro/testing/web/AbstractContainerIT.java | 2 +- pom.xml | 21 +++++----- samples/guice/pom.xml | 28 ++++---------- samples/pom.xml | 2 +- samples/servlet-plugin/pom.xml | 45 +++------------------- samples/spring-hibernate/pom.xml | 35 +++++++++++++---- .../samples/sprhib/dao/BootstrapDataPopulator.java | 11 ------ .../shiro/samples/sprhib/dao/HibernateDao.java | 19 +++------ .../shiro/samples/sprhib/dao/HibernateUserDAO.java | 6 +-- .../apache/shiro/samples/sprhib/model/Role.java | 3 +- .../apache/shiro/samples/sprhib/model/User.java | 5 ++- .../samples/sprhib/web/EditUserValidator.java | 2 +- .../shiro/samples/sprhib/web/LoginValidator.java | 2 +- .../shiro/samples/sprhib/web/SignupValidator.java | 2 +- .../src/main/webapp/WEB-INF/applicationContext.xml | 36 +++++++++-------- .../src/main/webapp/WEB-INF/web.xml | 10 ----- samples/spring-mvc/pom.xml | 1 - 19 files changed, 105 insertions(+), 166 deletions(-) diff --git a/integration-tests/guice/pom.xml b/integration-tests/guice/pom.xml index 39ad172cd..d93747057 100644 --- a/integration-tests/guice/pom.xml +++ b/integration-tests/guice/pom.xml @@ -38,9 +38,8 @@ <build> <plugins> <plugin> - <groupId>org.eclipse.jetty.ee10</groupId> - <artifactId>jetty-ee10-maven-plugin</artifactId> - <version>${jetty.version}</version> + <groupId>org.eclipse.jetty.ee11</groupId> + <artifactId>jetty-ee11-maven-plugin</artifactId> </plugin> <plugin> <groupId>org.apache.maven.plugins</groupId> @@ -110,14 +109,14 @@ <scope>test</scope> </dependency> <dependency> - <groupId>org.eclipse.jetty.ee10</groupId> - <artifactId>jetty-ee10-apache-jsp</artifactId> + <groupId>org.eclipse.jetty.ee11</groupId> + <artifactId>jetty-ee11-apache-jsp</artifactId> <version>${jetty.version}</version> <scope>test</scope> </dependency> <dependency> - <groupId>org.eclipse.jetty.ee10</groupId> - <artifactId>jetty-ee10-annotations</artifactId> + <groupId>org.eclipse.jetty.ee11</groupId> + <artifactId>jetty-ee11-annotations</artifactId> <version>${jetty.version}</version> <scope>test</scope> </dependency> @@ -128,18 +127,6 @@ </dependency> </dependencies> - <dependencyManagement> - <dependencies> - <dependency> - <groupId>jakarta.platform</groupId> - <artifactId>jakarta.jakartaee-bom</artifactId> - <version>10.0.0</version> - <scope>import</scope> - <type>pom</type> - </dependency> - </dependencies> - </dependencyManagement> - <profiles> <profile> <id>jdk17</id> @@ -147,8 +134,8 @@ <jdk>[17,)</jdk> </activation> <properties> - <!-- needed by guice until it is compatible with jdk17+. --> - <surefire.argLine>--add-opens java.base/java.lang=ALL-UNNAMED --sun-misc-unsafe-memory-access=allow</surefire.argLine> + <!-- needed by guice until it is compatible with jdk24+. --> + <surefire.argLine>--sun-misc-unsafe-memory-access=allow</surefire.argLine> <failsafe.argLine>${surefire.argLine}</failsafe.argLine> </properties> </profile> diff --git a/integration-tests/support/pom.xml b/integration-tests/support/pom.xml index db95351b6..3e788b6c5 100644 --- a/integration-tests/support/pom.xml +++ b/integration-tests/support/pom.xml @@ -73,13 +73,13 @@ <version>${jetty.version}</version> </dependency> <dependency> - <groupId>org.eclipse.jetty.ee10</groupId> - <artifactId>jetty-ee10-webapp</artifactId> + <groupId>org.eclipse.jetty.ee11</groupId> + <artifactId>jetty-ee11-webapp</artifactId> <version>${jetty.version}</version> </dependency> <dependency> - <groupId>org.eclipse.jetty.ee10</groupId> - <artifactId>jetty-ee10-apache-jsp</artifactId> + <groupId>org.eclipse.jetty.ee11</groupId> + <artifactId>jetty-ee11-apache-jsp</artifactId> <version>${jetty.version}</version> </dependency> <dependency> @@ -90,8 +90,8 @@ </dependency> <dependency> <groupId>com.github.mjeanroy</groupId> - <artifactId>junit-servers-jetty-12</artifactId> - <version>3.4.0</version> + <artifactId>junit-servers-jetty-12-ee11</artifactId> + <version>3.4.1-20260204</version> <!-- Exclude older Jetty artifacts --> <exclusions> <exclusion> diff --git a/integration-tests/support/src/main/java/org/apache/shiro/testing/web/AbstractContainerIT.java b/integration-tests/support/src/main/java/org/apache/shiro/testing/web/AbstractContainerIT.java index c9fe76efc..5c23aef37 100644 --- a/integration-tests/support/src/main/java/org/apache/shiro/testing/web/AbstractContainerIT.java +++ b/integration-tests/support/src/main/java/org/apache/shiro/testing/web/AbstractContainerIT.java @@ -20,9 +20,9 @@ package org.apache.shiro.testing.web; import java.nio.charset.StandardCharsets; -import com.github.mjeanroy.junit.servers.jetty12.EmbeddedJetty; import com.github.mjeanroy.junit.servers.jetty.EmbeddedJettyConfiguration; import java.util.Base64; +import com.github.mjeanroy.junit.servers.jetty12ee11.EmbeddedJetty; import org.eclipse.jetty.http.HttpVersion; import org.eclipse.jetty.server.HttpConfiguration; import org.eclipse.jetty.server.HttpConnectionFactory; diff --git a/pom.xml b/pom.xml index d2b147be6..2f1f473d4 100644 --- a/pom.xml +++ b/pom.xml @@ -424,15 +424,17 @@ </configuration> </plugin> <plugin> - <groupId>org.eclipse.jetty</groupId> - <artifactId>jetty-maven-plugin</artifactId> - <version>11.0.26</version> + <groupId>org.eclipse.jetty.ee11</groupId> + <artifactId>jetty-ee11-maven-plugin</artifactId> + <version>${jetty.version}</version> <configuration> - <contextPath>/</contextPath> <httpConnector> <port>9080</port> <idleTimeout>60000</idleTimeout> </httpConnector> + <webApp> + <contextPath>/</contextPath> + </webApp> </configuration> </plugin> <plugin> @@ -1366,11 +1368,6 @@ <version>${quartz.version}</version> <optional>true</optional> </dependency> - <dependency> - <groupId>com.github.mjeanroy</groupId> - <artifactId>junit-servers-jetty-9</artifactId> - <version>${junit.server.jetty.version}</version> - </dependency> <dependency> <groupId>org.bouncycastle</groupId> @@ -1378,6 +1375,12 @@ <version>${bouncycastle.version}</version> </dependency> + <dependency> + <groupId>com.google.guava</groupId> + <artifactId>guava</artifactId> + <version>33.5.0-jre</version> + </dependency> + <dependency> <groupId>org.apache.maven.skins</groupId> <artifactId>maven-fluido-skin</artifactId> diff --git a/samples/guice/pom.xml b/samples/guice/pom.xml index 0146411e2..5016e17c7 100644 --- a/samples/guice/pom.xml +++ b/samples/guice/pom.xml @@ -33,8 +33,8 @@ <build> <plugins> <plugin> - <groupId>org.eclipse.jetty</groupId> - <artifactId>jetty-maven-plugin</artifactId> + <groupId>org.eclipse.jetty.ee11</groupId> + <artifactId>jetty-ee11-maven-plugin</artifactId> </plugin> </plugins> </build> @@ -83,14 +83,14 @@ <scope>test</scope> </dependency> <dependency> - <groupId>org.eclipse.jetty.ee10</groupId> - <artifactId>jetty-ee10-apache-jsp</artifactId> + <groupId>org.eclipse.jetty.ee11</groupId> + <artifactId>jetty-ee11-apache-jsp</artifactId> <version>${jetty.version}</version> <scope>test</scope> </dependency> <dependency> - <groupId>org.eclipse.jetty.ee10</groupId> - <artifactId>jetty-ee10-annotations</artifactId> + <groupId>org.eclipse.jetty.ee11</groupId> + <artifactId>jetty-ee11-annotations</artifactId> <version>${jetty.version}</version> </dependency> @@ -101,18 +101,6 @@ </dependency> </dependencies> - <dependencyManagement> - <dependencies> - <dependency> - <groupId>jakarta.platform</groupId> - <artifactId>jakarta.jakartaee-bom</artifactId> - <version>10.0.0</version> - <scope>import</scope> - <type>pom</type> - </dependency> - </dependencies> - </dependencyManagement> - <profiles> <profile> <id>jdk17</id> @@ -120,8 +108,8 @@ <jdk>[17,)</jdk> </activation> <properties> - <!-- needed by guice until it is compatible with jdk17+. --> - <surefire.argLine>--add-opens java.base/java.lang=ALL-UNNAMED --sun-misc-unsafe-memory-access=allow</surefire.argLine> + <!-- needed by guice until it is compatible with jdk24+. --> + <surefire.argLine>--sun-misc-unsafe-memory-access=allow</surefire.argLine> <failsafe.argLine>${surefire.argLine}</failsafe.argLine> </properties> </profile> diff --git a/samples/pom.xml b/samples/pom.xml index a40e5ddca..1ae75feda 100644 --- a/samples/pom.xml +++ b/samples/pom.xml @@ -47,13 +47,13 @@ <module>guice</module> <module>spring</module> <module>spring-mvc</module> + <module>spring-hibernate</module> </modules> <profiles> <profile> <id>deferred-for-3x</id> <modules> - <module>spring-hibernate</module> <module>spring-boot</module> <module>spring-boot-web</module> <module>spring-boot-3-web</module> diff --git a/samples/servlet-plugin/pom.xml b/samples/servlet-plugin/pom.xml index a238528af..5c5cf4294 100644 --- a/samples/servlet-plugin/pom.xml +++ b/samples/servlet-plugin/pom.xml @@ -35,22 +35,8 @@ <build> <plugins> <plugin> - <groupId>org.eclipse.jetty</groupId> - <artifactId>jetty-maven-plugin</artifactId> - <configuration> - <contextPath>/</contextPath> - <httpConnector> - <port>9180</port> - <idleTimeout>60000</idleTimeout> - </httpConnector> - <requestLog implementation="org.eclipse.jetty.server.NCSARequestLog"> - <filename>./target/yyyy_mm_dd.request.log</filename> - <retainDays>90</retainDays> - <append>true</append> - <extended>false</extended> - <logTimeZone>GMT</logTimeZone> - </requestLog> - </configuration> + <groupId>org.eclipse.jetty.ee11</groupId> + <artifactId>jetty-ee11-maven-plugin</artifactId> </plugin> <plugin> <artifactId>maven-failsafe-plugin</artifactId> @@ -93,40 +79,21 @@ <scope>test</scope> </dependency> <dependency> - <groupId>org.eclipse.jetty.ee10</groupId> - <artifactId>jetty-ee10-apache-jsp</artifactId> + <groupId>org.eclipse.jetty.ee11</groupId> + <artifactId>jetty-ee11-apache-jsp</artifactId> <version>${jetty.version}</version> <scope>test</scope> </dependency> <dependency> - <groupId>org.eclipse.jetty.ee10</groupId> - <artifactId>jetty-ee10-annotations</artifactId> + <groupId>org.eclipse.jetty.ee11</groupId> + <artifactId>jetty-ee11-annotations</artifactId> <version>${jetty.version}</version> <scope>test</scope> </dependency> - <dependency> - <groupId>org.eclipse.jetty</groupId> - <artifactId>apache-jstl</artifactId> - <version>11.0.0</version> - <type>pom</type> - <scope>test</scope> - </dependency> <dependency> <groupId>org.apache.shiro.integrationtests</groupId> <artifactId>shiro-its-support</artifactId> <scope>test</scope> </dependency> </dependencies> - - <dependencyManagement> - <dependencies> - <dependency> - <groupId>jakarta.platform</groupId> - <artifactId>jakarta.jakartaee-bom</artifactId> - <version>10.0.0</version> - <scope>import</scope> - <type>pom</type> - </dependency> - </dependencies> - </dependencyManagement> </project> diff --git a/samples/spring-hibernate/pom.xml b/samples/spring-hibernate/pom.xml index 4409da570..47c2bce99 100644 --- a/samples/spring-hibernate/pom.xml +++ b/samples/spring-hibernate/pom.xml @@ -45,6 +45,11 @@ <groupId>org.apache.shiro</groupId> <artifactId>shiro-web</artifactId> </dependency> + <dependency> + <groupId>org.apache.logging.log4j</groupId> + <artifactId>log4j-api</artifactId> + <scope>compile</scope> + </dependency> <dependency> <groupId>org.slf4j</groupId> <artifactId>jcl-over-slf4j</artifactId> @@ -120,24 +125,38 @@ <version>${jetty.version}</version> <scope>test</scope> </dependency> + <dependency> - <groupId>org.apache.taglibs</groupId> - <artifactId>taglibs-standard-spec</artifactId> - <scope>runtime</scope> + <groupId>org.eclipse.jetty</groupId> + <artifactId>jetty-plus</artifactId> + <version>${jetty.version}</version> + <scope>test</scope> </dependency> <dependency> - <groupId>org.apache.taglibs</groupId> - <artifactId>taglibs-standard-impl</artifactId> - <scope>runtime</scope> + <groupId>org.eclipse.jetty</groupId> + <artifactId>jetty-jndi</artifactId> + <version>${jetty.version}</version> + <scope>test</scope> </dependency> <dependency> <groupId>org.eclipse.jetty</groupId> - <artifactId>apache-jstl</artifactId> + <artifactId>jetty-annotations</artifactId> <version>${jetty.version}</version> - <type>pom</type> <scope>test</scope> </dependency> + + <!-- JSTL (Jakarta) --> + <dependency> + <groupId>jakarta.servlet.jsp.jstl</groupId> + <artifactId>jakarta.servlet.jsp.jstl-api</artifactId> + </dependency> + <dependency> + <groupId>org.glassfish.web</groupId> + <artifactId>jakarta.servlet.jsp.jstl</artifactId> + <version>3.0.1</version> + </dependency> + <dependency> <groupId>org.apache.shiro.integrationtests</groupId> <artifactId>shiro-its-support</artifactId> diff --git a/samples/spring-hibernate/src/main/java/org/apache/shiro/samples/sprhib/dao/BootstrapDataPopulator.java b/samples/spring-hibernate/src/main/java/org/apache/shiro/samples/sprhib/dao/BootstrapDataPopulator.java index ffac10fdb..79f8e0d6c 100644 --- a/samples/spring-hibernate/src/main/java/org/apache/shiro/samples/sprhib/dao/BootstrapDataPopulator.java +++ b/samples/spring-hibernate/src/main/java/org/apache/shiro/samples/sprhib/dao/BootstrapDataPopulator.java @@ -19,7 +19,6 @@ package org.apache.shiro.samples.sprhib.dao; import org.apache.shiro.crypto.hash.Sha256Hash; -import org.hibernate.SessionFactory; import org.springframework.beans.factory.InitializingBean; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.jdbc.core.JdbcTemplate; @@ -34,20 +33,12 @@ import javax.sql.DataSource; public class BootstrapDataPopulator implements InitializingBean { private DataSource dataSource; - @SuppressWarnings({"FieldCanBeLocal"}) - private SessionFactory sessionFactory; @Autowired public void setDataSource(DataSource dataSource) { this.dataSource = dataSource; } - // Session factory is only injected to ensure it is initialized before this runs - @Autowired - public void setSessionFactory(SessionFactory sessionFactory) { - this.sessionFactory = sessionFactory; - } - public void afterPropertiesSet() throws Exception { //because we're using an in-memory hsqldb for the sample app, a new one will be created each time the //app starts, so insert the sample admin user at startup: @@ -59,7 +50,5 @@ public class BootstrapDataPopulator implements InitializingBean { jdbcTemplate.execute("insert into users(id,username,email,password) values (1, 'admin', '[email protected]', '" + new Sha256Hash("admin").toHex() + "')"); jdbcTemplate.execute("insert into users_roles values (1, 2)"); - - } } diff --git a/samples/spring-hibernate/src/main/java/org/apache/shiro/samples/sprhib/dao/HibernateDao.java b/samples/spring-hibernate/src/main/java/org/apache/shiro/samples/sprhib/dao/HibernateDao.java index 98183840d..6bac97ba0 100644 --- a/samples/spring-hibernate/src/main/java/org/apache/shiro/samples/sprhib/dao/HibernateDao.java +++ b/samples/spring-hibernate/src/main/java/org/apache/shiro/samples/sprhib/dao/HibernateDao.java @@ -18,25 +18,18 @@ */ package org.apache.shiro.samples.sprhib.dao; -import org.hibernate.Session; -import org.hibernate.SessionFactory; -import org.springframework.beans.factory.annotation.Autowired; +import jakarta.persistence.EntityManager; +import jakarta.persistence.PersistenceContext; /** * Convenience superclass for DAOs that contains annotations for injecting the session factory * and accessing the session. */ public abstract class HibernateDao { + @PersistenceContext + EntityManager entityManager; - private SessionFactory sessionFactory; - - @Autowired - public void setSessionFactory(SessionFactory sessionFactory) { - this.sessionFactory = sessionFactory; - } - - public Session getSession() { - return sessionFactory.getCurrentSession(); + public EntityManager getSession() { + return entityManager; } - } diff --git a/samples/spring-hibernate/src/main/java/org/apache/shiro/samples/sprhib/dao/HibernateUserDAO.java b/samples/spring-hibernate/src/main/java/org/apache/shiro/samples/sprhib/dao/HibernateUserDAO.java index 28a5bd16e..ccc11363e 100644 --- a/samples/spring-hibernate/src/main/java/org/apache/shiro/samples/sprhib/dao/HibernateUserDAO.java +++ b/samples/spring-hibernate/src/main/java/org/apache/shiro/samples/sprhib/dao/HibernateUserDAO.java @@ -28,13 +28,13 @@ import java.util.List; public class HibernateUserDAO extends HibernateDao implements UserDAO { public User getUser(Long userId) { - return (User) getSession().get(User.class, userId); + return (User) getSession().find(User.class, userId); } public User findUser(String username) { Assert.hasText(username); String query = "from User u where u.username = :username"; - return getSession().createQuery(query, User.class).setParameter("username", username).uniqueResult(); + return getSession().createQuery(query, User.class).setParameter("username", username).getSingleResultOrNull(); } public void createUser(User user) { @@ -42,7 +42,7 @@ public class HibernateUserDAO extends HibernateDao implements UserDAO { } public List<User> getAllUsers() { - return getSession().createQuery("from User order by username", User.class).list(); + return getSession().createQuery("from User order by username", User.class).getResultList(); } public void deleteUser(Long userId) { diff --git a/samples/spring-hibernate/src/main/java/org/apache/shiro/samples/sprhib/model/Role.java b/samples/spring-hibernate/src/main/java/org/apache/shiro/samples/sprhib/model/Role.java index 2447455c0..cf23fd184 100644 --- a/samples/spring-hibernate/src/main/java/org/apache/shiro/samples/sprhib/model/Role.java +++ b/samples/spring-hibernate/src/main/java/org/apache/shiro/samples/sprhib/model/Role.java @@ -18,6 +18,7 @@ */ package org.apache.shiro.samples.sprhib.model; +import jakarta.persistence.FetchType; import org.hibernate.annotations.Cache; import org.hibernate.annotations.CacheConcurrencyStrategy; @@ -88,7 +89,7 @@ public class Role { this.description = description; } - @ElementCollection(targetClass = String.class) + @ElementCollection(targetClass = String.class, fetch = FetchType.EAGER) @JoinTable(name = "roles_permissions") @Cache(usage = CacheConcurrencyStrategy.READ_WRITE) public Set<String> getPermissions() { diff --git a/samples/spring-hibernate/src/main/java/org/apache/shiro/samples/sprhib/model/User.java b/samples/spring-hibernate/src/main/java/org/apache/shiro/samples/sprhib/model/User.java index 97f4746de..33de3bba5 100644 --- a/samples/spring-hibernate/src/main/java/org/apache/shiro/samples/sprhib/model/User.java +++ b/samples/spring-hibernate/src/main/java/org/apache/shiro/samples/sprhib/model/User.java @@ -18,6 +18,7 @@ */ package org.apache.shiro.samples.sprhib.model; +import jakarta.persistence.FetchType; import org.hibernate.annotations.Cache; import org.hibernate.annotations.CacheConcurrencyStrategy; @@ -53,7 +54,7 @@ public class User { private String username; private String email; private String password; - private Set<Role> roles = new HashSet<Role>(); + private Set<Role> roles = new HashSet<>(); @Id @@ -106,7 +107,7 @@ public class User { } - @ManyToMany + @ManyToMany(fetch = FetchType.EAGER) @JoinTable(name = "users_roles") @Cache(usage = CacheConcurrencyStrategy.READ_WRITE) public Set<Role> getRoles() { diff --git a/samples/spring-hibernate/src/main/java/org/apache/shiro/samples/sprhib/web/EditUserValidator.java b/samples/spring-hibernate/src/main/java/org/apache/shiro/samples/sprhib/web/EditUserValidator.java index 42c7b2dfd..f5d5944e5 100644 --- a/samples/spring-hibernate/src/main/java/org/apache/shiro/samples/sprhib/web/EditUserValidator.java +++ b/samples/spring-hibernate/src/main/java/org/apache/shiro/samples/sprhib/web/EditUserValidator.java @@ -32,7 +32,7 @@ public class EditUserValidator implements Validator { private static final String SIMPLE_EMAIL_REGEX = "[A-Z0-9._%+-]+@[A-Z0-9.-]+\\.[A-Z]{2,4}"; - public boolean supports(Class aClass) { + public boolean supports(Class<?> aClass) { return EditUserCommand.class.isAssignableFrom(aClass); } diff --git a/samples/spring-hibernate/src/main/java/org/apache/shiro/samples/sprhib/web/LoginValidator.java b/samples/spring-hibernate/src/main/java/org/apache/shiro/samples/sprhib/web/LoginValidator.java index cc7b43278..9b799c26d 100644 --- a/samples/spring-hibernate/src/main/java/org/apache/shiro/samples/sprhib/web/LoginValidator.java +++ b/samples/spring-hibernate/src/main/java/org/apache/shiro/samples/sprhib/web/LoginValidator.java @@ -26,7 +26,7 @@ import org.springframework.validation.Validator; * Validator for login. */ public class LoginValidator implements Validator { - public boolean supports(Class aClass) { + public boolean supports(Class<?> aClass) { return LoginCommand.class.isAssignableFrom(aClass); } diff --git a/samples/spring-hibernate/src/main/java/org/apache/shiro/samples/sprhib/web/SignupValidator.java b/samples/spring-hibernate/src/main/java/org/apache/shiro/samples/sprhib/web/SignupValidator.java index 1f82df670..14e3bd7df 100644 --- a/samples/spring-hibernate/src/main/java/org/apache/shiro/samples/sprhib/web/SignupValidator.java +++ b/samples/spring-hibernate/src/main/java/org/apache/shiro/samples/sprhib/web/SignupValidator.java @@ -32,7 +32,7 @@ public class SignupValidator implements Validator { private static final String SIMPLE_EMAIL_REGEX = "[A-Z0-9._%+-]+@[A-Z0-9.-]+\\.[A-Z]{2,4}"; - public boolean supports(Class aClass) { + public boolean supports(Class<?> aClass) { return SignupCommand.class.isAssignableFrom(aClass); } diff --git a/samples/spring-hibernate/src/main/webapp/WEB-INF/applicationContext.xml b/samples/spring-hibernate/src/main/webapp/WEB-INF/applicationContext.xml index 7a4f2dd9d..05bb0a28e 100644 --- a/samples/spring-hibernate/src/main/webapp/WEB-INF/applicationContext.xml +++ b/samples/spring-hibernate/src/main/webapp/WEB-INF/applicationContext.xml @@ -50,28 +50,30 @@ <property name="username" value="sa"/> </bean> - <!-- Hibernate SessionFactory --> - <bean id="sessionFactory" class="org.springframework.orm.hibernate5.LocalSessionFactoryBean"> + <!-- Replace Hibernate 5 SessionFactory with JPA EntityManagerFactory (Hibernate 6 provider) --> + <bean id="entityManagerFactory" class="org.springframework.orm.jpa.LocalContainerEntityManagerFactoryBean"> <property name="dataSource" ref="dataSource"/> - <!-- Scan packages for JPA annotations --> <property name="packagesToScan" value="org.apache.shiro.samples.sprhib.model"/> - <property name="hibernateProperties"> - <props> - <prop key="hibernate.dialect">org.hibernate.dialect.HSQLDialect</prop> - <prop key="hibernate.jdbc.fetch_size">100</prop> - - <!-- Because we're using an in-memory database for demo purposes (which is lost every time the app - shuts down), we have to ensure that the HSQLDB DDL is run each time the app starts. The - DDL is auto-generated based on the *.hbm.xml mapping definitions below. --> - <prop key="hibernate.hbm2ddl.auto">update</prop> - <prop key="hibernate.cache.region.factory_class">org.hibernate.cache.ehcache.EhCacheRegionFactory</prop> - </props> + <property name="jpaVendorAdapter"> + <bean class="org.springframework.orm.jpa.vendor.HibernateJpaVendorAdapter"> + <!-- Optional; you can omit dialect and let Hibernate detect it --> + <property name="databasePlatform" value="org.hibernate.dialect.HSQLDialect"/> + </bean> + </property> + <property name="jpaPropertyMap"> + <map> + <entry key="hibernate.hbm2ddl.auto" value="update"/> + <entry key="hibernate.jdbc.fetch_size" value="100"/> + <!-- If you need 2nd-level cache on Hibernate 6, prefer JCache: + hibernate.cache.region.factory_class=org.hibernate.cache.jcache.JCacheRegionFactory + plus a javax.cache provider (e.g., Ehcache 3 or Caffeine) --> + </map> </property> </bean> - <!-- Transaction support beans --> - <bean id="transactionManager" class="org.springframework.orm.hibernate5.HibernateTransactionManager"> - <property name="sessionFactory" ref="sessionFactory"/> + <!-- Replace HibernateTransactionManager with JpaTransactionManager --> + <bean id="transactionManager" class="org.springframework.orm.jpa.JpaTransactionManager"> + <property name="entityManagerFactory" ref="entityManagerFactory"/> </bean> <tx:annotation-driven/> diff --git a/samples/spring-hibernate/src/main/webapp/WEB-INF/web.xml b/samples/spring-hibernate/src/main/webapp/WEB-INF/web.xml index 9b69c25a2..358011b00 100644 --- a/samples/spring-hibernate/src/main/webapp/WEB-INF/web.xml +++ b/samples/spring-hibernate/src/main/webapp/WEB-INF/web.xml @@ -52,22 +52,12 @@ <!-- =================================================================== - Filters - =================================================================== --> - <filter> - <filter-name>openSessionInViewFilter</filter-name> - <filter-class>org.springframework.orm.hibernate5.support.OpenSessionInViewFilter</filter-class> - </filter> - <!-- Shiro Filter is defined in the spring application context: --> <filter> <filter-name>shiroFilter</filter-name> <filter-class>org.springframework.web.filter.DelegatingFilterProxy</filter-class> </filter> - <filter-mapping> - <filter-name>openSessionInViewFilter</filter-name> - <url-pattern>/s/*</url-pattern> - </filter-mapping> - <filter-mapping> <filter-name>shiroFilter</filter-name> <url-pattern>/s/*</url-pattern> diff --git a/samples/spring-mvc/pom.xml b/samples/spring-mvc/pom.xml index f597ffd7e..0fe871383 100644 --- a/samples/spring-mvc/pom.xml +++ b/samples/spring-mvc/pom.xml @@ -143,7 +143,6 @@ <dependency> <groupId>jakarta.servlet.jsp.jstl</groupId> <artifactId>jakarta.servlet.jsp.jstl-api</artifactId> - <version>3.0.2</version> </dependency> <dependency> <groupId>org.glassfish.web</groupId>
