2014-10-29 1 views
0

이 invokeDataControl 메소드를 해결하는 데 도움이되는 사항에 크게 감사드립니다. 문제의 전체적인 내용을 보려면 아래 링크를 찾으십시오. 기본적으로 오라클/자바 MAF 예제를 실행하여 개념을 이해하고 중요한 이동/중지 상황에 대해 사용자에게 제시하려고했습니다.Oracle MAF WebService invokeDataControlMethod SOAP 오류

환경 : https://java.net/projects/smuenchadf/pages/ADFMobile OR "http://deepakcs.blogspot.com/2013/06/offline-data-synchronization-for-adf.html" 4) MAC OS 10.9 5) (12C)에서 로직을 DSI037 : 2.0.1 3) 실시 예 시도

1) JDeveloper의 12.1.3.0.0 2) MAF 6) 오류 메시지

[심각 - oracle.adfmf.framework - HttpServiceConnection - 로그] 연결 오류 : - oracle.adfmf.framework - HttpTransport - 심각 parseResponse 500 응답 [에러 : {0}] { 1} [심각 - oracle.adfmf.framework - SoapTransportLayer - invokeSoapRequest]가 발생 예외 동안 SOAP 요청을 를 EndPoint 호출 : http://XXX.XXX.XXX.XXX:80/EJBSyncWebServiceApp/SessionFacadeBeanService 이 SOAPAction을 "http://service.soap.dsid.com/persistDepartments" 예외 : HTTP 상태 코드 500 내부 서버 오류 : 서버를 처리하지 못하도록하는 예상치 못한 상황 발생 의뢰.

7) 상세 정보 :

다음 코드가 실행되었습니다. 방법과 다른 모든 HTTP 분석기에서 잘 작동하거나 개별적으로 실행될 때 래퍼 AdfmfJavaUtilities.invokeDataControlMethod

public void syncDataFromOfflineToOnline() { 

     Trace.log(Utility.FrameworkLogger, Level.FINE, this.getClass(), "syncDataFromOfflineToOnline", 
       "Executing syncDataFromOfflineToOnline Method"); 
    try { 
     Connection conn = DBConnectionFactory.getConnection(); 
     conn.setAutoCommit(false); 
     PreparedStatement pStmt = 
      conn.prepareStatement("SELECT DEPARTMENT_ID, DEPARTMENT_NAME, LOCATION_NAME, STATUS from DEPARTMENTS WHERE STATUS IN (?, ?, ?)"); 
     pStmt.setString(1, STATUS_NEWLY_CREATED); 
     pStmt.setString(2, STATUS_MODIFIED); 
     pStmt.setString(3, STATUS_DELETED); 
     ResultSet rs = pStmt.executeQuery(); 
     while (rs.next()) { 

      List namesList = new ArrayList(1); 
      List paramsList = new ArrayList(1); 
      List typesList = new ArrayList(1); 


      Departments dept = new Departments(); 
      dept.setDepartmentId(rs.getInt("DEPARTMENT_ID")); 
      dept.setDepartmentName(rs.getString("DEPARTMENT_NAME")); 
      dept.setLocationName(rs.getString("LOCATION_NAME")); 
      dept.setStatus(STATUS_NOT_CHANGED); 


      if (rs.getString("STATUS").equals(STATUS_NEWLY_CREATED)) { 
       System.out.println("I got a STATUS_NEWLY_CREATED"); 
       GenericType gtDept = 
        GenericTypeBeanSerializationHelper.toGenericType("MYWS.Types.persistDepartments.arg0", 
                    dept); 
       namesList.add("arg0"); 
       paramsList.add(gtDept); 
       typesList.add(Object.class); 

       AdfmfJavaUtilities.invokeDataControlMethod("MYWS", null, "persistDepartments", namesList, 
                  paramsList, typesList); 
       //Once the data sync with online, change the status for the row as STATUS_NOT_CHANGED 

       PreparedStatement pStmt1 = 
        conn.prepareStatement("UPDATE DEPARTMENTS SET STATUS=? WHERE DEPARTMENT_ID=?"); 
       pStmt1.setString(1, STATUS_NOT_CHANGED); 
       pStmt1.setInt(2, rs.getInt("DEPARTMENT_ID")); 
       pStmt1.execute();    
       conn.commit(); 

       <<< more codes >>> 

답변

1

에 나는이 문제를 직면했을 때 (버튼으로 "persistDepartments을"결합)하지만되지 않습니다.

typesList.add (Object.class)를 typesList.add (GenericType.class)로 변경하십시오.

+0

고마워요. 내가 진술을 변경했지만 여전히 같은 오류가 발생했습니다. "persistDepartments"DataControl 개체에서 명령 단추를 사용하여 양식 ("arg0")을 만들면 정상적으로 작동하지만 invokeDataControlMethod를 통해 프로그래밍 방식으로 호출 될 때 왜 작동하지 않는지 이해하지 못합니다. 나에게도 오류 메시지는 일반적인 것으로 보입니다. 그렇다면 웹 응용 프로그램에 대한 약간의 도움이 도움이 될 수 있습니까? –

+0

변경되었지만 동일한 오류가 발생했습니다. form ("arg0")을 사용하여 하나의 레코드를 추가해도 invokeDataControlMethod를 통해 프로그래밍 방식으로 호출 할 때 작동하지 않습니다. 나에게도 오류 메시지는 일반적인 것으로 보입니다. 그렇다면 웹 애플리케이션 지식을 가진 사람이 도움이 될 수 있습니까? 오류 메시지 [SEVERE - oracle.adfmf.framework - HttpServiceConnection - 로그] 연결 오류 : 500 [SEVERE - oracle.adfmf.framework - HttpTransport - parseResponse] 응답 [오류 : {0}] : {1} [SEVERE - oracle .adfmf.framework - SoapTransportLayer - invokeSoapRequest] –