SAS® AppDev
Studio
QUESTIONS
Installation
et Déploiement
- Quelle est la dernière version d’AppDev Studio disponible
? Réponse
- Quelles versions de SAS sont supportées par la dernière
version d’AppDev Studio ? Réponse
- Quelles sont les versions actuellement supportées ? Réponse
- Comment appliquer les mises à jour d’un serveur SAS pour
l’utilisation d’AppDev Studio ? Réponse
- A la connexion d’AppDev Studio, vous recevez les messages suivants
: Réponse
- Est-il possible de ne pas sauvegarder un projet d’AppDev 2.0 ?
Réponse
- Que faire si vous recevez l’erreur : java.security.AccessControlException:
access denied (java.net.SocketPermission). Réponse
- L’applet fonctionne correctement dans webAF ou webEIS mais lors
de son chargement à partir du serveur web, une erreur "sun.applet.AppletSecurityException:
checkread" apparaît. - Quelle en est la cause ? Réponse
- Quelles versions du JDK (Java Developpment Kit) SAS AppDev Studio 3.0
supporte t-il ? Réponse
- Quelles versions de serveurs SAS peuvent être accédées
par SAS AppDev Studio ? Réponse
- Lors de l’affichage d’une table SAS dans une JSP, je souhaiterais
afficher les libellés plutôt que les noms de colonnes. Réponse
- Existe-t-il un patch pour SAS AppDev Studio 3.0 ? Réponse
- Est-ce que le SASNetCopy est encore supporté ? Réponse
- Comment appliquer des formats SAS via une connexion JDBC ? Réponse
Exemples de code
JSP - Comment charger les données de la SASHELP.CLASS
dans une listbox ? Réponse
- Comment se connecter à un serveur Workspace
SAS9.1 via JDBC ? Réponse

SOLUTIONS
Installation et Déploiement
Quelle est la
dernière version d’AppDev Studio disponible ?
La dernière version d’AppDev Studio est la
version 2.0. Une mise à jour 2.0.3 de cette version est disponible
sur le site de SAS. Celle-ci inclut les mises à jour 2.0.1 et 2.0.2.
La mise à jour 2.0.3 est téléchargeable à
l’adresse suivante : http://www.sas.com/apps/demosdownloads/appdevupdt_PROD_2.0.3_sysdep.jsp?packageID=000233

Quelles versions de SAS sont
supportées par la dernière version d’AppDev Studio
?
AppDev StudioTM version 2.0 fonctionne avec les versions SAS suivantes
: SAS 8.2, SAS 8.1, SAS 6.12 TSO65 et SAS 6.12 TS070.

Quelles sont les versions actuellement
supportées ?
SAS supporte les versions 1.2 et 2.0 d’AppDev Studio.
La version 1.2 sera supportée tant que SUN supportera le JDK 1.1.8
qui est l’environnement de développement JAVA sur lequel
s’appuie la version 1.2.

 |
