# [ERROR] rpc/encoded wsdls are not supported in JAXWS 2.0.



## Mappenz (6. Jul 2011)

Hi,

Ich gehe gerade meine ersten Schritte in Sachen Webservice und habe nur mäßig Java Erfahrung. Meine Aufgabe ist es ein Programm zu schreiben, dass mit einem Webservice kommuniziert. Den Code des Webservices kann ich nicht anfassen. Es gibt massenweise Anleitungen zu JAX WS 2.0, was mir als sehr angenehm erscheint. Leider ist das Format des Webservices nicht kompatibel zu JAX WS 2.0. Wenn ich wsimport -keep ausführen möchte erhalte ich die Fehlermeldung aus dem Titel.

Nach etwas Recherche glaube ich nun zu wissen, dass das Format veraltet ist und habe versucht das Problem so zu lösen wie man es früher gemacht hat. Mit JAX RPC. Dabei habe ich eine Anleitung von 2005 gefunden: Creating a Simple Web Service and Client with JAX-RPC.
Nun sind die tools die im tutorial verwendet werden nicht (mehr) in aktuellen Java Installationen dabei. Ansonsten käme ich schon mit der Anleitung klar.

Da ich in zwischen schon eine beachtliche Menge Zeit in diese Aufgabe gesteckt habe ohne weiter zu kommen erlaube ich mir zu Fragen wie man dieses Problem üblicher weise Löst. Ich kann ja nicht der Einzige sein der mit veralteten Webservice Formaten umgehen muss. Wäre es denn eine gute Idee die Tools irgendwo zu besorgen und mich an das tutorial zu halten? 

Der Webservice tut im übrigen nicht viel, er nimmt 2 Zahlen an und gibt einen zufälligen Wert dazwischen zurück.

mit freundlichen Grüßen
Michi


----------



## Mappenz (6. Jul 2011)

Ich habe mich nocheinmal 4 Stunden rangesetzt. Kein realer Fortschritt. Ich habe die Vermutung, dass ich mit SoapUI meine Stubs erzeugen könnte. Leider ist Installation des Eclipse Plug-Ins nicht einfach, da irgendwelche Abhängigkeiten nicht aufgelöst werden können und die Standalone version auf meinem xubunutu nicht auf Eingaben reagiert. Kurze suche hat hier eine Hilfe gebracht. Nun habe ich noch Hoffnung dass Axis die Lösung bringt. Das werde ich mir aber morgen anschauen. Ansonsten konnte ich nicht herrausfinden woher ich asant bekomme.

Falls jemand weis wie das Problem gelöst wird möge er mir doch bitte bitte sagen wie. Am liebsten wäre mir eine Lösung mit Eclipse oder der Shell.


----------



## gman (6. Jul 2011)

Hi,

XML-RPC wird mittlerweile wirklich nicht mehr unterstützt. Habe auch nur ein paar Tips gefunden es it
Axis 1 zu versuchen:

jax ws - java: Rpc/encoded wsdls are not supported in JAXWS 2.0 - Stack Overflow
How to make a SOAP call in Java - Stack Overflow

Viel Erfolg


----------



## Mappenz (6. Jul 2011)

Beide links scheinen was zu taugen, aber scheinen damit muss ich mich morgen beschäftigen. THX


----------



## fax (7. Jul 2011)

In GlassFish ist wscompile (und der Rest von JAX-RPC) drin: GlassFish - Open Source Application Server - Java.net.


----------



## Mappenz (7. Jul 2011)

Ich habe glassfish nun installiert und auch schon damit rumexperimentiert. Leider weis ich nicht so recht was ich damit anfangen soll. Die Shell kennt die JAX-RCP Befehle nicht, aber wenn ich asadmin ausführe kann ich, so wie ich verstehe, die Befehle verwenden. Meine letzten versuche orrientierten sich hauptsächlich an Creating a Simple Web Service and Client with JAX-RPC.

Als Beispiel ein Ausschnitt der Shell:


