Avalados por :

Como usar cadeias de conexão complexas no SAP JCO.Client para acessar servidores SAP

  • Creado 01/03/2024
  • Modificado 01/03/2024
  • 112 Vistas
0
Cargando...

Olá a todos,

Nos cenários do sap, pode-se usar uma string de conexão para fazer login nos sistemas sap. O SAP Javagui utiliza esse termo para especificar a forma de acessar os sistemas sap.

Um exemplo de uma string de conexão que conecta a um servidor de aplicativos atrás de 2 saprouters é:

/H/gate.acme.com/S/3299/P/secret/H/gate.sap.com/S/3298/H/iwdf8997.sap.com/S/3200

<--


1º roteador -
><-- 2º roteador -


><------ servidor de aplicativos -


>

O segundo termo pode ser usado para se conectar a um servidor de mensagens e especificar um grupo de logon (balanceamento de carga):

/H/gate.acme.com/S/3299/P/secret/H/gate.sap.com/S/3298/M/alrmain.wdf.sap-ag.de/S/4253/G/SPACE

<--


1º roteador -
><-- 2º roteador -


><----


servidor de mensagens -


><- grupo de logon->

Agora minha pergunta:

É possível usar strings de conexão complexas (com roteador e grupos de logon) com JCO.Client (método createclient)?

Tentei o método createclient com o parâmetro URL e recebi uma Exceção "sem protocolo".

Obrigado pela ajuda!

Joerg

Pedro Pascal
Se unió el 07/03/2018
Pinterest
Telegram
Linkedin
Whatsapp

4 Respuestas

0
Cargando...

Olá Rudy,

SIM - Balanceamento de carga. Mas não o balanceamento de carga baseado no cliente que utiliza JCo-ClientPools ou uma tecnologia similar.

Os sistemas SAP podem utilizar mais de um servidor de aplicativos para processar cargas de trabalho pesadas. Dentro do sistema SAP, você pode definir Grupos de logon (Transação SMLG) para agrupar os servidores disponíveis de acordo com um grupo virtual (por exemplo, VENDAS e SERVIÇO). O grupo SPACE é predefinido e utiliza todos os servidores de aplicativos disponíveis em um grupo.

O mecanismo de logon do lado do cliente (SAPGui, JCO) ativa o servidor de mensagens do sistema (1 servidor de mensagens por instância SAP: mshost). Este servidor de mensagens direciona a solicitação de logon para um servidor de aplicativos disponível para o grupo dado com um mecanismo de balanceamento de carga (balanceamento de carga do lado do servidor com cálculo de desempenho).

Para este mecanismo de logon do lado do cliente, você deve usar o método createclient implementando os parâmetros mshost, r3name, grupo.

Meu problema é que o servidor de mensagens pode estar localizado atrás de um ou mais saprouters. Portanto, uma conexão direta com o servidor de mensagens não está disponível. O saprouter é comparável a um firewall com funcionalidade de encaminhamento.

Atrás das interfaces do usuário para definir conexões sap (por exemplo, JavaGUI - Opções avançadas), você encontrará a cadeia de conexão sap típica para descrever o caminho para o servidor de mensagens: /H/router1/S/routerport1/H/router2/S/routerport2/M/messageserver/G/grupo de logon.

Minha solução alternativa fornecida neste tópico funciona para 90%.

Obrigado.

Joerg

Respondido el 15/04/2024
LUCIANO RIOJA GHIOTTO
Se unió el 13/07/2019
0
Cargando...

°Ah, então você está procurando equilibrar a carga! Nesse caso, acredito que o que você quer fazer é utilizar o agrupamento de conexões. Dê uma olhada na API JCO.addClientPool(...). Um exemplo de como usá-lo está disponível no arquivo zip do SAP JCO, na pasta de demonstração. O nome do programa é Example2.java.

Existem várias formas de criar um grupo de clientes, e você deve revisar todas para ver qual se adapta melhor às suas necessidades. Vou incluir um exemplo:

public static void addClientPool(java.lang.String key,

int max_connections,

java.lang.String client,

java.lang.String user,

java.lang.String passwd,

java.lang.String lang,

java.lang.String mshost,

java.lang.String r3name,

java.lang.String group)

Cria uma instância de um grupo de clientes para um sistema SAP remoto (com balanceamento de carga).

Nota: Dependendo da versão do sistema SAP, são suportados logins com Single-Sign-On (SSO) ou certificados X509.

Para SSO, especifique que o usuário seja $MYSAPSSO2$ e passe o ticket codificado em base64 como parâmetro passwd.

