2016-08-12 3 views
-3
public boolean addUser(User user) throws ClassNotFoundException, SQLException { 
    try { 
     readWriteLock.writeLock().lock(); 
     String sql ="INSERT INTO User VALUES ("+0+",'"+user.getName()+"','"+user.getType()+"',AES_ENCRYPT('"+user.getPassword()+"','')) "; 
     Connection connection = DBConnection.getConnection(); 
     Statement stm = connection.createStatement(); 
     int res = stm.executeUpdate(sql); 
     return res > 0; 
    } finally { 
     readWriteLock.writeLock().unlock(); 
    } 
} 

예외를 찾을 수 없습니다라고오류 클래스

java.rmi.UnmarshalException: Error unmarshaling return; nested exception is: 
    java.lang.ClassNotFoundException: com.mysql.jdbc.exceptions.jdbc4.MySQLSyntaxErrorException (no security manager: RMI class loader disabled) 

내 오류를 해결할 수없는 ... 은 내가 돈 원격으로이 방법 .. 를 호출; t 자바

를 사용하여이 같은 암호를 암호화하는 방법을 알고
+0

'java.rmi.UnmarshalException'! RMI를 사용하여이 메소드를 원격으로 호출 하시겠습니까? 그렇다면 질문에 언급해야한다고 생각하지 않습니까? –

+0

예 .. 원격. 실수로 유감입니다. –

답변

0

따라서 메소드가 RMI 서버에서 MySQLSyntaxErrorException으로 실패하고 예외가 다시 전송되지만 RMI 클라이언트에 설치된 MySQL JDBC 드라이버가 없으므로 예외 클래스를 해결할 수 없으며 실제 오류 메시지가 손실되면 t는 ClassNotFoundException으로 바뀝니다.

  • 는 RMI 클라이언트의 클래스 경로에 MySQL의 JDBC 드라이버를 추가

    당신은 몇 가지 선택이있다.
    RMI 클라이언트에 MySQL 액세스가 필요 없기 때문에 이것은 잘못된 솔루션처럼 보입니다.

  • RMI 서버에서 예외를 catch하고 JDK 기본 제공 예외를 throw합니다. SQLSyntaxErrorException.
    이 클래스는 RMI 클라이언트에 존재하므로 실제 오류가 무엇인지 알 수 있습니다.

  • RMI 서버에서 예외를 catch하고 서버의 로그 파일에 오류 메시지를 기록한 다음 완전히 일반적인 예외를 throw합니다. RuntimeException("Error adding user. See log file on server").
    이렇게하면 RMI 서버 내부가 클라이언트에서 숨겨져 해커로부터 서버를 보호 할 수 있습니다.

+0

고마워요 .. 알았어요. –