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>

Reply via email to