```
asadmin> wscompile http://dienst.speicherweb.de/****.php5?wsdl
Remote server does not listen for requests on [localhost:4848]. Is the server up?
No such local command, wscompile. To run remote commands, start the application server (e.g. 'asadmin start-domain').
Command wscompile failed.
```

an http://dienst.speicherweb.de/****.php5?wsdl liegt der Webservice. Wie erzeuge ich schnell die Stubs damit ich endlich coden kann? 

gruß
Michi


----------



## fax (7. Jul 2011)

```
set PATH=%PATH%;%GF_HOME%\bin
```

%GF_HOME% ersetzt du durch den tatsächlichen Installationspfad von GlassFish. Wenn GlassFish z.B. unter C:\glassfish3 installiert ist, dann tippst du:


```
set PATH=%PATH%;C:\glassfish3\glassfish\bin
```

(Ja, das zweite glassfish muss da sein.)


----------



## Mappenz (8. Jul 2011)

So langsam bin ich dem Ziel schon ganz nahe. Ich benutze Linux, aber nachdem ich die Pfadvariablen gesetzt habe kann kann ich zwar asant immer noch nich aufrufen, dafür aber wscompile. Das ist mehr ist meiner Meinung nach auch nicht nötig.

Nochmal zur Erinnerung: Ich orientiere mich an diesem Tutorial: Creating a Simple Web Service and Client with JAX-RPC. 

Nach dem sich ein einige Ideen als Falsch herrausgestellt haben bin glaube ich nur noch einen Schritt von den stubs entfernt zu sein.

ich habe eine xml Datei mit dem namen configWeb.xml mit dem Inhalt geschrieben:

[XML]<?xml version="1.0" encoding="UTF-8"?>
<configuration 
  xmlns="http://java.sun.com/xml/ns/jax-rpc/ri/config">
  <wsdl location="http://dienst.speicherweb.de/*****.php5?wsdl" packageName="uebungarbeit.web"/>
</configuration> [/XML]

Nun rufe ich wscompile so auf: 
	
	
	
	





```
wscompile -gen:client -d src/web configWeb.xml
```
 und erhalte als Fehlermeldung:

```
Fehler: com.sun.tools.javac.Main ist im Klassenpfad nicht verfügbar..
Fehler: Kompilierung fehlgeschlagen, die Fehler wurden gemeldet
```

Wenn ich in der console javac eingebe startet javac. Es wundert mich nicht, dass der classpath nicht mehr stimmt, schließlich wurde aus allem was früher sun hieß oracle. Wie erfährt nun wscompile davon, falls das überhaupt zielführend ist? Schließlich will ich nur die stubs haben.

Nebenbei: http://java.sun.com/xml/ns/jax-rpc/ri/config wie in der xml verwendet gibt es auch nicht mehr, scheint aber nicht zu stören, versteh nicht warum das keine Probleme macht.

update

```
wscompile -gen:client -d src/web -classpath usr/lib/jvm/java-1.5.0-gcj-4.5/lib/ configWeb.xml
```
 machst auch nicht besser, ich habe rausgefunden, dass ich tools.jar irgendwie verwenden muss.


----------



## fax (8. Jul 2011)

Mappenz hat gesagt.:


> Wenn ich in der console javac eingebe startet javac. Es wundert mich nicht, dass der classpath nicht mehr stimmt, schließlich wurde aus allem was früher sun hieß oracle. Wie erfährt nun wscompile davon, falls das überhaupt zielführend ist? Schließlich will ich nur die stubs haben.


Setze JAVA_HOME.



Mappenz hat gesagt.:


> Nebenbei: http://java.sun.com/xml/ns/jax-rpc/ri/config wie in der xml verwendet gibt es auch nicht mehr, scheint aber nicht zu stören, versteh nicht warum das keine Probleme macht.


Das ist nur der XML Namespace. Der sollte eindeutig sein, aber eine real existierende URL muss das nicht sein.


----------



## Mappenz (9. Jul 2011)

allright, so wie es aussieht hat jetzt endlich alles funktioniert. THX


----------

