CMDBuild Forum

Problemi con File Prova Client WebService Java

Salve stavo provando ad eseguire il file java per il client relativo alla chiamata delle Web Services.

Dopo aver generato con WSDL2Java le classi per completare il mio progetto e aver importato i .jar richiesti per il corretto funzionamento di axis e rampart, sono passato a definire il mio Reposistory locale. A quel punto, ho seguito come da voi precedentemente accenato l'engage di rampart sul repo. Il risultato è stato lo stesso ottenuto da un altro Utente:

"org.apache.axis2.AxisFault: First Element must contain the local name, Envelope , but found html"

Vi allego il mio codice.

public static void main(String[] args) {
        // TODO Auto-generated method stub

        try {
           
            ConfigurationContext configContext =    ConfigurationContextFactory.createConfigurationContextFromFileSystem("C:/RepoProva/", null);
            WebservicesStub stub  = new WebservicesStub(configContext);
            stub._getServiceClient().engageModule("rampart-1.4");
            StAXOMBuilder builder = new StAXOMBuilder("C:/RepoProva/conf/policy.xml");
            org.apache.axis2.client.Options options = stub._getServiceClient().getOptions();
            options.setUserName("admin");
            options.setPassword("admin");
            Policy policy = PolicyEngine.getPolicy(builder.getDocumentElement());
            options.setProperty(RampartMessageData.KEY_RAMPART_POLICY, policy);
            GetCardList list = new GetCardList();
            list.setClassName("Stampante");
            GetCardListResponse response = stub.getCardList(list);
            Card[] card = response.get_return();
       
            System.out.println(card[0].getDescription());
           
           
        } catch (AxisFault e) {
            // TODO Auto-generated catch block
            e.printStackTrace();
        } catch (FileNotFoundException e) {
            // TODO Auto-generated catch block
            e.printStackTrace();
        } catch (XMLStreamException e) {
            // TODO Auto-generated catch block
            e.printStackTrace();
        } catch (RemoteException e) {
            // TODO Auto-generated catch block
            e.printStackTrace();
        }
       
        catch (SOAPExceptionException e) {
            // TODO Auto-generated catch block
            e.printStackTrace();
        }
       
       

}

}

 

 

Vi ringrazio in anticipo per qualsiasi risposta possiate darmi.

Ivan

Ciao Ivan,

il codice che hai postato è corretto. Eseguendolo sull'ultima release di cmdbuild mi vengono restituiti correttamente i valori.

L'errore generato è sicuramente dovuto ad un errore di autenticazione (verifica comunque il file cmdbuild.log)

Prova a fare le seguenti verifiche:

- l'utente che utilizzi per connetterti a cmdbuild è admin con password admin (che è quello che utilizzi nel tuo codice) oppure lo hai modificato? Se lo hai modificato riprova con le credenziali corrette.