Comment appliquer les mises
à jour d’un serveur SAS pour l’utilisation d’AppDev
Studio ?
Un fichier de mise à jour Appdev.cpo est disponible sur les
CD d’installation d’AppDev Studio 2.0 dans le répertoire
D:\SASUpdates\V8. Si vous avez installé le patch 3 sur les
postes de développements le fichier de mise à jour
pour les serveurs SAS se trouve dans le répertoire C:\AppDevStudio\ADS203Deployment\SASUpdates\V8
1) Procédure d’installation du fichier
de mise à jour du serveur SAS pour AppDev Studio :
a) Créer un répertoire sur votre serveur SAS nommé
"updates"
b) Transférer le fichier appdev.cpo vers le serveur.
c) Lancer le Système SAS
c.1) Créer un libname qui pointe
dans le répertoire nommé "updates"
c.2) Exécuter le code SAS suivant :
libname ads20 '/vers/le/répertoire/ updates' ;
filename cpo20 '/pointe/vers/le/fichier/appdev.cpo';
proc cimport lib=ads20 infile=cpo20 ;
run ;
Ce code SAS installe les catalogues d'appdev Studio sur le serveur
SAS dans le répertoire pointé par ads20.
2) Création du fichier sasv8.cfg pour ADS 2.0
:
a) Copier le fichier sasv8.cfg sur votre compte et éditer
le.
b) Modification à réaliser au sein du fichier sasv8.cfg
pour prendre en compte les nouveaux catalogues :
changer :
-sashelp ( '!SASROOT/sascfg' '!SASROOT/sashelp' )
en :
-sashelp ( '/path/to/appdev20' '!SASROOT/sascfg' '!SASROOT/sashelp'
)
c) Enregistrer le sous sasv8-ads20.cfg par exemple. Il devra être
utilisé pour que le Système SAS fonctionne correctement
avec AppDev Studio 2.0. Pour tester le fichier créé, lancez
le Système SAS avec ce fichier sasv8-ads20.cfg.
Il est important de déclarer en premier l'emplacement des Sas/updates
dans la ligne -sashelp. Cela permet de prendre en compte les Sas/Updates
de ADS 2.0 .

A la connexion d’AppDev
Studio, vous recevez les messages suivants :
com.sas.net.server.RemoteSasException:RemObj.R20.ex.txt:Impossible
de créer l’instance à distance
ou
ERROR: Unable to load CLASS entry prodauth.CLASS
Ces erreurs sont liées à la non mise à jour de votre
serveur SAS. Pour le mettre à jour nous vous invitons à
vous reporter à la Faq : Comment appliquer les
mises à jour d’un serveur SAS pour l’utilisation d’AppDev
Studio ?

Est-il possible de ne pas sauvegarder
un projet d’AppDev 2.0 ?
Cette fonctionnalité n’est pas disponible avec la
version 2.0.
L’alternative qui vous est proposée, est d'utiliser les archives
de votre projet qui sont générées dans le répertoire
de votre projet.

Que faire si vous recevez
l’erreur : java.security.AccessControlException: access denied
(java.net.SocketPermission).
Ceci est du à une nouvelle architecture de la sécurité
du Java 1.2.
Pour que votre applet puisse établir une connexion, la ligne
permission java.security.AllPermission;*
doit être rajouter dans le fichier C:\Program Files\JavaSoft\JRE\1.3.0_01\lib\security\Java.policy.
Pour plus d’informations vous pouvez vous reporter au site JAVA
: http://www.javasoft.com

 |
L’applet fonctionne
correctement dans webAF ou webEIS mais lors de son chargement à
partir du serveur web, une erreur "sun.applet.AppletSecurityException:
checkread" apparaît. Quelle en est la cause ?
Dans une grande majorité des cas cela provient des images,
qui sont référencées de façon absolue (c:\chemin\image.gif)
et non relative. Une référence relative est "image.gif"
afin que l'applet charge l'image à partir du serveur Web ou du
fichier archive (jar). L’applet ne peut pas référencer
une de ces ressources de façon absolue (principe de sécurité
des applets).
Par exemple, si l'applet se trouve dans le répertoire "c:\inetpub\wwwroot\applet",
vous pouvez référencer l’image de l’une
de ces façons:
- Soit mettre l'image dans le même répertoire que l’applet.
L’applet utilisera alors l'information référencée
par l'instruction "CODEBASE" de la page html pour savoir
où rechercher l’image (voir exemple qui suit).
- Soit intégrer l'image dans le fichier JAR utilisé par
l'applet lors de la génération de ce fichier dans webAF
ou webEIS.
Exemple de code HTML :
<APPLET CODE="applet.class" CODEBASE="http://www.server.fr/applets”
WIDTH=480 NAME="applet" HEIGHT=360 ARCHIVE="applet.jar"
>
<PARAM NAME="ARCHIVE" VALUE="applet.jar">
<PARAM NAME="CODE" VALUE="applet.class">
</APPLET>
L’applet cherchera « image.gif » dans l’emplacement
pointé par l’url spécifiée dans CODEBASE.

