Sziasztok!
Adott a következő szerver felépítés.
Webmethods szerver: webservice kiszolgáló, csak belülről érhető el.
Apache: kívülről csak ez látszik
Feladat, hogy a webmothods ws könyvtára elérhető légyen kívülről az apache-on keresztül, hogy a webserve-ok működjenek.
A webservice wsdl-je kívülről elérhető, de amikor meghívják és használni szeretnék a benne lévő funkciót, akkor lejárt session-re hivatkozva meghal a php script.
Ugyanez a php script belülről tökéletesen működik, ezért gondolom hogy az apache beállítással van valami gond. Az apache logjában csak sikeres get és post eseményeket látok.
Az apache a következő képp lett beállítva:
ProxyRequests Off
ProxyVia Off
ProxyPass /ws/ http://10.10.10.10:5555/ws/
ProxyPassReverse /ws/ http://10.10.10.10:5555/ws/
itt php kód, amivel kipróbáltuk:
$sClient = new SoapClient("http://kulso.ip.cim/ws/wsfunction:wsfunction?WSDL");
var_dump($sClient->__getFunctions());
$param = Array('paramter1' => '1.0','paramter2' => '0');
var_dump($sClient->wsFunction($param));
És itt a kimete a php script-nek:
array(1) {
[0]=>
string(45) "dtowsFunction wsFunction(dtiwsFunction $parameters)"
}
Fatal error: Uncaught SoapFault exception: [HTTP] Invalid Session ID or Session Expired in C:\PHP\wsteszt\teszt6.php:8
Stack trace:
#0 [internal function]: SoapClient->__doRequest('<?xml version="...', 'http://10.10.10...', 'wsFunction...', 1, 0)
#1 [internal function]: SoapClient->__call('wsFunction', Array)
#2 C:\PHP\wsteszt\teszt6.php(8): SoapClient->wsFunction(Array)
#3 {main}
thrown in C:\PHP\wsteszt\teszt6.php on line 8
Mit kéne még beállítani az apachon, hogy a session ne veszen el?
Zsolti