- verifica che l'url dell'istanza a cui cerchi di connetterti sia corretta (essendo generato automaticamente, dovrebbe puntare all'indirizzo corretto di cmdbuild, ma non si sa mai). Eventualmente prova a passare la stringa corretta come secondo parametro costruttore di WebservicesStub (puoi farlo dichiarandolo come WebservicesStub stub = new WebservicesStub(configContext, "http://localhost:9090/cmdbuild/services/soap/Webservices/") );

- verifica che il file policy.xml sia corretto e raggiungibile al path indicato

- verifica che nell'header del messaggio soap sia inviato lo UsernameToken. Puoi farlo utilizzando, ad esempio, tcpmon (http://ws.apache.org/commons/tcpmon/index.html)

Di seguito ti posto il file policy.xml

<?xml version="1.0" encoding="UTF-8"?>

<wsp:Policy wsu:Id="UTOverTransport"
            xmlns:wsu="http://docs.oasis-open.org/wss/2004/01/oasis-200401-wss-wssecurity-utility-1.0.xsd"
            xmlns:wsp="http://schemas.xmlsoap.org/ws/2004/09/policy">
    <wsp:ExactlyOne>
        <sp:SignedSupportingTokens xmlns:sp="http://docs.oasis-open.org/ws-sx/ws-securitypolicy/200702">     
                <wsp:Policy>
                    <sp:UsernameToken sp:IncludeToken="http://docs.oasis-open.org/ws-sx/ws-securitypolicy/200702/IncludeToken/AlwaysToRecipient">
                             <wsp:Policy>
                                <sp:HashPassword/>
                             </wsp:Policy>
                    </sp:UsernameToken>
               </wsp:Policy>
        </sp:SignedSupportingTokens>
            <ramp:RampartConfig xmlns:ramp="http://ws.apache.org/rampart/policy">
            </ramp:RampartConfig>
    </wsp:ExactlyOne>
</wsp:Policy>

 

Giuseppe

 

Previously Ivan wrote:

Dopo aver generato con WSDL2Java le classi per completare il mio progetto e aver importato i .jar richiesti per il corretto funzionamento di axis e rampart, sono passato a definire il mio Reposistory locale. A quel punto, ho seguito come da voi precedentemente accenato l'engage di rampart sul repo. Il risultato è stato lo stesso ottenuto da un altro Utente:

"org.apache.axis2.AxisFault: First Element must contain the local name, Envelope , but found html"


 

Ti ringrazio Giuseppe per la tua spiegazione, ma neanche dopo i controlli da te sugeritemi non funziona.

Ho ricontrollato tutto più e più volte ma nel log di cmdbuild mi trovo sempre lo stesso errore relativo all'autenticazione.

ERROR 2009-10-06 15:24:59 [org.apache.axis2.engine.AxisEngine] WSDoAllReceiver: security processing failed (actions mismatch) org.apache.axis2.AxisFault: WSDoAllReceiver: security processing failed (actions mismatch).

Ti faccio un ulteriore domanda relativa alla faccenda dell'autenticazione, visto che comincio a sospettare che ci sta qualcosa che nn va al livello dell'utrenza. Io ho un unico utente creato all'installazione di CMDBuild

User- admin

Password- admin

Queste credenziali oltre ad essere inserite nel codice Java client vanno messe in qualche altro file all'interno del server, tipo file di axis2 o roba del genere. 

ps.

Grazie anche per il file di policy.

Previously Tecnoteca wrote:

Ciao Ivan,

il codice che hai postato è corretto. Eseguendolo sull'ultima release di cmdbuild mi vengono restituiti correttamente i valori.

L'errore generato è sicuramente dovuto ad un errore di autenticazione (verifica comunque il file cmdbuild.log)

Prova a fare le seguenti verifiche:

- l'utente che utilizzi per connetterti a cmdbuild è admin con password admin (che è quello che utilizzi nel tuo codice) oppure lo hai modificato? Se lo hai modificato riprova con le credenziali corrette.

- verifica che l'url dell'istanza a cui cerchi di connetterti sia corretta (essendo generato automaticamente, dovrebbe puntare all'indirizzo corretto di cmdbuild, ma non si sa mai). Eventualmente prova a passare la stringa corretta come secondo parametro costruttore di WebservicesStub (puoi farlo dichiarandolo come WebservicesStub stub = new WebservicesStub(configContext, "http://localhost:9090/cmdbuild/services/soap/Webservices/") );

- verifica che il file policy.xml sia corretto e raggiungibile al path indicato

- verifica che nell'header del messaggio soap sia inviato lo UsernameToken. Puoi farlo utilizzando, ad esempio, tcpmon (http://ws.apache.org/commons/tcpmon/index.html)

Di seguito ti posto il file policy.xml

<?xml version="1.0" encoding="UTF-8"?>

<wsp:Policy wsu:Id="UTOverTransport"
            xmlns:wsu="http://docs.oasis-open.org/wss/2004/01/oasis-200401-wss-wssecurity-utility-1.0.xsd"
            xmlns:wsp="http://schemas.xmlsoap.org/ws/2004/09/policy">
    <wsp:ExactlyOne>
        <sp:SignedSupportingTokens xmlns:sp="http://docs.oasis-open.org/ws-sx/ws-securitypolicy/200702">     
                <wsp:Policy>
                    <sp:UsernameToken sp:IncludeToken="http://docs.oasis-open.org/ws-sx/ws-securitypolicy/200702/IncludeToken/AlwaysToRecipient">
                             <wsp:Policy>
                                <sp:HashPassword/>
                             </wsp:Policy>
                    </sp:UsernameToken>
               </wsp:Policy>
        </sp:SignedSupportingTokens>
            <ramp:RampartConfig xmlns:ramp="http://ws.apache.org/rampart/policy">
            </ramp:RampartConfig>
    </wsp:ExactlyOne>
</wsp:Policy>

 

Giuseppe

 

Previously Ivan wrote:

Dopo aver generato con WSDL2Java le classi per completare il mio progetto e aver importato i .jar richiesti per il corretto funzionamento di axis e rampart, sono passato a definire il mio Reposistory locale. A quel punto, ho seguito come da voi precedentemente accenato l'engage di rampart sul repo. Il risultato è stato lo stesso ottenuto da un altro Utente:

"org.apache.axis2.AxisFault: First Element must contain the local name, Envelope , but found html"


 

 

L'errore che ricevi indica che il meccanismo di autenticazione utilizzato dal client è diverso da quello del server.

Parrebbe che il file di policy non venga interpretato correttamente. Potresti postare il messaggio soap di richiesta e quello di risposta generati. Li puoi visualizzare utilizzando tcpmon o qualsiasi monitor tcp. Ho il dubbio che non venga creato correttamente l'header del messaggio soap.

Per  quanto riguarda l'altra domanda, le credenziali non vanno inserite in axis2.xml. Nel momento in cui chiami il servizio esposto da cmdbuild, dal messaggio soap in arrivo su CMDBuild vengono prese le credenziali e passate ad un PasswordHandler che le "matcha" con quelle sulla base di dati.

Prova a postare la parte di log relativa all'errore (in modo da poter verificare in quale classe di cmdbuild viene generato).

Giuseppe

 

Previously Ivan wrote:

Ho ricontrollato tutto più e più volte ma nel log di cmdbuild mi trovo sempre lo stesso errore relativo all'autenticazione.

ERROR 2009-10-06 15:24:59 [org.apache.axis2.engine.AxisEngine] WSDoAllReceiver: security processing failed (actions mismatch) org.apache.axis2.AxisFault: WSDoAllReceiver: security processing failed (actions mismatch).

 

Ti faccio un ulteriore domanda relativa alla faccenda dell'autenticazione, visto che comincio a sospettare che ci sta qualcosa che nn va al livello dell'utrenza. Io ho un unico utente creato all'installazione di CMDBuild

User- admin

Password- admin

Queste credenziali oltre ad essere inserite nel codice Java client vanno messe in qualche altro file all'interno del server, tipo file di axis2 o roba del genere.


 

Ciao Giuseppe

grazie per la velocità della risposta eccoti tutto il messaggio presente nel log.

 

ERROR 2009-10-06 15:24:59 [org.apache.axis2.engine.AxisEngine] WSDoAllReceiver: security processing failed (actions mismatch)
org.apache.axis2.AxisFault: WSDoAllReceiver: security processing failed (actions mismatch)
    at org.apache.rampart.handler.WSDoAllReceiver.processBasic(WSDoAllReceiver.java:344)
    at org.apache.rampart.handler.WSDoAllReceiver.processMessage(WSDoAllReceiver.java:86)
    at org.apache.rampart.handler.WSDoAllHandler.invoke(WSDoAllHandler.java:72)
    at org.apache.axis2.engine.Phase.invoke(Phase.java:317)
    at org.apache.axis2.engine.AxisEngine.invoke(AxisEngine.java:264)
    at org.apache.axis2.engine.AxisEngine.receive(AxisEngine.java:163)
    at org.apache.axis2.transport.http.HTTPTransportUtils.processHTTPPostRequest(HTTPTransportUtils.java:275)
    at org.apache.axis2.transport.http.AxisServlet.doPost(AxisServlet.java:133)
    at javax.servlet.http.HttpServlet.service(HttpServlet.java:637)
    at javax.servlet.http.HttpServlet.service(HttpServlet.java:717)
    at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:290)
    at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:206)
    at org.cmdbuild.filters.AuthFilter.doFilter(AuthFilter.java:29)
    at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:235)
    at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:206)
    at org.cmdbuild.filters.ConfCheckFilter.doFilter(ConfCheckFilter.java:31)
    at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:235)
    at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:206)
    at org.cmdbuild.filters.TranslationFilter.doFilter(TranslationFilter.java:47)
    at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:235)
    at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:206)
    at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:233)
    at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:191)
    at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:128)
    at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:102)
    at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:109)
    at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:293)
    at org.apache.coyote.http11.Http11Processor.process(Http11Processor.java:849)
    at org.apache.coyote.http11.Http11Protocol$Http11ConnectionHandler.process(Http11Protocol.java:583)
    at org.apache.tomcat.util.net.JIoEndpoint$Worker.run(JIoEndpoint.java:454)
    at java.lang.Thread.run(Unknown Source)

 

