2015-10-23 4 views
0

Я получаю java.lang.ClassNotFoundException: com.example.pricing.shared.MyClass, и я не понимаю, почему, учитывая, что класс находится в пути к классам.Проблема с загрузкой класса Class Session Session в общедоступной библиотеке

Вот конфиг я использую: У меня есть 2 военные файлы в том же экземпляре Tomcat 7:

  1. ROOT.war указывающие на www.example.com/
  2. app.war указывая на www.example .com/приложение/*

Оба файла содержат 2 разделяемые библиотеки:

  1. commons.jar
  2. pricing.jar

commons.jar Lib содержит SessionDAO класс, который расширяет Сиро AbstractSessionDAO. Мой класс SessionDAO представляет собой базовую реализацию, которая сохраняет сеанс Shiro в таблице MySQL (объект VARCHAR id, объект объекта BLOB).

Теперь, когда я пытаюсь получить доступ к URL из app.war модуля я получаю следующее исключение при десериализацией сессии из БД:

org.apache.shiro.session.SessionException: Class not found exception while reading Session from input stream! 
com.example.dao.SessionDAO.deserialize(SessionDAO.java:97) 
... (omitted) 

Root cause: 
java.lang.ClassNotFoundException: com.example.pricing.shared.MyClass 
java.net.URLClassLoader$1.run(URLClassLoader.java:366) 

Метод неисправна Deserialize выглядит следующим образом:

private static Session deserialize(ResultSet resultSet, String col){ 
    ByteArrayInputStream bais=null; 
    ObjectInputStream ins=null; 
    Session res=null; 
    try{ 
     byte[] barray=resultSet.getBytes(col); 
     if(barray!=null){ 
      bais=new ByteArrayInputStream(barray); 
      ins=new ObjectInputStream(bais); 
      res=(Session)ins.readObject(); 
     } 
    }catch(IOException e){ 
     throw new SessionException("IO exception while reading Session from input stream!",e); 
    }catch(ClassNotFoundException e){ 
     throw new SessionException("Class not found exception while reading Session from input stream!",e);//the one causing the issue 
    }catch(SQLException e){ 
     throw new SessionException("SQL exception while reading Session from input stream!",e); 
    }finally{ 
     try{ 
      ins.close(); 
     }catch(NullPointerException|IOException e){} 
     try{ 
      bais.close(); 
     }catch(NullPointerException|IOException e){} 
    } 
    return res; 
} 

У вас есть идеи по устранению этой проблемы?

ответ

0

Библиотеки Широ были в папке Tomcat/lib, в то время как 2 баночки были в папке WEB-INF/lib. Передвижные библиотеки Libo в WEB-INF/lib исправили проблему.