농 행 심증 통 자바 개발 인터페이스 연결 코드(jni 연결)

30083 단어 JAVA증권.
최근 프로젝트 개발 은 농업 은행 에 연 결 된 인터페이스 가 필요 합 니 다.메시지 인 터 페 이 스 는 심 천 통 을 통 해 연 결 된 농업 은행 입 니 다.심 천 통 이 제공 하 는 개발 인터페이스,c 의 컴 파일 코드 에 따라 개 발 된 자바 류 는 jni 호출 을 이용 합 니 다.
자바 호출 클래스 는 다음 과 같 습 니 다.관련 c 코드(dll 또는 so 파일 을 프로젝트 루트 디 렉 터 리 에 놓 음)와 함께 jar 패키지 로 포장 하여 디 결합 을 실현 할 수 있 습 니 다.
package   com.sscc.fdep;
 
import java.io.BufferedInputStream;
import java.io.File;
import java.io.FileOutputStream;
import java.io.IOException;
import java.io.InputStream;
 
/**
 * 
 * @author huanghe
 *   jni   c          
 */
public class mrapi 
{ 
static 
{ 
			//System.loadLibrary("mrapi"); 
	try {
		loadLib("mrapi");
	} catch (IOException e) {		
		e.printStackTrace();
	}
}
 
public static void main(String[] args) 
{ 
 
}  
 
/********************************* FDEP V3 **********************************/
 
/*    ,     
 * return: 0-failed; 1-OK
   App AppPwd  c    AppId AppPwd,        C       oConnInfo     
 */
public native static int MrInit(String App,String AppPwd, String Ip,short Port,String Ipbak, short Portbak);
 
 
 
/*      ,   SourceAppID         App
 * return:    ""-       pkgId-      
   psPkg        ,     C   pMsgPropery      
 */
 
public native static String MrSend( byte[] psPkg, String SourceUserID,String SourceAppID, String DestUserID, String DestAppID,
String PkgID, String CorrPkgID, String UserData1, String UserData2, String ExpiredAbsTime, byte flag, byte Protocltype,int iMillSecTimeo);
 
 
 
 
//return "NULL"-            pkID(64byte) + CorrpkID(64byte) + sourceUserID(64byte) + sourceAppID(64byte) +destUserID(64byte) + UserData1(256byte) + UserData2(256byte) + data        7    C   pMsgPropery      ,data       
 
public native static byte[] MrReceive1(String sAppID,String SourceUserID,String SourceAppID, String DestUserID, String DestAppID,
String PkgID, String CorrPkgID, String UserData1, String UserData2, String ExpiredAbsTime, byte flag, byte Protocltype,int iMillSecTimeo);
 
 
 
/*               
 * return: 0-link_not_ok; 1-link_ok
      mrinit    app
 */
public native static int MrIsLinkOK(String sAppID);
 
/*    
     mrinit    app*/
public native static void MrDestroy(String sAppID);
 
 
/********************************* FDEP V4 **********************************/
 
/*    ,     
 * return: 0-failed; 1-OK
   App AppPwd  c    AppId AppPwd,        C       oConnInfo     
 */
public native static int Mr2Init(String App,String AppPwd, String Ip,short Port,String Ipbak, short Portbak);
 
 
 
/*      ,   SourceAppID         App
 * return:    ""-       pkgId-      
   psPkg        ,     C   pMsgPropery      
 */
 
public native static String Mr2Send( byte[] psPkg, String SourceUserID,String SourceAppID, String DestUserID, String DestAppID,
String PkgID, String CorrPkgID, String UserData1, String UserData2, String MsgType, byte flag, byte BizType, byte Priority, byte SensitiveLevel, int iMillSecTimeo);
 
 
 
 
//return "NULL"-            pkID(64byte) + CorrpkID(64byte) + sourceUserID(64byte) + sourceAppID(64byte) +destUserID(64byte) + UserData1(256byte) + UserData2(256byte) + data        7    C   pMsgPropery      ,data       
 
public native static byte[] Mr2Receive1(String sAppID,String SourceUserID,String SourceAppID, String DestUserID, String DestAppID,
String PkgID, String CorrPkgID, String UserData1, String UserData2, int iMillSecTimeo);
 
 
 
/*               
 * return: 0-link_not_ok; 1-link_ok
      mrinit    app
 */
public native static int Mr2IsLinkOK(String sAppID);
 
/*    
     mrinit    app*/
public native static void Mr2Destroy(String sAppID);
 
 
/*       
 * return       
 */
public native static byte[]  Mr2GetVersion();
 
 
/*    ID
 * return PkgID
 */
public native static byte[]  Mr2CreatePkgID(String szHandleAppID);
 
/*             
/ return: -1:        0:       1:  
*/
public native static int  Mr2GetPeerUserStat(String szHandleAppID,String szPeerUserID);
 
 
/*         
 * return: 0:    ,<0    
 */
public native static int  Mr2RegRecvCondition(String szHandleAppId,String szSrcUserId, String szSrcAppId, String szDestUserId, String szDestAppId, 
String szPkgId, String szCorrPkgId, String szUserData1,String szUserData2) ;
 
 
///  "NULL,errmsg"-           errcode(4byte)+pkID(64byte) + CorrpkID(64byte) + sourceUserID(32byte) + sourceAppID(32byte) +destUserID(32byte) + destAppID(32byte)+UserData1(256byte) + UserData2(256byte) + data        7    C   pMsgPropery      ,data       
///     errcode= "0000"     ,  errcode  "0000"   ,           ,     data   ; 
public native static byte[] Mr2Receive3(String sAppID,String SourceUserID,String SourceAppID, String DestUserID, String DestAppID,
String PkgID, String CorrPkgID, String UserData1, String UserData2, int iMillSecTimeo);
//        dll  so  
private synchronized  static void loadLib(String libName) throws IOException {   
    String systemType = System.getProperty("os.name");   
    String libExtension = (systemType.toLowerCase().indexOf("win")!=-1) ? ".dll" : ".so";        
    String libFullName = libName + libExtension;   
        
    String nativeTempDir = System.getProperty("java.io.tmpdir");   
        
    InputStream in = null;   
    BufferedInputStream reader = null;   
    FileOutputStream writer = null;   
    
    String[] fileType = new String[8];
	String resource = "/win/";      	
	if(systemType.toLowerCase().indexOf("win")!=-1){    		
		fileType = new String[]{"mr2api.h","mrapi_log.conf","mrapi.dll","mrapi.h","mrapi.lib"};    		    		
	}else{   		
		fileType = new String[]{"mr2api.h","mrapi_log.conf","libmrapi.so","mrapi.h","libinfo.txt","history.txt"};
		resource = "/hp/";
		libFullName = "libmrapi"+libExtension;
	}   
    
    
    File extractedLibFile = new File(nativeTempDir+File.separator+libFullName);  
    File file ;
  //  System.out.println(extractedLibFile.getPath());
    if(!extractedLibFile.exists()){         	  	    	
        try {
        	
        	for(String fname:fileType){
        		 in = mrapi.class.getResourceAsStream(resource + fname);        		 
        		  if(in!=null){   
                 	 reader = new BufferedInputStream(in);   
                 	 file = new File(nativeTempDir+File.separator+fname);
                      writer = new FileOutputStream(file);
                      byte[] buffer = new byte[1024];   
                      
                      while (reader.read(buffer) > 0){   
                          writer.write(buffer);   
                          buffer = new byte[1024];   
                      }
                      if(in!=null)   
                          in.close();   
                      if(writer!=null)   
                          writer.close();
                 }   
        		
        	}                                          
        } catch (IOException e){   
            e.printStackTrace();   
        } finally {   
            if(in!=null)   
                in.close();   
            if(writer!=null)   
                writer.close();   
        }   
    } 
    
    System.load(extractedLibFile.getPath());   
    
	}
}

————————————————
      jar       ,      maven    ,    :
![         ](https://img-blog.csdnimg.cn/20200403165505977.png)

좋은 웹페이지 즐겨찾기