Ulteriore domanda che ti faccio è la seguente se devo usare un handler non dovrei avere necessariamente  una classe per gestirlo all'interno del progetto ?

Previously Tecnoteca wrote:

L'errore che ricevi indica che il meccanismo di autenticazione utilizzato dal client è diverso da quello del server.

Parrebbe che il file di policy non venga interpretato correttamente. Potresti postare il messaggio soap di richiesta e quello di risposta generati. Li puoi visualizzare utilizzando tcpmon o qualsiasi monitor tcp. Ho il dubbio che non venga creato correttamente l'header del messaggio soap.

Per  quanto riguarda l'altra domanda, le credenziali non vanno inserite in axis2.xml. Nel momento in cui chiami il servizio esposto da cmdbuild, dal messaggio soap in arrivo su CMDBuild vengono prese le credenziali e passate ad un PasswordHandler che le "matcha" con quelle sulla base di dati.

Prova a postare la parte di log relativa all'errore (in modo da poter verificare in quale classe di cmdbuild viene generato).

Giuseppe

 

Previously Ivan wrote:

Ho ricontrollato tutto più e più volte ma nel log di cmdbuild mi trovo sempre lo stesso errore relativo all'autenticazione.

ERROR 2009-10-06 15:24:59 [org.apache.axis2.engine.AxisEngine] WSDoAllReceiver: security processing failed (actions mismatch) org.apache.axis2.AxisFault: WSDoAllReceiver: security processing failed (actions mismatch).

 

