2014-10-29 1 views
0

그래서 개발중인 모바일 android 앱에 연결할 Java 웹 서비스를 구축했습니다. Java & Android를 처음 접했고 조금 어려움이 있습니다. 나는 내 안드로이드가 Restful Web Service에 로그인 세부 사항을 보내도록했지만, 사용자를 위해 만들어진 DB 테이블의 세부 사항을 확인하려고 할 때 편안한 웹 서비스가 실패한다. 나는 그것이 내가 로그인하게 할 수있는 체크 크리 덴셜 선언문을 주석 처리하기 때문에 체크 크리 덴셜 문제라는 것을 알고있다. 내 코드의 자격 증명 확인 문에서 어디서 잘못되었는지 파악할 수 없습니다. 누군가 도움이된다면 도움이 될 수 있습니다. 내 Restful 서비스의 Login.class는 다음과 같습니다. 또한 나는 모든 것을 tomcat7에서 돌리고 있습니다.Java Restful Web Service 로그인 자격 증명 오류

private boolean checkCredentials(String uname, String pwd){ 

     System.out.println("Inside checkCredentials"); 
     boolean result = false; 
     if(Utitlity.isNotNull(uname) && Utitlity.isNotNull(pwd)){ 
      try { 
       result = DBConnection.checkLogin(uname, pwd); 
       // System.out.println("Inside checkCredentials try "+result); 
      } catch (Exception e) { 
       // TODO Auto-generated catch block 
       // System.out.println("Inside checkCredentials catch"); 
       result = false; 
      } 
     }else{ 
      System.out.println("Inside checkCredentials else"); 
      result = false; 
     } 

     return result; 
    } 

답변

0

코드에 몇 가지 문제가 있습니다. 주된 이유는 checkLogin()에 던져진 예외를 "체크 아웃하지 않은"경우처럼 처리하는 것입니다.

시스템 오류를 자동으로 무시하고 올바른 비즈니스 사례처럼 처리하고 싶습니까?

모든 경우에 이것이 잘못된 것은 아니지만 명시 적으로 디자인 결정을 내리고 예외에 대한 정보를 기록하면 뭔가 잘못되었다는 것을 알 수 있습니다.

더 나은 것은 catch 절을 실제로 throw 될 것으로 예상되는 예외로 제한하는 것입니다. (그렇다하더라도 예외에 대한 정보를 기록하십시오!)

DBConnection.checkLogin()과 같은 정적 방법을 사용하면 더 많은 디자인 문제가 발생합니다. 그것은 일할 수도 있고, 어떤 경우에는 편리 할 수도 있지만, 결국에는 당신을 물 것입니다.

즉각적인 문제를 찾으려면 catch 절에 Exception의 스택 추적을 인쇄하십시오. 호출 직후에 checkLogin() 호출 결과를 try-block에 기록하십시오. 해당 정보가 인쇄되면 예외가 발생하지 않고 문제가 checkLogin() 안에 있습니다.

+0

그래서 저는 자바 프로그래밍을 처음 접했습니다. 예외의 원인이되는 정보를 로깅하고 표시하는 방법은 무엇입니까? – Baroti

+0

지금 당장은 문제를 발견하기 위해 e.printStackTrace(); catch 블록에서 수행 할 것입니다. 영구 로깅의 경우 몇 가지 로깅 프레임 워크가 있습니다. Java (java.util.logging)에 내장 된 것 외에 가장 많이 사용되는 것은 Log4J, SLF4J 및 Apache 공유 로깅입니다. –