Quelles versions du JDK (Java Developpment Kit) SAS AppDev
Studio 3.0 supporte t-il ?
Les versions 1.4.x et 1.3.x du JDK
sont supportées avec SAS AppDev
Studio 3.0. Par défaut SAS AppDev Studio utilise la dernière
version de JDK installée sur le poste de développement.
Néanmoins,
vous pouvez spécifier la version que vous souhaitez
utiliser à l’aide d’une option de ligne commande :
-jdkversion.
Par exemple :
webaf.exe –jdkversion 1.4

Quelles versions de serveurs SAS peuvent être accédées
par SAS AppDev Studio ?
Les applications créées avec SAS AppDev Studio 3.0 permettent
d’accéder aux serveurs SAS 8.2 et SAS 9.1. SAS AppDev Studio
3.0 ne supporte désormais plus l’accès aux serveurs
SAS 6.12.
Est-ce que le SASNetCopy est encore supporté ?
Avec SAS AppDev Studio 3.0, SASNetCopy n’est plus supporté.
Il est définitivement remplacé par le JSASNetCopy. Toutes
les possibilités du SASNetCopy sont disponibles avec le JSASNetCopy
qui, de plus, est plus robuste et permet un déploiement plus aisé que
son prédécesseur.
WebAF et WebEIS convertissent automatiquement un projet qui utilisait
SASNetCopy en JSASNetCopy lorsqu’il est migré en SAS
AppDev Studio 3.0.
Existe t-il un document décrivant le processus
de migration vers SAS AppDev Studio 3.0 ?
Oui, il existe un
document disponible à l’adresse
suivante :
http://support.sas.com/rnd/appdev/doc/ADS3Migration.pdf

Lors de l’affichage d’une table SAS dans une JSP, je
souhaiterais afficher les libellés plutôt que les
noms de colonnes.
La méthode qui permet ce comportement est la suivante :
setColumnInfoUsed("LABEL") ;
Cette méthode s’applique sur le DataSetInterface utilisé.
Par exemple :


Existe-t-il un patch pour SAS AppDev Studio 3.0 ?
Oui il existe une mise à jour (3.1.3) pour SAS AppDev Studio
3.0.
Télécharger la mise à jour 3.1.3

Est-ce que le SASNetCopy est
encore supporté ?
Avec SAS AppDev Studio
3.0, SASNetCopy n’est plus supporté.
Il est définitivement remplacé par le JSASNetCopy.
JSASNetCopy conserve toutes les possibilités du SASNetCopy.
WebAF et WebEIS convertissent automatiquement un projet qui utilisait
SASNetCopy en JSASNetCopy lorsqu’il est migré en SAS AppDev
Studio 3.0.

