webservice mit java erstellen. was brauch ich alles dazu?

Status
Nicht offen für weitere Antworten.

oetzi

Bekanntes Mitglied
moin zusammen,
möchte bzw. muss einen webservice mit java erstellen und irgendwie krieg ich den ganzen spaß nicht ans laufen.
was brauche ich alles für mein unterfangen?
ich entwickle mit
OS Suse und
IDE Eclipse


ein bischen kenn ich mich mit webservice aus. aber halt nur ein bischen ;)

wollte zu test- bzw. einarbeitungszwecken eine kleine bestehende WSDL datei per WSDL2JAVA tool in Code umwandeln lassen, aber allein am umwandeln scheitere ich schon...

kann mir vll jemand noch das generelle vorgehen beschreiben?
sprich mit welchem plugin ich das hinkriege?

ach und noch was? brauche ich eigentlich nen tomcat für den ganzen spaß?

fragen über fragen :)
wäre euch dankbar für ein paar antworten!

mfg oetzi
 

lhein

Top Contributor
Also ich hab gerne XFire verwendet. (XFire)
Das ist jetzt aber irgendwie mit Apache CXF zusammengegangen.

Schau es Dir einfach mal an. Bei mir hat sich damals das ganze auf das Schreiben eines Interfaces, das Einbinden der XFire-Logic (ca. 3-10 Zeilen Code) und das Implementieren des Interfaces auf Serverseite reduziert.

Achja, einen extra Webserver hats da nicht gebraucht, weil das auf Jetty aufsetzt.

Gruß
lr
 

Niki

Top Contributor
Da geb ich doch glatt auch meinen Senf dazu :)

Ich hab mir sowohl XFire als Axis2 angeschaut. Ich finde zu keinem von beidem findet man wirklich gute Tutorials a la "from the scratch". Bin jedoch bei Axis2 geblieben da ich auch schon recht viel mit Axis1.4 gemacht habe.
Das Vorgehen ist wie folgt:
*Axis2 runter laden.
*Eventuell Ant runter laden, ist jedoch in Eclipse integriert.
*Projekt in Eclipse erstellen und eine Lib "axis2" mit allen jars im [axis2home]/lib Verzeichnis definieren. Lib zu Projekt hinzufügen
*Verzeichnis "wsdl" im Projekt anlegen und wsdl-Datei hineinkopieren
* ant-File erstellen, sollte NICHT build.xml heißen, da Axis2 ein eigenes build.xml erzeugt -> createservice.xml oder so:
Code:
<?xml version="1.0" encoding="UTF-8"?>
<project name="myservice" default="generate" basedir=".">
	<property name="sys.dir" value="C:/javalibs" />
	<property name="src.dir" value="src" />

	<property name="ws.wsdl"
	          value="${basedir}/wsdl/myservice.wsdl" />
	<property name="ws.namespace"
	          value="urn:myservicenamespace" />
	<property name="ws.package"
	          value="myservice" />

	<property name="axis2.home" value="${sys.dir}/axis2/1.3" />
	<path id="axis2.classpath">
		<fileset dir="${axis2.home}/lib">
			<include name="axis2-*.jar" />
			<include name="wsdl4j-1.6.2.jar" />
			<include name="stax-api-1.0.1.jar" />
			<include name="commons-logging-1.1.jar" />
			<include name="neethi-2.0.2.jar" />
			<include name="XmlSchema-1.3.2.jar" />
			<include name="axiom-api-1.2.5.jar" />
			<include name="axiom-impl-1.2.5.jar" />
			<include name="activation-1.1.jar" />
			<include name="wstx-asl-3.2.1.jar" />
			<include name="xbean-2.2.0.jar" />
		</fileset>
	</path>
	<taskdef name="wsdl2java"
	         classname="org.apache.axis2.tool.ant.AntCodegenTask"
	         classpathref="axis2.classpath" />

	<target name="generate">
		<wsdl2java targetsourcefolderlocation="${src.dir}"
		       skipwsdl="true"
		       serverside="true"
		       wsdlfilename="${ws.wsdl}"
		       synconly="true"
		       databindingname="xmlbeans"
		       generateservicexml="true"
		       unwrap="false"
		       skipbuildxml="false"
		       namespacetopackages="${ws.namespace}=${ws.package}" />
	</target>
</project>

*Dann rechts-klick auf das xml-File -> Run As -> Ant Build...auswählen --> Dialog öffnet sich

* Target "generate" auswählen und Dialog bestätigen --> Festplatte rattert und Code wird generiert