Ti faccio un ulteriore domanda relativa alla faccenda dell'autenticazione, visto che comincio a sospettare che ci sta qualcosa che nn va al livello dell'utrenza. Io ho un unico utente creato all'installazione di CMDBuild

User- admin

Password- admin

Queste credenziali oltre ad essere inserite nel codice Java client vanno messe in qualche altro file all'interno del server, tipo file di axis2 o roba del genere.


 

 

Avrei bisogno anche del messaggio soap di richiesta e di quello di risposta.

Per quanto riguarda l'utilizzo dell'handler, lato client puoi utilizzarlo se per caso devi prendere le credenziali da qualche fonte particolare (ad esempio database). Chiaramente dipende da che cosa vuoi fare, dalla complessità dell'applicazione, ecc...

Giuseppe

 

 

Previously Ivan wrote:

Ciao Giuseppe

grazie per la velocità della risposta eccoti tutto il messaggio presente nel log.

 

ERROR 2009-10-06 15:24:59 [org.apache.axis2.engine.AxisEngine] WSDoAllReceiver: security processing failed (actions mismatch)
org.apache.axis2.AxisFault: WSDoAllReceiver: security processing failed (actions mismatch)
    at org.apache.rampart.handler.WSDoAllReceiver.processBasic(WSDoAllReceiver.java:344)
    at org.apache.rampart.handler.WSDoAllReceiver.processMessage(WSDoAllReceiver.java:86)
    at org.apache.rampart.handler.WSDoAllHandler.invoke(WSDoAllHandler.java:72)
    at org.apache.axis2.engine.Phase.invoke(Phase.java:317)
    at org.apache.axis2.engine.AxisEngine.invoke(AxisEngine.java:264)
    at org.apache.axis2.engine.AxisEngine.receive(AxisEngine.java:163)
    at org.apache.axis2.transport.http.HTTPTransportUtils.processHTTPPostRequest(HTTPTransportUtils.java:275)
    at org.apache.axis2.transport.http.AxisServlet.doPost(AxisServlet.java:133)
    at javax.servlet.http.HttpServlet.service(HttpServlet.java:637)
    at javax.servlet.http.HttpServlet.service(HttpServlet.java:717)
    at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:290)
    at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:206)
    at org.cmdbuild.filters.AuthFilter.doFilter(AuthFilter.java:29)
    at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:235)
    at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:206)
    at org.cmdbuild.filters.ConfCheckFilter.doFilter(ConfCheckFilter.java:31)
    at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:235)
    at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:206)
    at org.cmdbuild.filters.TranslationFilter.doFilter(TranslationFilter.java:47)
    at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:235)
    at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:206)
    at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:233)
    at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:191)
    at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:128)
    at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:102)
    at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:109)
    at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:293)
    at org.apache.coyote.http11.Http11Processor.process(Http11Processor.java:849)
    at org.apache.coyote.http11.Http11Protocol$Http11ConnectionHandler.process(Http11Protocol.java:583)
    at org.apache.tomcat.util.net.JIoEndpoint$Worker.run(JIoEndpoint.java:454)
    at java.lang.Thread.run(Unknown Source)

 

