通過SAS connect drvier for java 來訪問SAS

 

通過SAS connect drvier for java 來訪問SAS
 
通過sas share*.net可以在java中使用jdbc來訪問SAS數據集,但是通過這種方式只能訪問SAS數據集,而無法執行SAS的命令,而通過SAS connect drvier for java 則提供了在JAVA中訪問SAS,執行SAS命令的功能,如調用SAS宏
 
系統請求
服務器端需安裝SAS,有SAS/CONNECT授權
客戶端有JAVA JDK,有如下2個sas 提供的java包
connect.jar
sas.core.jar
 
開始準備
在服務器上啓動SPAWNER服務器,用來接收客戶端請求,請看我另一篇文章《SAS spawner 使用》,如下命令
spawner -c tcp -security
需要注意的是,當前啓動該進程的用戶必須有以下權限:
作爲操作系統方式運行
增加配額
批作業處理
 
啓動SAS,確保SPAWNER能夠正常接收用戶請求,如下命令
%let tcpsec=_prompt_;
signon hostname;
signoff hostname;
 
當前訪問用戶必須具有批作業處理權限,否則不能成功連接
 
JAVA應用
在java中,通過使用 TelnetConnectClient 類來提交SAS請求,如下代碼
 
import com.sas.net.connect.*;
import java.util.*;
import java.sql.*;
import java.util.*;
import java.io.*;
import java.io.DataInputStream;
import java.io.DataOutputStream;
 
public class JConnect {
 public JConnect() {
 }
 
 static public void main(String[] argv){
Properties info = new Properties();
info.setProperty("prompt1", "Username:");//指定訪問的用戶名,該用戶必須具有批作業權限
info.setProperty("response1", "sassrv");
info.setProperty("prompt2", "Password:");
info.setProperty("response2", "sas");
info.setProperty("prompt3", "Hello>");
info.setProperty("response3", "sas");
 
info.setProperty("sasPortTag", "PORT=");                                                                 
                try {
                        TelnetConnectClient client=new TelnetConnectClient(info);
                        client.connect("wuyz",23); //SPAWNER所在主機和端口
                        int ver1=client.getMajorSasVersion();
                        int ver2=client.getMinorSasVersion();
                        String driver=client.getDriverName();
                        System.out.println(driver);
                        client.rsubmit("data _null_;put 'ok';run;");
                        String lines=client.getEditLines();
                        String logs=client.getLogLines();
                        System.out.println(client.isConnected()+driver+lines+ver1+ver2+logs);
                        client.disconnect();
                } catch (ConnectException e) {
 
                        e.printStackTrace();
                }
 
              return;
       }
 
 

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章