* Ebenfalls wird ein build.xml im Projekt-Root generiert. Dieses kann man ausführen (ACHTUNG! Variable "AXIS2_HOME" muss in der Umgebung gesetzt sein oder im build.xml das Property "axis2.home" selber setzen)

* rechts-klick auf build.xml -> Run As -> Ant Build... jar.server auswählen

* im Verzeichnis build/lib wird ein .aar File erstellt, dieses ist dein WebService und du kannst es in deiner WebApp deployen.

Die WebApp muss wie folgt aussehen:
Code:
[webapp]
	[axis2-web] (einfach von axis2 Verzeichnis kopieren)
	[WEB-INF]
		[modules] (wieder aus axis2]
		[services] (wieder aus axis2 -> hier gehört dein Service kopiert)
		[lib] (hier die axis2 Bibliotheken kopieren)
		web.xml gehört mit den Einträgen aus axis2 erweitert, einfach die Tags dazukopieren

Das wars, eigentlich sollte jetzt alles wie geschmiert laufen!
Bei Fragen einfach läuten :)
 

lhein

Top Contributor
Sowohl die XFire Homepage als auch die CXF Homepage bieten umfangreiche Dokumentation und Tutorials.

lr
 

Niki

Top Contributor
Braucht man dafür eigentlich spring oder rennt das auch ohne spring?
Soweit ich das mit XFire verstanden habe muss man das Service selber registrieren (mittels Code). Alleine das find ich schon schlecht!
 

oetzi

Bekanntes Mitglied
wow. vielen dank für die ausführliche antwort niki!!! aber natürlich auch ein dank an die anderen ;)

aber nachfragen muss ich wohl auf jedenfall. muss mich wohl zudem als linux noob outen :D
als hintergrundinfo: das ganze ist die vorbereitung für meine abschlussarbeit. und da die abteilung für die ich das mache mit linux arbeit, bin ich halt auch dazu verdammt ;)

naja also folgendes:
1. habe mir axis2-1.2.jar runtergeladen. müsste richtig sein nehme ich an?!
2. so, ne lib(rary) definieren... wie was wo genau? :) ich weiß, dass ich unter properties unter java build path, dort unter libraries jars hinzufügen kann. aber was muss ich vorher mit dem axis2.jar file machen?
3. wenn ich schonmal dabei bin ;) gib mir doch bitte noch nen tipp, wie ich mit eclipse ein ant-file erzeuge

dann probiere ich den rest erstmal, bis dann unweigerlich die nächsten fragen auftauchen *g*
 

lhein

Top Contributor
Ich glaube nicht jeder hat den Bedarf, ein komplexes Framework wie Spring zu verwenden. Es gibt auch ganz simple Anwendungsfälle. Damals habe ich eine Administrationskonsole für meine Serveranwendung geschrieben. Da ging es einfach nur darum, Befehle, die der User am Client eingibt an den Server zu übertragen, dort auszuführen und das Resultat an den Client zurückzuliefern.
Hier hat es ausgereicht ein kleines Interface mit 1 Methode String execute (String comand) zu entwickeln, auf Serverseite dieses Interface zu implementieren und eine Webservice-Ohr zu starten. Der Client kann sich dann mit wenigen Codezeilen auf den Server connecten und loslegen.

Das Interface:

Code:
public interface IConsoleComandHandler
{
    /**
     * handles the user inputs
     * 
     * @param cmd   the comand or shortkey with all params 
     * @return      the result
     */
    public String executeComand(String cmd);
}

Die Serverlogik:

Code:
        ObjectServiceFactory serviceFactory = new ObjectServiceFactory();
    
        // Create an XFire Service (console handler)
        Service consoleHandlerService = serviceFactory.create(IConsoleComandHandler.class);
        consoleHandlerService.setInvoker(new BeanInvoker(new ConsoleComandHandler()));
        
        // Register the service in the ServiceRegistry
        XFire xfire = XFireFactory.newInstance().getXFire();
        xfire.getServiceRegistry().register(consoleHandlerService);
        
        // Start the HTTP server
        server = new XFireHttpServer();
        server.setPort(this.port);
        server.start();

Der Client:

Code:
        ObjectServiceFactory serviceFactory = new ObjectServiceFactory();
        org.codehaus.xfire.service.Service serviceModel = serviceFactory.create(IConsoleComandHandler.class);

        // Create a client proxy
        XFireProxyFactory proxyFactory = new XFireProxyFactory();
        
        try
            {
            IConsoleComandHandler handler = (IConsoleComandHandler) proxyFactory.create(serviceModel, webHandler);

            String comand = getConsoleComand(handler);
            while (!comand.equalsIgnoreCase(QUIT_COMAND) )
                {
                try
                    {
                    System.out.println(handler.executeComand(comand));                    
                    }
                catch (Exception ex)
                    {
                    logger.error("AdminConsole.main(): Error executing the comand " + comand + ".", ex);
                    }                
                finally
                    {
                    comand = getConsoleComand(handler);
                    }
                }
            }
        catch (MalformedURLException muex)
            {
            logger.error("The given adress of the server was not correct.", muex);
            System.exit(-1);
            }

Die Codebeispiele sind stark vereinfacht und unvollständig.
Es ist jedoch zu sehen, daß XFire sehr einfach zu verwenden ist.

Gruß
lr
 

Niki

Top Contributor
Zu deinen Fragen:

1.) Es gibt schon axis2 in der Version 1.3, die habe ich verwendet
2.) im Eclipse auf Window -> Preferences... -> Java -> Build Path -> User Libraries -> New...
Namen vergeben und die jars über "Add Jars..." hinzufügen.
Dann das Projekt markieren.
Project -> Properties -> Java Build Path -> Add Library -> User Library -> und die definierte axis2 lib auswählen
3.) Einfach rechts-klick auf das Project -> New -> File -> createservice.xml als Dateinamen vergeben und schon ist es geschehn
 

oetzi

Bekanntes Mitglied
puh, ich probier grad den ganzen vorgang nach zu vollziehen, um es später auch auf andere projekte anwenden zu können.
ok, das axisplugin liefert mir u.a. die möglichkeiten aus der wsdl code zu erzeugen. darum binde ich das als library ein (konnte man nicht eigentlich plugins einfach in den plugin ordner packen...?)

so, das antfile... :bahnhof:
1. woher haste du den ganzen "code" den du mir dazu gepostet hast? muss man das einfach drauf haben? *g*
2. und dieses antfile dient doch dazu die wsdl in den java code umzuwandeln oder? habe das mal vor einiger zeit bei nem PHP projekt gemacht. da konnte ich dann per rechtsklick auf die wsdl -> xyz ->... mich durchklicken und hatte dann irgendwann den erzeugten code. mich verwirrt also ein bischen das vorgehen mit diesem ant file
3. bekomme ich in zeile 32 einen fehler :) und beim drüber gucken ist mir in der 4. zeile das c:/javalibs aufgefallen. dat klappt wohl unter suse nicht so wirklich ;) auf welches verzeichniss muss dieser wert genau gesetzt werden? welche java librarys werden da gebraucht?

PS kann sein, dass ich erst morgen wieder dazu komme hiermit weiter zu machen
 

Niki

Top Contributor
Den Code hab ich aus Jahre langer Berufserfahrung. Mit der Zeit schreibt man das recht schnell herunter.
Ja, das Antfile dient zum Generieren der Java-Dateien
bei mir wären die Bibliotheken unter
c:/javalibs/[bibliothekenname]/[version der lib]
abgespeichert also:
c:/javalibs/axis2/1.3/

unter Linux wär das IMHO zb:
/javalibs/axis2/1.3

Ich hab noch nie unter SUSE gearbeitet, denke aber das es so ausschauen müsste
Der Fehler aus Zeile 32 dürfte daran liegen, weil er die Bibliotheken nicht findet. Also den Pfad /javalibs.... richtig setzen, dort wo halt axis2 entpackt ist
 

oetzi

Bekanntes Mitglied
moin moin,
neuer tag neues glück ;)

/*
gelöscht dat hat sich nämlich erledigt :)
*/

PS: kann es vll sein, dass ich die falsche datei runtergeladen habe?? vll hat jemand mal nen link für mich. einfach zur sicherheit, dass ich nicht mit wat ganz falschen hier arbeite :(

--> genau das war das problem... verdammt. hab mir jetzt mit nem windows rechner die 1.3er version gezogen entpackt und dann auf die linux kiste geschoben. jetzt habe ich auch alle ordner drin die benötigt werden.
so weiter gehts :)
 

oetzi

Bekanntes Mitglied
naja ganz ohne weitere fehler wäre ja langweilig ;)

1. in dem ganz oben geposteten code die zeile 44.
BUILD FAILED
...createservice.xml:44: org.apache.axis2.wsdl.codegen.CodeGenerationException: Error parsing WSDL