Ulteriore domanda che ti faccio è la seguente se devo usare un handler non dovrei avere necessariamente  una classe per gestirlo all'interno del progetto ?

 

Scusa Giuseppe pensavo di averlo postato ecco quello che vedo su tcpmon

 

POST /cmdbuild/services/soap/Webservices/ HTTP/1.1
Content-Type: application/soap+xml; charset=UTF-8; action="urn:getCardList"
User-Agent: Axis2
Host: 192.168.0.32:5432
Transfer-Encoding: chunked

1c5
<?xml version='1.0' encoding='UTF-8'?><soapenv:Envelope xmlns:soapenv="http://www.w3.org/2003/05/soap-envelope"><soapenv:Header>
<wsse:Security xmlns:wsse="http://docs.oasis-open.org/wss/2004/01/oasis-200401-wss-wssecurity-secext-1.0.xsd" soapenv:mustUnderstand="true" /></soapenv:Header><soapenv:Body><ns1:getCardList xmlns:ns1="http://soap.services.cmdbuild.org"><ns1:className>Asset</ns1:className></ns1:getCardList></soapenv:Body></soapenv:Envelope>
0

----------------------------------------------------

 

HTTP/1.1 500 Internal Server Error
Server: Apache-Coyote/1.1
Content-Type: text/html;charset=utf-8
Content-Length: 2154
Date: Tue, 06 Oct 2009 15:12:28 GMT
Connection: close

