Beispiel für JSP und Java Anwendungen mit Eclipse
Verfasst von heichi am 31 Mai, 2006 - 08:22
Hallo Leute,
ich bin neu auf diesem Gebiet, und möchte fragen ob jemand vielleicht ein kleines Beispiel für jsp oder java Anwendung unter Eclipse mit Verwendung der Integration Technologies hat. Welche sind die Voraussetzungen, was muß man installieren (außer Eclipse und SAS 9)?
Danke im voraus für die Mühe :-)
lg Heini
»
- Anmelden oder Registrieren um Kommentare zu schreiben

Die eine Hälfte der Antwort :-)
Hallo!
Anspruchsvolle Frage das - insbesondere: "was muß man installieren?" ... habe mir daher mal die Mühe gemacht und mir eine
frische Maschine gesucht um rauszufinden, wie genau man welche Komponenten installieren muß, damit man in Eclipse gegen Integration Technology entwickeln kann.
... wobei das natürlich erst die Hälfte der Antwort ist. Im folgenden ist das Vorgehen bis zum Laufen-Lassen eines einfachen Java-Programms mit SAS/IT-Zugriff in Eclipse beschrieben. Bis zu JSPs hab' ich's in meinen Experimenten noch nicht gebracht.
Die Antwort, was man installieren muß, macht einem SAS 9 ausgesprochen leicht: Die Installation sollte natürlich erfolgen
mit Hilfe des Software Navigator auf Basis eines Software-Depots (mit jeder anderen Technik erwischt man nie alle Komponenten -
abgesehen davon, dass eine freihändige Konfiguration beliebig aufwendig ist). Sowohl unter dem Deployment-Typ "Personal" ("Install and configure SAS Software only on this machine using a sample deployment plan") als auch unter dem Deployment-Typ "Advanced" ("Install and configure SAS on a single machine or as part of a multi-machine deployment") gibt es den Plan "Integration Technology servers, one machine".
Folgt man diesem Installations-Plan nennt SAS die folgenden zu installierenden und zu konfigurierenden Komponenten:
- Software to Install
SAS 9.1 Foundation
SAS Management Console
SAS Foundation Services
- Software to Configure
SAS Metadata Server
SAS Workspace Server
SAS Stored Process Server
SAS Object Spawner
Dann kann eigentlich nur noch eines schiefgehen, nämlich das Anlegen technischer User und die Ausstattung dieser Benutzer mit den richtigen Rechten:
Anzulegen sind - unter Windows - die folgenden Benutzer:
- SASADM, SASDEMO, SASGUEST, SASTRUST, SASSRV
Diese Benutzer sind in einer Gruppe zusammenzufassen; diese Gruppe braucht das Recht:
- "Anmelden als Stapelverarbeitungsauftrag"
Darüberhinaus braucht der Benutzer SASSRV das Recht:
- "Einsetzen als Teil des Betriebssystems"
Das sind natürlich die Benutzer und Rechte unter Windows. Die relevante Dokumentation, in der auch das Vorgehen unter Unix-Systemen beschrieben ist, ist: "SAS Intelligence Platform: Installation Guide", den es mit anderen Dokumentationen hier gibt.
Sobald alle Komponenten installiert sind, wird eine HTML-Seite generiert und angezeigt, die die durchzuführenden Konfigurationsschritte beschreibt:
1. Start your Metadata Server
2. Start the SAS Management Console
3. Define your Metadata Repository
4. Define your Metadata Users
5. Defining Default Authorizations
6. Define your SAS Application Server
7. Define your Stored Process Server
8. Define your Object Spawner
9. Load SAS Stored Process samples
10. Start your Object Spawner
In dieser Seite wird auf Skripten verwiesen, die während der Installation generiet worden sind. Auf diese Skripten hab' ich mich bisher immer blind verlassen und bin nie enttäuscht worden. Mit Hilfe dieser Skripten sind die genannten Punkte in 5 Minuten erledigt.
Das war die SAS-Installation. Jetzt laufen die Dienste, die auf ein Java-(oder C# oder ...)-Programm warten, das mit SAS arbeiten will.
Kommen wir also zu Eclipse und dem Java-Test-Programm.
In Eclipse habe ich mir eine Classpath-Variable SAS_HOME angelegt (unter "Window - Preferences", dort unter "Java - Build Path - Classpath Variables"), die auf mein SAS-Installationsverzeichnis zeigt. Mit dieser Variable kann man dann JARs aus den SAS-Verzeichnissen in den Classpath aufnehmen, ohne seinen Installationspfad fest in die Konfiguration des Projekts reinzuschreiben.
Folgende JARs sind in den Classpath einzubinden (rechte Maustaste auf's Projekt, dann "Properties", "Java Build Path", "Libraries", "Add Variable" und nach Auswahl der zuvor angelegten Classpath-Variable "Extend ..."):
- SAS_HOME\core\sasmisc\sas.core.jar
- SAS_HOME\core\sasmisc\sas.svc.connection.jar
Jetzt noch eine neue Klasse - z.B. SASTest1.java - anlegen:
import com.sas.iom.SAS.IWorkspace; import com.sas.iom.SAS.IWorkspaceHelper; import com.sas.services.connection.BridgeServer; import com.sas.services.connection.ConnectionFactoryAdminInterface; 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; import com.sas.iom.SAS.ILanguageService; import com.sas.iom.SAS.ILanguageServicePackage.CarriageControlSeqHolder; import com.sas.iom.SAS.ILanguageServicePackage.LineTypeSeqHolder; import com.sas.iom.SASIOMDefs.StringSeqHolder; public class SASTest1 { /** * @param args */ public static void main(String[] args) { try { // use the Connection Factory to get a reference to a workspace object // identify the IOM server String classID = Server.CLSID_SAS; String host = "FRL2006A.kybeidos.de"; int port = 8591; Server server = new BridgeServer(classID, host, port); // make a connection factory configuration with the server ConnectionFactoryConfiguration cxfConfig = new ManualConnectionFactoryConfiguration(server); // get a connection factory manager ConnectionFactoryManager cxfManager = new ConnectionFactoryManager(); // get a connection factory that matches the configuration ConnectionFactoryInterface cxf = cxfManager.getFactory(cxfConfig); // get the administrator interface ConnectionFactoryAdminInterface admin = cxf.getAdminInterface(); // get a connection String userName = "sasguest"; String password = "sasguest"; ConnectionInterface cx = cxf.getConnection(userName, password); org.omg.CORBA.Object obj = cx.getObject(); IWorkspace iWorkspace = IWorkspaceHelper.narrow(obj); ILanguageService sasLanguage = iWorkspace.LanguageService(); sasLanguage.Submit("data a;x=1;run;proc print;run;"); CarriageControlSeqHolder logCarriageControlHldr = new CarriageControlSeqHolder(); LineTypeSeqHolder logLineTypeHldr = new LineTypeSeqHolder(); StringSeqHolder logHldr = new StringSeqHolder(); sasLanguage.FlushLogLines(Integer.MAX_VALUE, logCarriageControlHldr, logLineTypeHldr, logHldr); String[] logLines = logHldr.value; for (int i = 1; i < logLines.length; i++) { System.out.println(logLines[i]); } CarriageControlSeqHolder listCarriageControlHldr = new CarriageControlSeqHolder(); LineTypeSeqHolder listLineTypeHldr = new LineTypeSeqHolder(); StringSeqHolder listHldr = new StringSeqHolder(); sasLanguage.FlushListLines(Integer.MAX_VALUE, listCarriageControlHldr, listLineTypeHldr, listHldr); String[] listLines = listHldr.value; for (int i = 1; i < listLines.length; i++) { System.out.println(listLines[i]); } cx.close(); // tell the factory that it can destroy unused connections admin.shutdown(); } catch (Exception e) { e.printStackTrace(); } } }... dann kann losgehen ("Run", "Debug as", "Java Application"): Auf der Console werden der Log und der Output des gestarteten Testprogramms "data a;x=1;run;proc print;run;" angezeigt. Untrügliches Zeichen dafür, dass im Hintergrund ein Workspace-Server
von SAS/IT in Aktion getreten ist.
Dies ist, wie eingangs erwähnt natürlich erst der Anfang. Auf dieser Basis kann man nun an der Infrastruktur tunen (Sinn macht natürlich ein Pool von Servern, die nicht bei jeder Anfrage gestartet werden, sondern wiederverwendet werden), weitere Dienste nutzen (darunter auch einfache JDBC-Verbundungen) und sich weitere SAS-Komponenten erschließen (meines Wissens gibt es von SAS auch Rendering-Komponenten zur Verwendung in Java Server Pages).
M.a.W.: Dieser Thread hat das Zeug zur Fortsetzungs-Story.
Gruß Stephan