2. außerdem unterschlängelt der mir das '<wsdl2java>' in zeile 35 und meint 'element type "wsdl2java" must be declared'
mhh, hierbei fehlt mir das genaue verständniss von ant-files. ist das was relevantes? oder kann ich das ignorieren?
 
G

Guest

Gast
weiß nicht wie, aber den 1. fehler habe ich wegbekommen :)
so: hier ist mal mein aktueller code.habe ihn lediglich an wenigen stellen angepasst.
wenn ich jetzt das run as -> ant build laufen lasse. kommt ein fenster in dem folgendes steht:
'the user operation is waiting for "Building workspace" to complete.'
da drunter steht dann launching und 'the user operation is waiting for background work to complete: 1 work left'
das habe ich einfach mal 3-4 minuten laufen gelassen, aber es ist nichts weiter passiert. sollte ich nicht erst irgendwas auswählen, bevor der code generiert wird?

Code:
<?xml version="1.0" encoding="UTF-8"?>
<project name="myservice" default="generate" basedir=".">
   <property name="sys.dir" value="/home/mkoll/lib" />
   <property name="src.dir" value="src" />
   <property name="ws.wsdl"
             value="${basedir}/wsdl/myservice.wsdl" />
   <property name="ws.namespace"
             value="urn:myservicenamespace" />
   <property name="ws.package"
             value="myservice" />
   <property name="axis2.home" value="${sys.dir}/axis2-1.3" />
	
   <path id="axis2.classpath">
      <fileset dir="${axis2.home}/lib">
         <include name="axis2-*.jar" />
         <include name="wsdl4j-1.6.2.jar" />
         <include name="stax-api-1.0.1.jar" />
         <include name="commons-logging-1.1.jar" />
         <include name="neethi-2.0.2.jar" />
         <include name="XmlSchema-1.3.2.jar" />
         <include name="axiom-api-1.2.5.jar" />
         <include name="axiom-impl-1.2.5.jar" />
         <include name="activation-1.1.jar" />
         <include name="wstx-asl-3.2.1.jar" />
         <include name="xbean-2.2.0.jar" />
      </fileset>
   </path>
   <taskdef name="wsdl2java"
            classname="org.apache.axis2.tool.ant.AntCodegenTask"
            classpathref="axis2.classpath" />

   <target name="generate">
      <wsdl2java targetsourcefolderlocation="${src.dir}"
             skipwsdl="true"
             serverside="true"
             wsdlfilename="${ws.wsdl}"
             synconly="true"
             databindingname="xmlbeans"
             generateservicexml="true"
             unwrap="false"
             skipbuildxml="false"
             namespacetopackages="${ws.namespace}=${ws.package}" />
   </target>
</project>
 

oetzi

Bekanntes Mitglied
(ka warum das obere posting als gast gepostet wurde 0o)
edit: unten rechts in eclipse bleibt der launching status auch bei 0% stehen. es passiert also wirklich nichts
 
G

Guest

Gast
Hallo,

ich befasse mich auch mit dem Problem. Bin bereits schon so weit gekommen, dass die class-Dateien mit ant erstellt wurden. Jedoch klappt bei mir der folgende Schritte nich

Niki hat gesagt.:
...

* im Verzeichnis build/lib wird ein .aar File erstellt, dieses ist dein WebService und du kannst es in deiner WebApp deployen.

...

, da ich in diesem Verzeichnis nur 2 *.jar Dateien hab. Eine davon heißt ...-test-client.jar, abba wenn ich versuche diese auszuführen kommt ein Fehler, dass die main() Funktion fehlt. Was is da schief gelaufen? Ich arbeite mit Windows. :cool:
Wäre über Hilfe sehr dankbar. :)
 

Niki

Top Contributor
welches Target hast du mit ant ausgeführt? du musst das jar.server target ausfüren um das aar file zu bekommen
 

SnakeHo

Mitglied
ich bin der Gast von eben :D
ich hab mal suchen lassen: bei mir is kein "jar.server" target.
hab ich nach dem Falschen target gesucht?
 

Niki

Top Contributor
ja schon, aber welches TARGET hast du von dem build.xml ausgeführt? Verwendest du eclipse? Wenn ja, mach einen rechtsklick auf die build.xml, dann Run As --> Run Ant... (Das untere der beiden Menüpunkte) und wähl jar.server aus
 

Niki

Top Contributor
ist das build.xml das, welches dir axis2 selber erstellt hat? ich hoffe schon, sonst wirst du das target natürlich nicht haben
 

