Essayez d'accéder au système sur site à partir de SAP Cloud Platform --JAVA App Edition

1.Tout d'abord

J'ai essayé d'accéder au système sur site à partir d'une application dans SAP Cloud Platform.

Créons une application JAVA simple pour vérifier la fonction et accéder au système ABAP sur site depuis SAP Cloud Platform.

2. Demande de faire cette fois

Je présenterai brièvement le fonctionnement de l'application.

2.1. Écran d'authentification

Il s'agit de l'écran d'authentification de SAP Cloud Platform. image.png

2.2. Premier écran

Entrez n'importe quel texte et appuyez sur le bouton d'envoi pour appeler le module fonction STFC_CONNECTION. La chaîne de caractères saisie dans Input Text est transmise au paramètre REQUTEXT lors de l'appel. image.png

2.3. Deuxième écran

La valeur renvoyée par le module fonction STFC_CONNECTION s'affiche. RESPTEXT affiche la version de SAP Netweaver, la date et l'heure actuelles et des informations sur l'utilisateur qui a utilisé l'accès. image.png

3. Comment accéder à ABAP

Pour vous connecter à JCo, transmettez le nom de destination défini dans SAP Cloud Platform à l'argument de JCoDestinationManager # getDestination et obtenez l'objet JCoDestination. Vous pouvez vous connecter au serveur ABAP sur site à partir de cet objet via SAP Cloud Connector.

Voici un exemple où le nom de destination défini dans SAP Cloud Platform peut être obtenu avec p.getProperty (JCO_DESTINATION).

  return JCoDestinationManager.getDestination(p.getProperty(JCO_DESTINATION));

Plus précisément, il a été mis en œuvre sous la forme suivante. En fait, il devrait être plus facile à utiliser en créant une interface et en en héritant, mais je l'omettrai car il s'agit d'un essai.

StfcConnection.java


public class StfcConnection {
	public static final String PRAM_REQUTEXT = "REQUTEXT";
	public static final String PRAM_ECHOTEXT = "ECHOTEXT";
	public static final String PRAM_RESPTEXT = "RESPTEXT";
	private static final String FUNCTION_NAME = "STFC_CONNECTION";
	private static final String JCO_DESTINATION = "jco.destination";
	private static final String JCO_PROPERTIES = "jco.properties";

	private String propFilePath;
	private String requText;
	private String echoText;
	private String respText;


	public StfcConnection(String propDirPath, String requText) {
		this.propFilePath = Paths.get(propDirPath, JCO_PROPERTIES).toString();

		this.requText = requText;
	}

	public void execute() throws JCoException, FileNotFoundException, IOException {
		JCoDestination d = getDestiation();
		JCoFunction f = d.getRepository().getFunction(FUNCTION_NAME);

		//Réglages des paramètres d'appel du module de fonction
		f.getImportParameterList().setValue(PRAM_REQUTEXT, requText);

		//Exécution de module à usage général
		f.execute(d);

		//Acquisition des résultats d'exécution du module fonction
		JCoParameterList exports = f.getExportParameterList();
		echoText = exports.getString(PRAM_ECHOTEXT);
		respText = exports.getString(PRAM_RESPTEXT);
	}


	private JCoDestination getDestiation() throws FileNotFoundException, IOException, JCoException {

		InputStream is = new FileInputStream(propFilePath);
		Properties p = new Properties();

		// load jco destination name
		p.load(is);
		is.close();

		return JCoDestinationManager.getDestination(p.getProperty(JCO_DESTINATION));
	}

	public String getEchoText() {
		return echoText;
	}

	public String getRespText() {
		return respText;
	}
}

4. Résumé

J'ai pu accéder avec succès au système ABAP sur site depuis la plateforme SAP Cloud via SAP Cloud Connector. J'ai senti que la mise en œuvre côté JAVA, y compris l'authentification, était devenue facile.

À part: authentification

J'ai implémenté l'authentification programmatique en me référant à la page d'aide suivante.

Pour l'implémentation, nous avons préparé une classe dédiée et l'avons appelée à partir de chaque servlet.

Authenication.java


public class Authenication {

  private final static Logger logger = LoggerFactory.getLogger(Authenication.class);

  protected static void login(String user) throws LoginException {
    if (user == null) {

      logger.debug("User is not logged in.");

      //authenticate the User
      LoginContext loginContext = LoginContextFactory.createLoginContext("FORM");
      loginContext.login();
    }
  }

  protected static void logout(String user) throws LoginException {
    if (user != null) {

      logger.debug("User is logged in.");

      //logout
      LoginContext loginContext = LoginContextFactory.createLoginContext("FORM");
      loginContext.logout();
    }
  }

  protected static boolean isLoggedin(HttpServletRequest request) {
    if (request.getRemoteUser() == null) {
      return false;
    } else {
      return true;
    }
  }
}

Le code source a été téléchargé sur GitHub. Pour votre information. GitHub - ScpJcoTest1

Recommended Posts

Essayez d'accéder au système sur site à partir de SAP Cloud Platform --JAVA App Edition
[JDBC] J'ai essayé d'accéder à la base de données SQLite3 depuis Java.
La route de JavaScript à Java
Essayez de transmettre des valeurs de Java Servlet à l'application iPhone à l'aide de JSON
Déployer des programmes Java sur SAP Cloud Platform
Essayez d'appeler Watson NLU qui semble prendre en charge le japonais à partir du SDK Java
Essayez d'appeler le service CORBA depuis Spring (Java)
Essayez d'accéder à l'ensemble de données depuis Java en utilisant JZOS
Configuration des outils SAP Cloud Platform pour Java
[Java] Essayez de résoudre le problème de Fizz Buzz
3. Créez une base de données à laquelle accéder à partir du module Web
[Java] Je souhaite calculer la différence par rapport à la date
[Java] Comment extraire le nom du fichier du chemin
Appelons IBM Watson Assistant 2018-07-10 à partir du SDK Java.
Kotlin peut faire passer le monde de l'application au Web
Accédez à API.AI depuis Java
De Java à Ruby !!
Accédez à l'abréviation à partir de 5 exemples de listes Java en italique
Application Android qui sélectionne et affiche des images de la galerie
[Java] Déployer l'application Spring Boot sur Azure App Service
[Docker] Comment accéder à l'hôte depuis l'intérieur du conteneur. http: //host.docker.internal:
[Code Pipeline x Elastic Beanstalk] Mettre à jour la version d'exécution de Java 8 vers Corretto 11 sur la plate-forme Java SE
Lisez les données de Shizuoka Prefecture Point Cloud DB avec Java et essayez de détecter la hauteur de l'arbre.