Service wirft einen Nullpointer

tanechka

Bekanntes Mitglied
Hallo,

in dem Projekt wurden die Klassen mit Hilfe von Maven aus der Wsdls generiert. Im Projekt läuft auch alles über Run, der SOAP-Service ist auch erreichbar. Sobald aber ich meine .jar generiere und in der Console ausführe, gibt es eine Nullpointer Exception.
Meine dependencies:
Code:
        <dependency>
   <groupId>org.apache.cxf</groupId>
            <artifactId>cxf-rt-frontend-jaxws</artifactId>
            <version>${cxf.version}</version>
        </dependency>
        <dependency>
            <groupId>org.apache.cxf</groupId>
            <artifactId>cxf-rt-transports-http</artifactId>
            <version>${cxf.version}</version>
        </dependency>
        <dependency>
            <groupId>org.apache.cxf</groupId>
            <artifactId>cxf-rt-transports-http-jetty</artifactId>
            <version>${cxf.version}</version>
        </dependency>
....
    <resources>
            <resource>
                <directory>src/main/resources</directory>
                <excludes>
                    <exclude>**/*.java</exclude>
                </excludes>
            </resource>

........
<plugin>
                <groupId>org.apache.cxf</groupId>
                <artifactId>cxf-codegen-plugin</artifactId>
                <version>${cxf.version}</version>
                <executions>
                    <execution>
                        <id>generate-sources</id>
                        <phase>generate-sources</phase>
                        <configuration>                                                   
                            <sourceRoot>${basedir}/k_generated</sourceRoot>
                              <wsdlDirectory>src/main/resources/K/</wsdlDirectory>
                            
                            <wsdlOptions>
                                <wsdlOption>
                                    <wsdl>${basedir}/src/main/resources/K/KService.wsdl</wsdl>            
                                      <wsdlLocation>/K/KService.wsdl</wsdlLocation>                                                 
                                </wsdlOption>
                                 <wsdlOption>
                                    <wsdl>${basedir}/src/main/resources/K/KEventService.wsdl</wsdl>
                                      <wsdlLocation>/K/KService.wsdl</wsdlLocation>                                          
                                </wsdlOption>
                            </wsdlOptions>
                            </configuration>
                        <goals>
                            <goal>wsdl2java</goal>
                        </goals>
                    </execution>
                
                </executions>
            </plugin>
Parallel zu meiner .jar liegt der Ordner /K mit den .wsdls.
An sich ist es alles da, könntet ihr mir bitte weiter helfen?
Danke
 

KonradN

Super-Moderator
Mitarbeiter
Wie wäre es, wenn Du uns noch mehr relevante Details gibst:
  • Kompletter Stacktrace
  • den dazugehörigen Code inc. Hinweisen zu Zeilennummern, falls Du nur Ausschnitte bringen solltest
 

tanechka

Bekanntes Mitglied
ich habe den Fehler bei dem Aufruf vom SOAP-Service abgefangen und geloggt:
Code:
try {
        
            service = new KService();
            service.setHandlerResolver(new WsHandlerResolver());
      
        } catch (Exception e) {
            logger.error("Der Fehler ist aufgetreten: " + e);
        }
Ich vermute, dass etwas mit den Pfaden zu den .wsdls nicht hinhaut.
Ich habe die relativen Pfade benutzt:
Code:
@WebServiceClient(name = "KService",
                  wsdlLocation = "/K/KService.wsdl",
                  targetNamespace = "http://ta-de.net")
public class KService extends Service {
Die wsdls liegen parallel zu der jar in dem K-Ordner. Ich habe auch classpath: versucht zu benutzen und auch leider ohne Erfolg.
 

KonradN

Super-Moderator
Mitarbeiter
wsdlLocation ist eine URL, wenn ich nach WebServiceClient (Java Platform SE 8 ) (oracle.com) gehe.

Mit /K/KService.wsdl gibst Du einen absoluten Pfad an. Das hört sich also schon falsch an. Da wäre ein ./K/KService.wsdl vermutlich besser.
Wobei das auch nur funktioniert, wenn der Pfad richtig ist beim Start der jar. Das ist teilweise nicht der Fall. Ich meine, bei einem Doppelclick ist das Arbeitsverzeichnis unter Windows teilweise das System32 Verzeichnis und so ... Oder bei einem java -jar Aufruf kann die jar Datei ja mit Pfad angegeben werden ...
 

tanechka

Bekanntes Mitglied
ich habe jetzt mehr Info zu dem Nullpointer:
Code:
java.lang.NullPointerException
    at org.apache.cxf.wsdl11.WSDLServiceFactory.<init>(WSDLServiceFactory.java:85)
    at org.apache.cxf.jaxws.ServiceImpl.initializePorts(ServiceImpl.java:217)
    at org.apache.cxf.jaxws.ServiceImpl.initialize(ServiceImpl.java:160)
    at org.apache.cxf.jaxws.ServiceImpl.<init>(ServiceImpl.java:128)
    at org.apache.cxf.jaxws.spi.ProviderImpl.createServiceDelegate(ProviderImpl.java:82)
    at javax.xml.ws.Service.<init>(Service.java:82)
wsdlLocation enthält den Pfad zu der SOAP-wsdl.
 

Manul

Mitglied
Just my 2 cents, ohne die Library praktisch zu kennen ...

Mit Blick auf die Implementierung kann man es zumindest auf 2 grundlegende Möglichkeiten einschränken was da null gewesen sein könnte.

Wobei diese Library bis jetzt auch einen eher durchwachsenen ersten Eindruck auf mich macht. Das Null-Handling ist an dieser Stelle (und nach Überfliegen des Codes wohl auch insgesamt) recht verbesserungswürdig, und an anderer Stelle war vor kurzem ja auch die praktisch nicht vorhandene Dokumentation elementarer Felder (und die daraus resultierende Notwendigkeit für Reverse Engineering) unangenehm aufgefallen.
 

KonradN

Super-Moderator
Mitarbeiter
Also wenn es an fehlenden Abhängigkeiten liegt, dann musst Du dafür sorgen, dass alle notwendigen Abhängigkeiten beim Start vorhanden sind. Dabei gibt es viele Wege, wie Du hier vorgehen kannst:
  • Im Manifest kannst Du einen classpath mit angeben und die Abhängigkeiten müssen dann entsprechend mit vorhanden sein.
  • Du kannst alles, was Du brauchst, auch mit in das jar File packen.

Wenn Du alles in ein fat jar packen willst, dann musst Du aber auch aufpassen, das alle Mechanismen wie hier der vo Service Loader, funktionieren. Ich erstelle FAT Jars in Maven immer mit dem Shade Plugin, denn dieser bietet auch den ServicesResourceTransformer an:
Apache Maven Shade Plugin – Usage
 

tanechka

Bekanntes Mitglied
die Lösung für mein Problem war die shaded jar, jar mit dependency(maven-assembly-plugin) hat an der Stelle nicht ausgereicht.
Code:
      <plugin>
            <groupId>org.apache.maven.plugins</groupId>
            <artifactId>maven-shade-plugin</artifactId>
            <version>2.1</version>
             <configuration>
        <createDependencyReducedPom>false</createDependencyReducedPom>
    </configuration>
            <executions>
              <execution>
                <phase>package</phase>
                <goals>
                  <goal>shade</goal>
                </goals>
                <configuration>
                                   <filters>
                    <filter>
                        <artifact>*:*</artifact>
                        <excludes>
                            <exclude>META-INF/*.SF</exclude>
                            <exclude>META-INF/*.DSA</exclude>
                            <exclude>META-INF/*.RSA</exclude>
                        </excludes>
                    </filter>          
                           
                </filters>
                  <transformers>
                    <transformer implementation="org.apache.maven.plugins.shade.resource.ManifestResourceTransformer">
                     <manifestEntries>
                     <mainClass>......</mainClass>
                      <Multi-Release>true</Multi-Release>
                       </manifestEntries>
                    </transformer>
                      <transformer implementation="org.apache.maven.plugins.shade.resource.ServicesResourceTransformer"/>
       
                  </transformers>                             
                </configuration>
              </execution>
            </executions>            
          </plugin>
 
Ähnliche Java Themen
  Titel Forum Antworten Datum
X Response eines RESTful-Service mit JSON Netzwerkprogrammierung 8
A Socket Wie ein einfacher Multithreads Service mit Telnet als Client mit Observable/Observer gelöst.... Netzwerkprogrammierung 0
J Java Service Wrapper Netzwerkprogrammierung 1
M allgemeine Frage zu einem Web Service Client Netzwerkprogrammierung 2
C Socket Push Service realisieren? Netzwerkprogrammierung 6
1 JBoss Web Service Netzwerkprogrammierung 3
D Timer Service? Netzwerkprogrammierung 4
M RMI Service JBoss Netzwerkprogrammierung 3
G Buchinformationen aus dem Netz abrufen? Kostenloser Service? Netzwerkprogrammierung 3
S Threads bei Web Service sinnvoll oder Alternative? Netzwerkprogrammierung 2
R RMI: Remote Object ohne Naming Service benutzen? Netzwerkprogrammierung 2
C Web Service - Was muss ich lernen? Netzwerkprogrammierung 2
J Web Service mit legacy Wrapper Netzwerkprogrammierung 6
W url.openStream() wirft javax.net.ssl.SSLHandshakeException Netzwerkprogrammierung 8
K Socket Netty Client wirft Fehler! Netzwerkprogrammierung 3
A Socket Browser wirft FM aus Netzwerkprogrammierung 2
D Socket Socket absichtlich so schließen, dass Gegenseite java.net.SocketException: Connection reset wirft Netzwerkprogrammierung 4
C ObjectInputReader wirft beim zweiten Aufruf eine Exception Netzwerkprogrammierung 3
M BufferedInputStream.Read wirft SocketException auf gültigem Socket Netzwerkprogrammierung 7
X RMI: Client wirft NotBoundException Netzwerkprogrammierung 4
F http Post auf einen Grafana Server Netzwerkprogrammierung 3
izoards Mehrere TCP Verbindungen auf einen Server [alles Local] Netzwerkprogrammierung 2
S Java: Anbindung an einen realen Server? (+ Portfreigabe) Netzwerkprogrammierung 8
X Kann ich einen Client/Server verbindung hinkriegen die mir alle paar Sekunden die aktuellen Daten per Realtime zuschickt ? Netzwerkprogrammierung 9
E Kurze Textnachrichten über einen Server von meinem Handy auf den Computer laden. Netzwerkprogrammierung 9
D Socket Message an einen Server senden? Netzwerkprogrammierung 8
C Inhalt einer .JPG Datei in einen OutputStream schreiben? Netzwerkprogrammierung 10
M jsf-seite beim hinzufügen einer csv-datei in einen ordner aktualiseren Netzwerkprogrammierung 0
C Client connection per Portforwarding auf einen lokalen Serverport Netzwerkprogrammierung 3
P Wie spreche ich einen Thread an? Netzwerkprogrammierung 20
P Was brauche ich alles / wo sollte ich einen Blick drauf werfen? Netzwerkprogrammierung 17
E Wie kann man einen einfachen E-Mail Server schreiben Netzwerkprogrammierung 2
T HTTP Einen HTTP Server erstellen Netzwerkprogrammierung 20
Z Socket [Chatprogramm] Mehrere Clients an einen Server Netzwerkprogrammierung 10
N Einen Server als ausführbare Datei exportieren Netzwerkprogrammierung 15
C Socket Probleme beim Lesen und Schreiben aus/in einen Socket Netzwerkprogrammierung 2
M Socket JavaProg über einen Clienten steuern Netzwerkprogrammierung 5
I HTTP Grundlagen um einen Webserver zu erstellen Netzwerkprogrammierung 17
C An WebDAV einen "MKCOL" Befehl versenden Netzwerkprogrammierung 4
D Schreiben auf einen TCP/IP Socket Netzwerkprogrammierung 2
K HTTP-Anfrage an einen Server wird nicht beantwortet Netzwerkprogrammierung 3
H String Array durch einen Stream schicken. Netzwerkprogrammierung 4
L Mit Java auf Forum einloggen und dann einen Threat erstellen Netzwerkprogrammierung 4
R Mehrere Dateien über einen Socket senden Netzwerkprogrammierung 2
L mehrere Streams über einen Socket? Netzwerkprogrammierung 8
A Wichtig für einen Chat? Netzwerkprogrammierung 4
V Mehrere Streams durch einen Stream senden Netzwerkprogrammierung 14
V PC der an einen Router angeschlossen ist aus dem... Netzwerkprogrammierung 13
V Einen Eintrag aus einer Zip Datei von einem Server laden Netzwerkprogrammierung 2
M Wie programmiere ich einen FTP - Server Netzwerkprogrammierung 2
André B. In einen InputStream schreiben? Netzwerkprogrammierung 6
T Html-Source über URL in einen String speichern? Netzwerkprogrammierung 16
P Verschiedene Daten über einen Stream Netzwerkprogrammierung 4
U Einen HandlerThread, der mehrere Verbindungen verwaltet? Netzwerkprogrammierung 2
T Mit FTP verbinden, einen Ordner erstellen und Datei löschen Netzwerkprogrammierung 3
M Socket Verbindungen für einen Chat Netzwerkprogrammierung 10
T file auf einen server laden Netzwerkprogrammierung 4
A Zugriff auf einen fremden Monitor im lan Netzwerkprogrammierung 3

Ähnliche Java Themen

Neue Themen


Oben