SnakeHo

Mitglied
okay hab das target in der Build.xml gefunden, abba bei "öffnen mit" is bei mir kein "Run Ant"
ich glaube ich hab das Programm nicht installiert. hab einfach über die Eingabeaufforderung versucht ant zu benutzen
 

Niki

Top Contributor
Das geht auch, mach aus der Eingabeaufforderung einfach : ant jar.server
dann wird das Target jar.server aufgerufen
 

Niki

Top Contributor
Die kopierst du ins WEB-INF/services Verzeichnis von axis2 oder deiner WebApp. Ich hab eine lange Beschreibung zum Vorgehen gepostet. Lies dir das einfach mal durch, das sollte dir weiter helfen
 

SnakeHo

Mitglied
oki, hast ja oben geschrieben :)
Abba ich versteh die vorgehensweise nich ganz
was is das für ne Programmiersprache bzw. wie bekomme ich das in geeigneter Form, dass ich es auf ner HTML-Seite nutzen kann?
 

SnakeHo

Mitglied
D:\Java\axis2-1.3\webapp\WEB-INF
soll ich jetz hier noch nen Ordner "services" erstellen? da is nämlich nur nen Ordner "classes"
 

Niki

Top Contributor
Das kannst du so nicht in einer html Seite verwenden.
Das ganze funktioniert so:
Es gibt zwei Möglichkeiten:
1.) Du besitzt von irgendwo eine wsdl-Datei, die dein Service beschreibt (contract first)
* Dann kannst du aus der wsdl deine java-sourcen generieren lassen und dir das .aar File erstellen lassen. Dieses ist dein Service, welches du in deiner Webapplikation deployen kannst. Die WebApplikation muss bestimmte Bibliotheken von axis2 haben bzw. die Servlets von axis2 gehören in deiner web.xml ebenfalls definiert
2.) Du willst ein komplett neues Service erstellen (code first)
* Erstell dein Service Interface und/oder Implementierungsklasse
* Erzeuge die wsdl anhand des Interfaces/Klasse
* gehe weiter wie bei Schritt 1 vor

Vielleicht hilft dir dieser Link ein wenig weiter:
Axis2_from_scratch

Um das ganze laufen zu lassen brauchst du einen Servlet Container (z.B Tomcat). Hast du dein WebService erstellt und deployt kannst du dir aus der wsdl auch den Client Code generieren lassen. Dieser ruft dann das Service tatsächlich auf!
 

lhein

Top Contributor
Also wenn ich das alles so lese, dann kannst Du mir nicht ernsthaft sagen, daß XFire schwieriger ist :)

lr
 

SnakeHo

Mitglied
hab ich dann jetz nen Web Service generiert?
Ich wollt eigentlich nen Client haben, der den Web Service nutzt und nen Request daran setzt und die Antwort anzeigt
 

Niki

Top Contributor
@lr
Ich hab schon relativ viel mit axis1.4 gemacht, daher ist mir axis2 auch nicht sooo schwer gefallen. bei XFire hat mich irritiert dass ich spring braucht, ich bekam die ganze zeit fehlermeldungen, dass irgendwelche Beans nicht gefunden werden konnten. Ich mag auch nicht per code mein Service registrieren müssen, das Framework soll selber erkennen das da ein service ist

@snakeho wenn du ein service ansprechen willst brauchst du dir nur den Client generieren lassen.

ich vermute das hast du schon gemacht, jetzt brauchst du halt deine java-klasse wo du den aufruf implementierst
 

SnakeHo

Mitglied
Also komm ich mit deinem ersten beitrag nicht zum Client, oda is der jetz schon als Nebenrodukt entstanden?
Sorry, dass ich so schwer von Begriff bin. Ich seh die Dinge nich immer gleich auch wenn sie schon da stehen. ;)
 

Niki

Top Contributor
Schau mal nach ob dir eine Datei namens [Server]Stub.java generiert worden ist. Wenn ja, ist das deine Client Klasse mit der du dein Service ansprechen kannst:
Code:
  MyServiceStub stub = new MyServiceStub("http://localhost:8080/mywebapp/services/MyService");
  stub.machWasAmServer();
 

lhein

Top Contributor
Niki hat gesagt.:
@lr
Ich hab schon relativ viel mit axis1.4 gemacht, daher ist mir axis2 auch nicht sooo schwer gefallen. bei XFire hat mich irritiert dass ich spring braucht, ich bekam die ganze zeit fehlermeldungen, dass irgendwelche Beans nicht gefunden werden konnten. Ich mag auch nicht per code mein Service registrieren müssen, das Framework soll selber erkennen das da ein service ist