<html><head><title>Apache Tomcat/6.0.20 - Error report</title><style><!--H1 {font-family:Tahoma,Arial,sans-serif;color:white;background-color:#525D76;font-size:22px;} H2 {font-family:Tahoma,Arial,sans-serif;color:white;background-color:#525D76;font-size:16px;} H3 {font-family:Tahoma,Arial,sans-serif;color:white;background-color:#525D76;font-size:14px;} BODY {font-family:Tahoma,Arial,sans-serif;color:black;background-color:white;} B {font-family:Tahoma,Arial,sans-serif;color:white;background-color:#525D76;} P {font-family:Tahoma,Arial,sans-serif;background:white;color:black;font-size:12px;}A {color : black;}A.name {color : black;}HR {color : #525D76;}--></style> </head><body><h1>HTTP Status 500 - </h1><HR size="1" noshade="noshade"><p><b>type</b> Exception report</p><p><b>message</b> <u></u></p><p><b>description</b> <u>The server encountered an internal error () that prevented it from fulfilling this request.</u></p><p><b>exception</b> <pre>java.lang.NullPointerException
    org.apache.rampart.RampartMessageData.&lt;init&gt;(RampartMessageData.java:308)
    org.apache.rampart.MessageBuilder.build(MessageBuilder.java:61)
    org.apache.rampart.handler.RampartSender.invoke(RampartSender.java:64)
    org.apache.axis2.engine.Phase.invoke(Phase.java:317)
    org.apache.axis2.engine.AxisEngine.invoke(AxisEngine.java:264)
    org.apache.axis2.engine.AxisEngine.sendFault(AxisEngine.java:520)
    org.apache.axis2.transport.http.AxisServlet.handleFault(AxisServlet.java:416)
    org.apache.axis2.transport.http.AxisServlet.processAxisFault(AxisServlet.java:379)
    org.apache.axis2.transport.http.AxisServlet.doPost(AxisServlet.java:167)
    javax.servlet.http.HttpServlet.service(HttpServlet.java:637)
    javax.servlet.http.HttpServlet.service(HttpServlet.java:717)
    org.cmdbuild.filters.AuthFilter.doFilter(AuthFilter.java:29)
    org.cmdbuild.filters.ConfCheckFilter.doFilter(ConfCheckFilter.java:31)
    org.cmdbuild.filters.TranslationFilter.doFilter(TranslationFilter.java:47)
</pre></p><p><b>note</b> <u>The full stack trace of the root cause is available in the Apache Tomcat/6.0.20 logs.</u></p><HR size="1" noshade="noshade"><h3>Apache Tomcat/6.0.20</h3></body></html>

Previously Tecnoteca wrote:

Avrei bisogno anche del messaggio soap di richiesta e di quello di risposta.

Per quanto riguarda l'utilizzo dell'handler, lato client puoi utilizzarlo se per caso devi prendere le credenziali da qualche fonte particolare (ad esempio database). Chiaramente dipende da che cosa vuoi fare, dalla complessità dell'applicazione, ecc...

Giuseppe

 

 

Previously Ivan wrote:

Ciao Giuseppe

grazie per la velocità della risposta eccoti tutto il messaggio presente nel log.

 

ERROR 2009-10-06 15:24:59 [org.apache.axis2.engine.AxisEngine] WSDoAllReceiver: security processing failed (actions mismatch)
org.apache.axis2.AxisFault: WSDoAllReceiver: security processing failed (actions mismatch)
    at org.apache.rampart.handler.WSDoAllReceiver.processBasic(WSDoAllReceiver.java:344)
    at org.apache.rampart.handler.WSDoAllReceiver.processMessage(WSDoAllReceiver.java:86)
    at org.apache.rampart.handler.WSDoAllHandler.invoke(WSDoAllHandler.java:72)
    at org.apache.axis2.engine.Phase.invoke(Phase.java:317)
    at org.apache.axis2.engine.AxisEngine.invoke(AxisEngine.java:264)
    at org.apache.axis2.engine.AxisEngine.receive(AxisEngine.java:163)
    at org.apache.axis2.transport.http.HTTPTransportUtils.processHTTPPostRequest(HTTPTransportUtils.java:275)
    at org.apache.axis2.transport.http.AxisServlet.doPost(AxisServlet.java:133)
    at javax.servlet.http.HttpServlet.service(HttpServlet.java:637)
    at javax.servlet.http.HttpServlet.service(HttpServlet.java:717)
    at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:290)
    at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:206)
    at org.cmdbuild.filters.AuthFilter.doFilter(AuthFilter.java:29)
    at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:235)
    at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:206)
    at org.cmdbuild.filters.ConfCheckFilter.doFilter(ConfCheckFilter.java:31)
    at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:235)
    at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:206)
    at org.cmdbuild.filters.TranslationFilter.doFilter(TranslationFilter.java:47)
    at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:235)
    at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:206)
    at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:233)
    at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:191)
    at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:128)
    at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:102)
    at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:109)
    at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:293)
    at org.apache.coyote.http11.Http11Processor.process(Http11Processor.java:849)
    at org.apache.coyote.http11.Http11Protocol$Http11ConnectionHandler.process(Http11Protocol.java:583)
    at org.apache.tomcat.util.net.JIoEndpoint$Worker.run(JIoEndpoint.java:454)
    at java.lang.Thread.run(Unknown Source)

 

