Hola buen dia estimados tengo el siguiente problema haber si alguien me pudiera ayudar, lo que necesito es que en mi WSDL en el location aparezca la IP publica que tenemos configurada para SAP ya que actualmente me manda el nombre del equipo. Y esto provoca que cuando se ejecute desde afuera mande error. Ya que la el location no es visible.
Asi es como aparece actualmente:
Alguien sabe de alguna solucion:
ya configure el Global Settings del SOA Managment:
Hola @Alvan1,
siempre tienes cosas interesantes con los servicios web.
Una pregunta, ¿seguro que es por la location por lo que se da el error?
Nosotros publicamos los servicios web en una máquina SAP y son consumidos desde otras máquinas que no son sap, aunque todas las máquinas están en la misma intranet.
De hecho, en los detalles del ws en la pestaña “Transport settings” en el ítem “Make local call” tenemos “No call in Local System” y no tenemos “Alternative Access URL” que se supone que es para llamadas locales. Me imagino que lo tenéis igual no?
Es que en si como tal no hay un error lo que pasa es que en el address location necesito que se muestre la IP publica de donde se expone pero en lugar de ellos pone el nombre del equipo de donde esta el SAP:
Pone en el Address http://SR01 en lugar de que ponga http://241.98.XX.XX y aqui esta el problema que de esta forma no lo puedo ejecutar de manera externa ya que cuando se carga en ENDPOINT se carga con el http://SR01 y en versiones anteriores cuando hacia los servicios a traves del WSADMIN y el LPCONFIG y esas transacciones el ENDPOINT lo establecía según a como consultabas la URL, Si accedías via local el ENDPOINT lo ponia local y viceversa.
Pero ahora con la Trx. SOAMANAGER ya no hace esto, ese el detalle mas a fondo amigo
Te voy a contar un poco tal vez no fue la mejor solucion pero hoy en dia asi funcionan nuestras interfaces:
Primero creamos nuestro servicio web como normalmente lo hacemos.
Luego entramos al soamanager y descargamos el WSDL.
Ese WSDL editamos a mano el address location poniendo la ip publica por la cual nos vamos a conectar.
Esta IP publica debe de estar ligada al servidor del SAP para que entre. Nosotros exponemos a traves del puerto 5000.
Bueno una vez que editamos el endpoint a mano h_tp:/xxx.xxx:5000/sap-bd/etc…
Subimos el WSDL a un servidor que tiene ligada la ip publica este servidor tiene intalado php my admin y ahi en la carpeta ww subimos el WSDL
Y listo gracias a este ultimo servidor es el que expone a la calle el WSDL. Y es el que consumimos desde afuera.
Es un show y bastante complejo siento que ha de haber cosas mas faciles de hacerlo por por nuestra infraestructura y cosas internas asi se hizo:
Recuerda:
Tener ligada una IP publica a SAP (DEV, QAS, PRD), para poder cambiar el location por la ip publica de SAP.
Instalar un servidor PhpMyAdmin ligado a un IP publica, para que exponga nuestro WSDL con el exterior.
Que tal Alvaro, mi consejo es que esto lo manejes con reglas de ruteo desde tu firewall, el colocarle la IP a su server de aplicaciones lo deja vulnerable.
Pídele al administrador de tu infraestructura, Que haga ruteo de las peticiones que se hagan a la dirección publica sobre “x” puerto, envié la petición a tu server de aplicaciones (SAP), o bien pudiera ser que tenga alguna DMZ que te brinde mayor protección.
Nota: adicional revisa con el el tema de DNS para la resolución de nombre.