Klar, für Deine Anforderungen macht so eine integrierte Lösung keinen Sinn. XFire hatte seinerzeit einen ziemlichen Affenschwanz an Dependencies. Wahrscheinlich hast Du einfach nicht alle eingebunden, die es gebraucht hat.
Werd mich bei Gelegenheit mal an dieses CXF machen.

Gruß
lr
 

Niki

Top Contributor
Es wäre toll wenn du ein kleines "from the scratch with XFire" tutorial hier posten könntest. Sowas habe ich im Netz leider nirgends gefunden. Axis2 hat leider auch extrem viele Abhängigkeiten. Ich bin mir aber ziehmlich sicher dass ich bei XFire alle libs eingebunden hatte. Die Konfiguration dürfte nur noch nicht gestimmt haben.
 

SnakeHo

Mitglied
oki die stub hab ich
muss ich jetz also nen neue Java-Datei programmieren mit der Anfrage, oda wie?
und wenn ja kann ich dann an der Stelle
Niki hat gesagt.:
Code:
  MyServiceStub stub = new MyServiceStub("http://localhost:8080/mywebapp/services/MyService");
  stub.machWasAmServer();
auch die richtige wsdl location im Netz angeben um es von überall aufrufen zu können?
 

lhein

Top Contributor
Niki hat gesagt.:
Es wäre toll wenn du ein kleines "from the scratch with XFire" tutorial hier posten könntest. Sowas habe ich im Netz leider nirgends gefunden. Axis2 hat leider auch extrem viele Abhängigkeiten. Ich bin mir aber ziehmlich sicher dass ich bei XFire alle libs eingebunden hatte. Die Konfiguration dürfte nur noch nicht gestimmt haben.

Heut sicher nicht mehr, aber evtl. mach ich das am Wochenende mal.

lr
 

Niki

Top Contributor
Yep, du musst eine Java Datei schreiben. Du kannst die location für das WebService auch als start-Argument mitgeben, aber normalerweise ändert sich die Location eines Service ja nicht täglich. Ein Property-File wäre auch eine Möglichkeit das ganze dynamisch zu halten.
Normalerweise steht in der wsdl Datei die URL vom Service drin. Die wird auch als default Wert genommen, wenn man beim Konstruktor des Stubs nichts übergibt
 

SnakeHo

Mitglied
Code:
package net.webservicex.www;

public class test{
	CurrencyConvertorStub stub=new CurrencyConvertorStub();
}
da sacht er mir nen Fehler, dass der Konstruktor damit nich arbeiten kann auch wenn ich die url angebe klappt das nich
die Datei liegt im selben Ordner, wo auch die CurrencyConvertorStub.java is
 

Niki

Top Contributor
Ja, weil der Konstruktor eine Exception werfen kann und du das ganze als Attribut verwendest. Schreib das ganze in eine Methode (z.B. main) und bau einen try-catch Block darüber
 

SnakeHo

Mitglied
okay, ich versuchs mal damit, denk ma jetz wird's eh nich mehr so allgemein, also muss ich wohl auch selber klar kommen
trotzdem danke Guys :D
 

Niki

Top Contributor
Code:
public static void main(String[] args){
  try{
    CurrencyConvertorStub stub=new CurrencyConvertorStub(); 
  }catch(Exception ex){
    ex.printStackTrace();
  }
}

Mich wundert nur wie jemand, der anscheinend noch nicht viel mit Java gemacht hat, gleich ein WebService mit Java ansprechen soll
 

lhein

Top Contributor
Die Methode nennt sich "ins kalte Wasser werfen" und kann verschiedene Resultate erzeugen, wie z.B.: "geht unter" oder "kann schwimmen" :D

Aber mal ganz nebenbei, das ist in einigen Firmen absolut gängig. Hab mal in einer gearbeitet, da wurde immer der mit einer Aufgabe betreut, der davon am wenigsten Ahnung hatte. Die Logik dahinter blieb mir leider verborgen :)

lr
 

Niki

Top Contributor
Ahhh, das ist natürlich sehr klug und wirtschaftlich. Wär vielleicht klüger gewesen einen Erfahrenen mit einem Unerfahrenem zusammen zu tun.
Es gibt schon eigenartige Firmen....
 

SnakeHo