Ulteriore domanda che ti faccio è la seguente se devo usare un handler non dovrei avere necessariamente  una classe per gestirlo all'interno del progetto ?

 

 

Ok. Il messaggio SOAP di richiesta non è conforme con la specifica UsernameToken. In particolare l'header del messaggio con contiene la parte necessaria ad autenticarsi.

Il messaggio generato dovrebbe essere un qualcosa del tipo

<?xml version='1.0' encoding='UTF-8'?>
   <soapenv:Envelope xmlns:soapenv="http://www.w3.org/2003/05/soap-envelope">
      <soapenv:Header>
         <wsse:Security xmlns:wsse="http://docs.oasis-open.org/wss/2004/01/oasis-200401-wss-wssecurity-secext-1.0.xsd" soapenv:mustUnderstand="true">
            <wsse:UsernameToken xmlns:wsu="http://docs.oasis-open.org/wss/2004/01/oasis-200401-wss-wssecurity-utility-1.0.xsd" wsu:Id="UsernameToken-31375837">
               <wsse:Username>admin</wsse:Username>
               <wsse:Password Type="http://docs.oasis-open.org/wss/2004/01/oasis-200401-wss-username-token-profile-1.0#PasswordDigest">hzRr79+WWhzbNLsKWqZ9aGUbS3I=</wsse:Password>
               <wsse:Nonce>4r2ijj3o5cBACS5ImPBIGQ==</wsse:Nonce>
               <wsu:Created>2009-10-06T15:30:47.328Z</wsu:Created>
            </wsse:UsernameToken>
         </wsse:Security>
      </soapenv:Header>
      <soapenv:Body>
         <ns1:getCardList xmlns:ns1="http://soap.services.cmdbuild.org">
            <ns1:className>Asset</ns1:className>
         </ns1:getCardList>
      </soapenv:Body>
   </soapenv:Envelope>

Probabilmente qualcosa non va nel file policy.xml che utilizzi.  Verifica che nel file sia specificato che il messaggio in uscita deve contenere lo UsernameToken.  Rampart (lato client) non riesce a generare il codice per popolare l'header.

Verifica che la struttura in repository sia corretta. Deve essere

|-repository

     |-conf

          |- policy.xml

      |- modules

          |- rampart-1.4.mar

Inoltre prova a mettere, quando fai l'engage del modulo, rampart anziché rampart1.4 (quindi stub._getServiceClient().engageModule("rampart"); )

Giuseppe

Previously Ivan wrote:

