2012-11-04 4 views
0

을 사용하여 featureset를 직렬화 해제 할 수 없습니다. windows sdk java edition에 digitalpersona one touch를 사용하여 지문을 일치시키는 비누 webservice 메서드를 만들려고합니다. 클라이언트 측 애플릿에서 featureset를 캡처하여 서버 측 템플릿과 비교합니다. 하지만 그것을 deserialize하고 기능 집합을 다시 만들어서 템플릿과 비교할 수 있도록해야합니다.DigitalPersona Sdk java edition

//This is for template retrieval: (no problem here) 

     String dbTemplate = result.getString("template"); 
      byte[] byteArray = new byte[1]; 
      byteArray = hexStringToByteArray(dbTemplate); 
      DPFPTemplate template = DPFPGlobal.getTemplateFactory().createTemplate(); 
      template.deserialize(byteArray); 



      byte[] fsArray = new byte[1]; 
      fsArray = hexStringToByteArray(ftSet); 

     //the problem is here, I've already converted it back into bytearray[] but i need to deserialize it and create the feature set again. 

      featureSet.deserialise(fsArray); 
      DPFPFeatureSet features = extractFeatures(sample, DPFPDataPurpose.DATA_PURPOSE_VERIFICATION); 

//This is for matching features and template 
      DPFPVerification matcher = DPFPGlobal.getVerificationFactory().createVerification(); 
      DPFPVerificationResult result1 = matcher.verify(features, template); 
      if (result1.isVerified()) { 

       return "The fingerprint was VERIFIED."; 

      } else { 
       return "The fingerprint was NOT VERIFIED."; 

      } 

이 제발 도와주세요 :

나는 내가 확인을 위해 사용할 수 있도록 기능이 설정 재현하는 방법을 잘 모릅니다.

답변

0

여기서 할 수있는 가장 좋은 방법은 bytearray를 문자열로 변환하지 않는 것입니다. 데이터베이스에 저장하는 경우 자동으로 바이트 배열로 저장할 수 있습니다 (BLOB에 bytearray를 허용 할 수 있기 때문에).

이 (그냥 예) 템플릿을 액세스 할 때

PreparedStatement st=con.prepareStatement("INSERT INTO EMPLOYEE(employee_id,template)"+"values(?,?)"); 
st.setInt(1,23); 
st.setBytes(2, enroller.getTemplate().serialize()); 

Statement st = con.createStatement(); 
ResultSet rec = st.executeQuery("SELECT * FROM EMPLOYEE WHERE EMPLOYEE_ID=3"); 

그런 다음, (단지 내가 그것을 37 페이지의 주위에 생각, SDK를 따라) 직렬화 Onetouch java sdk ==== 링크과 같은 내용을 추가 할 수 있습니다

샘플은 아래에서 사용할 수 있습니다.

while(rec.next()){ 
    blob = rec.getBlob("template"); 
    int blobLength = (int)blob.length(); 
    blobAsBytes = blob.getBytes(1, blobLength); 
} 
templater.deserialize(blobAsBytes);   
verificator.setFARRequested(DPFPVerification.MEDIUM_SECURITY_FAR); 
DPFPVerificationResult result = verificator.verify(fs, templater); 
if (result.isVerified()) 
    System.out.print("The fingerprint was VERIFIED.");