Mitglied
ganz so wenig Ahnung mit Java hab ich auch nich,
hab auch schon einige Programme mit Java geschrieben
bin allerdings Student und als solcher muss man mit allerhand Programmiersprachen klar kommen ;)
wenn man dann ne Weile eine nich mehr benutzt hat, muss man erstma wieda reinkommen :)
Code:
try{ 
    CurrencyConvertorStub stub=new CurrencyConvertorStub(); 
  }catch(Exception ex){
  }
reicht auch ;)
 

lhein

Top Contributor
Leere catch-Blöcke sollte man tunlichst vermeiden. Sonst wird die Fehlersuche irgendwann zur Glückssache.

lr
 

Niki

Top Contributor
Richtig, am besten ist jedoch das sogenantne "wirf alles weiter Pattern" einzusetzen. Bei allen Methoden einfach throws Throwable deklarieren und im main-Thread einen fetten try-catch Block zu bauen! Dann ist man immer auf der sicheren Seite.
:autsch:
 

ms

Top Contributor
Niki hat gesagt.:
Richtig, am besten ist jedoch das sogenantne "wirf alles weiter Pattern" einzusetzen. Bei allen Methoden einfach throws Throwable deklarieren und im main-Thread einen fetten try-catch Block zu bauen! Dann ist man immer auf der sicheren Seite.
:autsch:

Öhm ... bitte einen lachenden smile machen, wenns lustig gemeint war.

ms
 
Status
Nicht offen für weitere Antworten.
Ähnliche Java Themen
  Titel Forum Antworten Datum
