Java连接SAS服务器提交SAS代码运行例子:
import java.io.BufferedOutputStream; import java.io.FileOutputStream; import org.omg.CORBA.StringHolder; import com.sas.iom.SAS.IBinaryStream; import com.sas.iom.SAS.IFileService; import com.sas.iom.SAS.IFileref; import com.sas.iom.SAS.ILanguageService; import com.sas.iom.SAS.IWorkspace; import com.sas.iom.SAS.IWorkspaceHelper; import com.sas.iom.SAS.StreamOpenMode; import com.sas.iom.SASIOMDefs.OctetSeqHolder; import com.sas.services.connection.BridgeServer; import com.sas.services.connection.ConnectionFactoryConfiguration; import com.sas.services.connection.ConnectionFactoryInterface; import com.sas.services.connection.ConnectionFactoryManager; import com.sas.services.connection.ConnectionInterface; import com.sas.services.connection.ManualConnectionFactoryConfiguration; import com.sas.services.connection.Server; public class DownloadOutput { /** * @param args */ public static void main(String[] args) { try { String classID = Server.CLSID_SAS; String host = "t3207.na.sas.com"; int port = 8591; Server server = new BridgeServer(classID, host, port); // TODO Auto-generated method stub ConnectionFactoryConfiguration cxfConfig = new ManualConnectionFactoryConfiguration( server); ConnectionFactoryManager cxfManager = new ConnectionFactoryManager(); ConnectionFactoryInterface cxf = cxfManager.getFactory(cxfConfig); String user = "sasdemo"; String password = "Orion123"; ConnectionInterface cx = cxf.getConnection(user, password); org.omg.CORBA.Object obj = cx.getObject(); IWorkspace sasWorkspace = IWorkspaceHelper.narrow(obj); IFileService fileService = sasWorkspace.FileService(); StringHolder outstring = new StringHolder(); IFileref fileRef = fileService.AssignFileref("out", "TEMP", "", "", outstring); ILanguageService languageService = sasWorkspace.LanguageService(); String sasCode = "goptions reset=all gsfname=out gsfmode=replace dev=pdf; proc gchart data=sashelp.class;vbar age / discrete;run;quit;"; languageService.Submit(sasCode); IBinaryStream fileStream = fileRef .OpenBinaryStream(StreamOpenMode.StreamOpenModeForReading); BufferedOutputStream fos = new BufferedOutputStream( new FileOutputStream("c:\\temp\\test.pdf")); boolean readMore = true; OctetSeqHolder tempData = new OctetSeqHolder(); while (readMore) { fileStream.Read(1024, tempData); if (tempData.value.length == 0) { readMore = false; } else { fos.write(tempData.value); } } fileStream.Close(); fos.close(); cx.close(); } catch (Exception e) { e.printStackTrace(); } } }
... View more