Scusa Giuseppe pensavo di averlo postato ecco quello che vedo su tcpmon

 

POST /cmdbuild/services/soap/Webservices/ HTTP/1.1
Content-Type: application/soap+xml; charset=UTF-8; action="urn:getCardList"
User-Agent: Axis2
Host: 192.168.0.32:5432
Transfer-Encoding: chunked

1c5
<?xml version='1.0' encoding='UTF-8'?><soapenv:Envelope xmlns:soapenv="http://www.w3.org/2003/05/soap-envelope"><soapenv:Header>
<wsse:Security xmlns:wsse="http://docs.oasis-open.org/wss/2004/01/oasis-200401-wss-wssecurity-secext-1.0.xsd" soapenv:mustUnderstand="true" /></soapenv:Header><soapenv:Body><ns1:getCardList xmlns:ns1="http://soap.services.cmdbuild.org"><ns1:className>Asset</ns1:className></ns1:getCardList></soapenv:Body></soapenv:Envelope>
0

----------------------------------------------------

 

HTTP/1.1 500 Internal Server Error
Server: Apache-Coyote/1.1
Content-Type: text/html;charset=utf-8
Content-Length: 2154
Date: Tue, 06 Oct 2009 15:12:28 GMT
Connection: close

<html><head><title>Apache Tomcat/6.0.20 - Error report</title><style><!--H1 {font-family:Tahoma,Arial,sans-serif;color:white;background-color:#525D76;font-size:22px;} H2 {font-family:Tahoma,Arial,sans-serif;color:white;background-color:#525D76;font-size:16px;} H3 {font-family:Tahoma,Arial,sans-serif;color:white;background-color:#525D76;font-size:14px;} BODY {font-family:Tahoma,Arial,sans-serif;color:black;background-color:white;} B {font-family:Tahoma,Arial,sans-serif;color:white;background-color:#525D76;} P {font-family:Tahoma,Arial,sans-serif;background:white;color:black;font-size:12px;}A {color : black;}A.name {color : black;}HR {color : #525D76;}--></style> </head><body><h1>HTTP Status 500 - </h1><HR size="1" noshade="noshade"><p><b>type</b> Exception report</p><p><b>message</b> <u></u></p><p><b>description</b> <u>The server encountered an internal error () that prevented it from fulfilling this request.</u></p><p><b>exception</b> <pre>java.lang.NullPointerException
    org.apache.rampart.RampartMessageData.&lt;init&gt;(RampartMessageData.java:308)
    org.apache.rampart.MessageBuilder.build(MessageBuilder.java:61)
    org.apache.rampart.handler.RampartSender.invoke(RampartSender.java:64)
    org.apache.axis2.engine.Phase.invoke(Phase.java:317)
    org.apache.axis2.engine.AxisEngine.invoke(AxisEngine.java:264)
    org.apache.axis2.engine.AxisEngine.sendFault(AxisEngine.java:520)
    org.apache.axis2.transport.http.AxisServlet.handleFault(AxisServlet.java:416)
    org.apache.axis2.transport.http.AxisServlet.processAxisFault(AxisServlet.java:379)
    org.apache.axis2.transport.http.AxisServlet.doPost(AxisServlet.java:167)
    javax.servlet.http.HttpServlet.service(HttpServlet.java:637)
    javax.servlet.http.HttpServlet.service(HttpServlet.java:717)
    org.cmdbuild.filters.AuthFilter.doFilter(AuthFilter.java:29)
    org.cmdbuild.filters.ConfCheckFilter.doFilter(ConfCheckFilter.java:31)
    org.cmdbuild.filters.TranslationFilter.doFilter(TranslationFilter.java:47)
</pre></p><p><b>note</b> <u>The full stack trace of the root cause is available in the Apache Tomcat/6.0.20 logs.</u></p><HR size="1" noshade="noshade"><h3>Apache Tomcat/6.0.20</h3></body></html>