Exemples de code
JSP - Comment
charger les données de la SASHELP.CLASS dans une listbox ?
Afin que cette JSP fonctionne, un Spawner doit être démarré
sur le port 2323 et toutes les classes SAS (situées dans C:\AppDevStudio\Java\SAS\ext
et C:\AppDevStudio\Java\Misc) doivent être copiées dans le
répertoire LIB\EXT du JDK.
<html>
<head >
<title>Exemple FAQ</title>
</head>
<body >
<%
// La première étape est d'importer les package JAVA utile
pour créer nos objet
// ou appliquer des méthodes
%>
<%@ page import="java.util.*"%>
<%@ page import="com.sas.servlet.beans.*" %>
<%@ page import="com.sas.rmi.*" %>
<%@ page import="com.sas.collection.*" %>
<%@ page import="com.sas.sasserver.*" %>
<%
// Mise en place de la connexion SAS
// La connexion se fait sur localhost sur un Spawner CONNECT à
l'écoute sur le port 2323
com.sas.rmi.Rocf rocf = new com.sas.rmi.Rocf();
com.sas.rmi.Connection connection = new com.sas.rmi.Connection();
connection.setServerArchitecture("PC");
connection.setHost("localhost");
connection.setPort(2323);
connection.setCommand("sas -dmr -comamid tcp -noterminal -cleanup
");
connection.setInitialStatement("libname APPL 'f:\\frafpo\\appl\\';"
);
// Création d'un objet DataSetInfoInterface
String dsname="SASHELP.CLASS";
com.sas.sasserver.datasetinfo.DataSetInfoInterface dinfo = (com.sas.sasserver.datasetinfo.DataSetInfoInterface)
rocf.newInstance(com.sas.sasserver.datasetinfo.DataSetInfoInterface.class,
connection);
dinfo.setDataSet(dsname);
// Création d'une collection
int comp = dinfo.getVariableIndex("NAME");
com.sas.collection.StringCollection collect = new com.sas.collection.StringCollection(dinfo.getVariableUniqueValues(
comp ));
// Création de la liste Box, on spécifie qu'elle affichera
8 items à la fois
com.sas.servlet.beans.ListboxInterface listbox =new com.sas.servlet.beans.html.Listbox();
listbox.setSize(8);
// Application du Model
listbox.setModelInterface(collect);
// Attribution d'un nom au ListBox
listbox.setName("com");
// Affichage du listbox à l'écran
listbox.write(out);
// Fermeture de la connexion SAS
rocf.stop();
%>
</body>
</html>

Comment se connecter à
un serveur Workspace SAS9.1 via JDBC ?
Voici un exemple de JSP permettant de se connecter à Serveur d’espace
de travail (Workspace) 9.1 via JDBC (Java DataBase Connectivity)
<%@page import="com.sas.iom.WorkspaceConnector"%>
< %@page import="com.sas.iom.WorkspaceFactory"%>
< %@page import="com.sas.iom.SAS.IWorkspace"%>
< %@page import="com.sas.iom.SAS.IDataService"%>
< %@page import="java.util.Properties"%>
< %@page import="java.sql.Connection"%>
< %@page import="java.sql.Statement"%>
< %@page import="java.sql.ResultSet"%>
< %@page import="java.sql.SQLException"%>
< %@page import="com.sas.rio.MVAConnection"%>
< %
try {
Properties iomServerProperties = new Properties();
iomServerProperties.put("host","pcdel070");
iomServerProperties.put("port","8591");
iomServerProperties.put("userName","sasadm");
iomServerProperties.put("password","saspw1");
Properties[] serverList = {iomServerProperties};
WorkspaceFactory wFactory = new WorkspaceFactory(serverList,null,null);
WorkspaceConnector connector = wFactory.getWorkspaceConnector(0L);
IWorkspace workspace = connector.getWorkspace();
IDataService rio = workspace.DataService();
Connection sqlConnection = null;
sqlConnection = new MVAConnection(rio,new Properties());
Statement stmt = sqlConnection.createStatement () ;
ResultSet rs = stmt.executeQuery("select * from sashelp.class where
sex contains 'F' ;") ;
while (rs.next()) {
String nom = rs.getString ("NAME") ;
out.print (nom) ;
out.print("<BR>") ;
}
sqlConnection.close();
wFactory.shutdown();
connector.close();
}
catch (SQLException e) {
out.println("Exception while establishing connection: " + e.toString());
}
%>
Cliquez
ici pour en savoir plus.

Comment appliquer des formats SAS via une connexion JDBC ?
Le code suivant doit vous permettre de réaliser cette opération
:
java.util.Properties fmt = new java.util.Properties( );
fmt.put( "librefs", "Test 'C:\\frafpo'; library 'C:\\frafpo'"
);
fmt.put( "applyformats","true" );
sas_JDBCConnection.setConnectionInfo( fmt );

|