S Welcher Java EE Applikationserver für RESTful Webservice? Allgemeines EE 2
D Java Projekt goes Webservice Allgemeines EE 6
M einfacher REST Webservice Allgemeines EE 4
M RESTful Webservice mit json Allgemeines EE 2
A Webservice (SOAP) Lookup Allgemeines EE 1
D Webservice benutzen Allgemeines EE 4
N Authentication/UserPrincipal mit Rest Webservice? Allgemeines EE 6
N WebService WAR-File auf Tomcat-Server Allgemeines EE 1
B Inject webservice von cxf.xml Allgemeines EE 1
F ein wenig Hilfe - Webservice Allgemeines EE 1
D Servlet Webservice Konfigurationsdateien Best Practice Allgemeines EE 3
H SQL Daten von Webservice an Client übergeben Allgemeines EE 3
G WebService Concurrency Allgemeines EE 6
G WebService portieren Allgemeines EE 11
H Webservice testen Allgemeines EE 7
M Webservice - Anhang senden und codieren Allgemeines EE 4
M Spring: Bean als Webservice freigeben Allgemeines EE 9
O eclipse - tomcat: Problem bei einfachem Webservice Allgemeines EE 16
B .net-Webservice aufrufen Allgemeines EE 9
C HashMap über Webservice übertragen Allgemeines EE 2
G REST Webservice Allgemeines EE 11
H WebService mittels SessionBean aufrufen? Allgemeines EE 7
F JBoss WebService Allgemeines EE 3
S webservice mit tomcat und axis ohne eclipse laufen lassen? Allgemeines EE 2
G WebService Client: Parameterübergabe Allgemeines EE 9
R Bei AXIS-Start gleich WebService starten Allgemeines EE 2
R Embedded WebService-Server Allgemeines EE 4
L WebService Problem mit SessionBean Allgemeines EE 14
L Web-Client - SessionBean - WebService Allgemeines EE 2
C WebService deployen .Verzweiflung. Allgemeines EE 2
M Google - WebService Allgemeines EE 3
M Probleme beim Webservice Deployment(Sun ApplicationServer) Allgemeines EE 2
T Java ServerFaces Anwendung mit XHTML & CSS Allgemeines EE 1
E modulare Java-Anwendung verteilen (Camel) Allgemeines EE 0
B Java Mail und idle() mit zig Emailadressen? Allgemeines EE 59
H JWebUnit Fehler: java.lang.NoClassDefFoundError: org/apache/regexp/RESyntaxException Allgemeines EE 24
B Java mail API - möchte nur eine gewisse Anzahl von Emails in die Liste holen Allgemeines EE 3
M Rest mit Java 11 Allgemeines EE 6
M java.lang.SecurityException: class "javax.persistence.TupleElement"'s signer information does not match ... Allgemeines EE 1
F Java Programmierer Allgemeines EE 13
R Wie viel DevOps sollte ein Java-Entwickler kennen, der sich in Microservices spezialisiert? Allgemeines EE 5
Dimax JSP Probleme mit Java in JSP Allgemeines EE 21
Dimax JSP Auf button click java methode ausführen.Ist das möglich? Allgemeines EE 6
B Logging (log4j) in JAVA EE application - WildFly Allgemeines EE 15
A Java EE (am Cleint) und websocket Allgemeines EE 8
J Ich kann Java JDK nicht downloaden Allgemeines EE 6
R Aufbau zum Java EE Entwickler - Schulungen Allgemeines EE 0
G Java EE Hosting ? Allgemeines EE 6
P Java EE Videotutorials Allgemeines EE 1
R Java Enterpise entwickeln mit Virtualbox Allgemeines EE 6
A OutOfMemoryError: Java heap space Allgemeines EE 7
I Start Word from Java Allgemeines EE 1
T Java Jersey Interceptor Allgemeines EE 7
R Post Variable in Java Allgemeines EE 8
L JSP Fehlermeldung bei Verwendung von Java-Expression-Language Allgemeines EE 8
K Wie habt ihr Java EE gelernt? Allgemeines EE 11
hjpsoft JSF Lösung einer Aufgabe im "Workshop Java EE7" Allgemeines EE 5
T Java Login Allgemeines EE 1
L Certified Master Java Enterprise Architect Java EE Allgemeines EE 3
R Java EE 6, eclipse, maven, jsf, hibernate, mysql Allgemeines EE 8
D Einfaches Java Projekt funktioniert nicht Allgemeines EE 3
W Authentifizierung und Sessions in Java EE7 Allgemeines EE 0
OnDemand Task in Java ee Allgemeines EE 7
OnDemand JSF - java File Verständnisfrage Allgemeines EE 5
OnDemand Deployen ohne .java Files Allgemeines EE 0
E Wie kann ich über einen Suchfeld in Java Server Pages nach Datenbankinhalten suchen? Allgemeines EE 11
V Java EE 7 CDI, annotations und beans Allgemeines EE 1
G Bachelorthesis: Java oder PHP (CMS) Allgemeines EE 7
X Konsolenausgabe einer java klasse in eine jsp umleiten Allgemeines EE 7
S Aufruf eines EJBs aus einer nativen Java-Applikation Allgemeines EE 1
T Fertiges html javascrip css template in java EE application Allgemeines EE 0
F Eclipse/Java EE Debug-Problem Allgemeines EE 1
L Button Handling in JSP mit Java-Backend Allgemeines EE 2
Shams Frage zu Dowload von JAVA SDK Allgemeines EE 5
T Größeres Java EE Beispiel Projekt Allgemeines EE 4
N JavaScript schickt und Java empfängt? Allgemeines EE 4
O Java EE in Netbeans + allgemeine Fragen Allgemeines EE 5
H java selenium spezis? Allgemeines EE 4
H java selenium test connection refused Allgemeines EE 6
M Java EE-Technologie-Lern-Wahl Allgemeines EE 5
B [EJB] javax.inject.DefinitionException: bean not a Java type Allgemeines EE 5
J Java Dependencies auslesen Allgemeines EE 19
2 installation java EE Allgemeines EE 12
J PHP oder Java? Allgemeines EE 12
L Webseiten Formulare über Java Oberfläche ausfüllen? Allgemeines EE 2
T Java CMS Entwicklung : Welcher Weg ist besser? Allgemeines EE 9
F Gesucht: Gratis Server für Java Entwickler Allgemeines EE 4
J Einstieg in Java EE Allgemeines EE 5
aze Eclipse Java EE Web Project:Wo liegen die Servlets ? Allgemeines EE 4
S java Entities Problem Allgemeines EE 19
D Grundüberlegung Java Webprojekt Allgemeines EE 10
F Einstieg in Java EE - Beispielanwendungen Allgemeines EE 52
R JAVA EE - eigene Klassen aus EJB übernehmen Allgemeines EE 2
T "normales" Java Programm auf einen Server laufen lassen Allgemeines EE 3
M EE6+EJB+JavaLib: Error in annotation processing: java.lang.NoClassDefFoundError Allgemeines EE 4
G java ResourceLocator Allgemeines EE 12
M Was ist mit Java möglich? Allgemeines EE 13
T Komponenten zusammenhänge Java EE Allgemeines EE 7
A Java CMS Allgemeines EE 2
P Architektur Java EE <-> HTML5 Allgemeines EE 3

Ähnliche Java Themen

Neue Themen


Oben