Para X509, especifique que o usuário seja $X509CERT$ e passe o certificado codificado em base64 como parâmetro passwd.

Parâmetros:

key - nome do grupo

max_connections - número máximo de conexões permitidas para o grupo.

Importante: Consulte também as notas OSS 314530 e 316877 sobre como configurar o número de conexões externas no sistema SAP e/ou na porta de entrada SAP.

client - cliente de login SAP

user - usuário de login SAP

passwd - senha de login SAP

lang - idioma de login SAP

mshost - nome do servidor de mensagens

r3name - nome do sistema SAP

group - nome do grupo de servidores de aplicativos

Lança:

JCO.Exception - lançado se já existir um grupo com o nome especificado

°Boa sorte!

Respondido el 15/04/2024
LUCIANO RIOJA GHIOTTO
Se unió el 13/07/2019
0
Cargando...

Olá Rudy,

Obrigado pela sua resposta.

Os métodos JCo não suportam createclient com balanceamento de carga (servidor de mensagens e grupo de início de sessão) combinado com um ou mais saprouter. Verifique o seu código --> (sem balanceamento de carga).

Não encontrará uma solução (documentada oficialmente) para este problema.

Mas encontrei um método alternativo para este problema:

private static JCO.Client getClient(String user, String password,

String client, String connection, String system, String language) {

String mMsHost = "";

String mSID = "";

String mGroup = "";

try {

// Modo de balanceamento de carga

int mPosM = connection.indexOf("/M");

if (mPosM >= 0) {

// Servidor de mensagens encontrado

// definir SID

mSID = system;

// obter Grupo

int mPosG = connection.indexOf("/G");

if (mPosG < 0) {

System.out

.println("Falta o Grupo de início de sessão. Defina como ESPAÇO");

mGroup = "ESPAÇO";

} else {

mMsHost = connection.substring(0, mPosG);

mGroup = connection.substring(mPosG + 3);

}

// preparar mshost

mMsHost = mMsHost.replaceFirst("/M", "/H");

System.out.println("Usando MSHOST SID GRUPO: " + mMsHost + " "

+ mSID + " " + mGroup);

// criar cliente

return JCO.createClient(client, // cliente SAP

user, // usuário

password, // senha

language, // idioma

mMsHost, // host de mensagens

mSID, // SID

mGroup); // Grupo

} else {

// início de sessão simples no Servidor de Aplicações

return JCO.createClient(client, // cliente SAP

user, // usuário

password, // senha

language, // idioma

connection, // nome do host

system); // número do sistema

}

} catch (Exception e) {

System.err.println("Ocorreu um erro ao conectar ao Sistema SAP:\n"

+ e.getMessage());

return null;

}

}

por Joerg

Respondido el 15/04/2024
LUCIANO RIOJA GHIOTTO
Se unió el 13/07/2019
0
Cargando...

> Agora minha pergunta:

>

> É possível usar cadeias de conexão complexas

> (com roteador e grupos de sessão) com JCO.Client

> (método createClient)?

>

Dado que não entendo absolutamente por que você está tentando fazer o que está fazendo, simplesmente responderei à pergunta anterior. Não. Apenas como referência, aqui está uma das especificações da API para createClient. Aquela que tem o máximo de parâmetros:

public static JCO.Client createClient(java.lang.String client,

java.lang.String user,

java.lang.String passwd,

java.lang.String lang,

java.lang.String ashost,

java.lang.String sysnr,

java.lang.String gwhost,

java.lang.String gwserv)Cria uma instância de uma conexão de cliente para um sistema SAP remoto (sem balanceamento de carga)

Parâmetros:

client - Cliente de login do SAP

user - Usuário de login do SAP

passwd - Senha de login do SAP

lang - Idioma de login do SAP

ashost - Nome do host do servidor de aplicativos

sysnr - Número do sistema SAP

gwhost - Nome do host do gateway do SAP

gwserv - Número do serviço do gateway do SAP

Retorna: o cliente recém-criado

Você tem a flexibilidade de usar todos esses ou um subconjunto deles, bem como especificá-los em um objeto Property ou um array de strings.

Rudy

Respondido el 15/04/2024
LUCIANO RIOJA GHIOTTO
Se unió el 13/07/2019

contacto@primeinstitute.com

(+51) 1641 9379
(+57) 1489 6964

© 2024 Copyright. Todos los derechos reservados.

Desarrollado por Prime Institute

¡Hola! Soy Diana, asesora académica de Prime Institute, indícame en que curso estas interesado, saludos!
Hola ¿Puedo ayudarte?