Ankündigung

Einklappen
Keine Ankündigung bisher.

Webservice aus eigenen Java-Klassen aufrufen

Einklappen
X

Webservice aus eigenen Java-Klassen aufrufen

Einklappen
  • Filter
  • Zeit
Alles löschen
neue Beiträge

  • Webservice aus eigenen Java-Klassen aufrufen

    Hallo,

    mein Framework zum Aufruf eines Webservice habe ich als jar in die C:\Program Files\intrexx\lib\custom eingebunden und kann sie auch aufrufen.
    Aber beim instanziieren von
    Code:
    new javax.xml.ws.Service(URL wsdl, QName qname)
    bekomme ich aber null zurück.

    Als Standalone java funktioniert es, nur in Intrexx nicht.
    Kann mir jemand sagen an was das liegen kann ? Kann man vielleicht aus Intrexx heraus kein Webservice so aufrufen ?

  • #2
    Also es kommt keine ClassNotFound Exception sondern der Constructor liefert null?

    Laut der Dokumentation hat diese Klasse statische Methoden die scheinbar zur Erzeugung eines Service Objekts genutzt werden sollten, hast du diese mal probiert?
    http://docs.oracle.com/javaee/6/api/...amespace.QName)

    Code:
    import javax.xml.ws.Service
    def service = Service.create(wsdl,qname)

    Kommentar


    • #3
      Hab das mal mit der statischen Methode versucht. Das Ergebnis ist ähnlich:
      Code:
      private Service service = null;
      
          public XRXServiceManager(URL wsdlURL) {
              try{
                  service = Service.create(wsdlURL, ServiceManager.SERVICEMANAGER_QNAME);
              }catch(Exception ex){
                  ex.printStackTrace();
              }
          }
      service ist null. Wie kann ich den TrackTrace ausgeben ? So wie ich es hier gemacht habe wird nichts ins log geschrieben.

      Kommentar


      • #4
        Ein Stacktrace wird ja meist nur geschrieben, wenn eine Exception auftritt.
        Macht es einen Unterschied das so zu schreiben?
        Code:
        private Service service = null;
        public XRXServiceManager(URL wsdlURL) {
            try{
        [B]        this.[/B]service = Service.create(wsdlURL, ServiceManager.SERVICEMANAGER_QNAME);
            }catch(Exception ex){
                ex.printStackTrace();
            }
        }

        Kommentar


        • #5
          was sollte das this daran ändern ?

          Kommentar


          • #6
            der Codeschnipsel sieht danach aus als wäre das Konstrukt Teil einer Klasse und die Variable service ebenfalls ein Attribut der Klasse.
            Diese Attribute lassen sich per this.Attributname ansprechen. Besonders in Groovy kann es passieren, dass bei fehlendem this ein Binding erzeugt wird und das Attribut dann leer bleibt. Ich bin mir zwar nicht 100% sicher, aber das könnte sein.

            Gäbes es das Attribut nicht, wäre eine weitere Möglichkeit der Codeblock in dem die Variable definiert wird. In der Regel werden Variablen wieder verworfen wenn der Codeblock in dem sie erzeugt wurden(hier der try-Block) verlassen wird.

            Ich würde es mal ohne Klasse und Codeblock drumrum testen:
            Code:
            [B]def [/B]service = Service.create(wsdlURL, ServiceManager.SERVICEMANAGER_QNAME); g_syslog.info(service)

            Kommentar


            • #7
              Okay, ich muss zur Erklärung etwas mehr beschreiben :

              es ist kein groovy, sondern ich rufe eine Methode aus einem velocity Script auf einer intrexx Ausgabe Seite auf

              Kommentar


              • #8
                Kann es sein das es mit der Webservice Implementierung zu tun hat ? Was benutzt Intrexx da, Apache Axis ?

                BTW:
                Ein
                Code:
                System.out.println(ausgabe);
                funktioniert auch nicht. Gibt es einen speziellen Logger in Intrexx zur Ausgabe in die portal.log ?

                Kommentar


                • #9
                  Damit kann man ins portal.log schreiben:

                  Groovy:
                  Code:
                  g_syslog.info("<String>") //Info-Logeintrag
                  g_syslog.warn("<String>") //Warn-Logeintrag
                  g_syslog.error("<String>") //Error-Logeintrag
                  Außerdem kann man in Groovy damit auch ins portal.log schreiben:
                  Code:
                  println("<String>")
                  Das println hat den Vorteil, dass im Logfile mehrere Logausgaben zusammengefasst dargestellt werden. Aber den Nahteil, dass man nicht zwischen INFO, WARN und ERROR unterscheiden kann, alle println werden als INFO ausgegeben.

                  Velocity:
                  Code:
                  $DEBUG.info("<String>")
                  $DEBUG.warn("<String>")
                  $DEBUG.error("<String>")
                  In Groovy gibt es dann auch noch eine Methode innerhalb von Prozessen ins workflow.log zu schreiben welches man sich ja direkt im Prozessdesigner anzeigen lassen kann:
                  Code:
                  g_log.info("<String>")
                  g_log.warn("<String>")
                  g_log.error("<String>")
                  In JavaScript kann man in die Web-Konsole schreiben:
                  Code:
                  console.log("<Object>");
                  log("<Object>");

                  Kommentar


                  • #10
                    Hallo,

                    ich hab das jetzt mal anders probiert:

                    Den Webservice unter Integration registrieren. Also den URL zur WSDL eingeben.
                    Dann bekomme ich auch gleich diese Fehlermeldung:

                    Code:
                    ERROR 2017-06-12 16:43:45,156 - de.uplanet.lucy.server.connector.soap.SoapConnectionHandler[SoapConnectorWorker-0.0.0.0:8103-8]
                          Invocation error with target service de.uplanet.lucy.server.webservice.registry.WsdlRegistryStub.
                    javax.net.ssl.SSLHandshakeException: sun.security.validator.ValidatorException: PKIX path building failed: sun.security.provider.certpath.SunCertPathBuilderException: unable to find valid certification path to requested target
                        at sun.security.ssl.Alerts.getSSLException(Alerts.java:192)
                        at sun.security.ssl.SSLSocketImpl.fatal(SSLSocketImpl.java:1949)
                        at sun.security.ssl.Handshaker.fatalSE(Handshaker.java:302)
                        at sun.security.ssl.Handshaker.fatalSE(Handshaker.java:296)
                        at sun.security.ssl.ClientHandshaker.serverCertificate(ClientHandshaker.java:1509)
                        at sun.security.ssl.ClientHandshaker.processMessage(ClientHandshaker.java:216)
                        at sun.security.ssl.Handshaker.processLoop(Handshaker.java:979)
                        at sun.security.ssl.Handshaker.process_record(Handshaker.java:914)
                        at sun.security.ssl.SSLSocketImpl.readRecord(SSLSocketImpl.java:1062)
                        at sun.security.ssl.SSLSocketImpl.performInitialHandshake(SSLSocketImpl.java:1375)
                        at sun.security.ssl.SSLSocketImpl.startHandshake(SSLSocketImpl.java:1403)
                        at sun.security.ssl.SSLSocketImpl.startHandshake(SSLSocketImpl.java:1387)
                        at sun.net.www.protocol.https.HttpsClient.afterConnect(HttpsClient.java:559)
                        at sun.net.www.protocol.https.AbstractDelegateHttpsURLConnection.connect(AbstractDelegateHttpsURLConnection.java:185)
                        at sun.net.www.protocol.https.HttpsURLConnectionImpl.connect(HttpsURLConnectionImpl.java:153)
                        at de.uplanet.lucy.server.webservice.registry.WsdlGetter.a(Unknown Source)
                        at de.uplanet.lucy.server.webservice.registry.WsdlGetter.access$000(Unknown Source)
                        at de.uplanet.lucy.server.webservice.registry.WsdlGetter$InternalWSDLLocator._getInputSource(Unknown Source)
                        at de.uplanet.lucy.server.webservice.registry.WsdlGetter$InternalWSDLLocator.getBaseInputSource(Unknown Source)
                        at com.ibm.wsdl.xml.WSDLReaderImpl.readWSDL(WSDLReaderImpl.java:2403)
                        at de.uplanet.lucy.server.webservice.registry.WsdlGetter.a(Unknown Source)
                        at de.uplanet.lucy.server.webservice.registry.WsdlGetter.b(Unknown Source)
                        at de.uplanet.net.GlobalAuthenticator.authenticate(Unknown Source)
                        at de.uplanet.lucy.server.webservice.registry.WsdlGetter.get(Unknown Source)
                        at de.uplanet.lucy.server.webservice.registry.WsdlRegistryStub.a(Unknown Source)
                        at de.uplanet.lucy.server.webservice.registry.WsdlRegistryStub.downloadWsdl(Unknown Source)
                        at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
                        at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
                        at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
                        at java.lang.reflect.Method.invoke(Method.java:498)
                        at org.apache.axis.providers.java.RPCProvider.invokeMethod(RPCProvider.java:397)
                        at org.apache.axis.providers.java.RPCProvider.processMessage(RPCProvider.java:186)
                        at org.apache.axis.providers.java.JavaProvider.invoke(JavaProvider.java:323)
                        at org.apache.axis.strategies.InvocationStrategy.visit(InvocationStrategy.java:32)
                        at org.apache.axis.SimpleChain.doVisiting(SimpleChain.java:118)
                        at org.apache.axis.SimpleChain.invoke(SimpleChain.java:83)
                        at org.apache.axis.handlers.soap.SOAPService.invoke(SOAPService.java:454)
                        at org.apache.axis.server.AxisServer.invoke(AxisServer.java:281)
                        at de.uplanet.lucy.server.connector.soap.SoapConnectionHandler$InvokeAction.run(Unknown Source)
                        at de.uplanet.lucy.server.connector.soap.SoapConnectionHandler$InvokeAction.run(Unknown Source)
                        at java.security.AccessController.doPrivileged(Native Method)
                        at javax.security.auth.Subject.doAsPrivileged(Subject.java:483)
                        at de.uplanet.lucy.server.connector.soap.SoapConnectionHandler.processRequest(Unknown Source)
                        at de.uplanet.lucy.server.connector.soap.SoapConnectorWorkerThread.run(Unknown Source)
                    Caused by: sun.security.validator.ValidatorException: PKIX path building failed: sun.security.provider.certpath.SunCertPathBuilderException: unable to find valid certification path to requested target
                        at sun.security.validator.PKIXValidator.doBuild(PKIXValidator.java:387)
                        at sun.security.validator.PKIXValidator.engineValidate(PKIXValidator.java:292)
                        at sun.security.validator.Validator.validate(Validator.java:260)
                        at sun.security.ssl.X509TrustManagerImpl.validate(X509TrustManagerImpl.java:324)
                        at sun.security.ssl.X509TrustManagerImpl.checkTrusted(X509TrustManagerImpl.java:229)
                        at sun.security.ssl.X509TrustManagerImpl.checkServerTrusted(X509TrustManagerImpl.java:124)
                        at sun.security.ssl.ClientHandshaker.serverCertificate(ClientHandshaker.java:1491)
                        ... 39 more
                    Caused by: sun.security.provider.certpath.SunCertPathBuilderException: unable to find valid certification path to requested target
                        at sun.security.provider.certpath.SunCertPathBuilder.build(SunCertPathBuilder.java:141)
                        at sun.security.provider.certpath.SunCertPathBuilder.engineBuild(SunCertPathBuilder.java:126)
                        at java.security.cert.CertPathBuilder.build(CertPathBuilder.java:280)
                        at sun.security.validator.PKIXValidator.doBuild(PKIXValidator.java:382)
                        ... 45 more

                    Kommentar


                    • #11
                      Ein SSL-Fehler (javax.net.ssl.SSLHandshakeException: ... unable to find valid certification path to requested target).

                      Vermutlich soll der Webservice per HTTPS angesprochen werden. Dann muss die Java-Runtime entweder das Zertifikat, das der Webservice benutzt, oder die Zertifizierungsstellen, die sein Zertifikat beglaubigt haben, kennen. Wenn Du sie ins Portal importierst (per keytool oder Intrexx-Dialog), sollte danach die verschlüsselte Verbindung möglich sein.

                      Kommentar

                      Lädt...
                      X