# Webservice/ Axis/ Bea Weblogic Server 8.1



## moritz (10. Jan 2008)

Hallo miteinander,

folgendes Problem hab ich:

Ich mache zurzeit ein Praktikum bei BMW und versuche einen Webservice zu erstellen, der eine Datenbankabfrage macht und dem Kunden/ Händler somit mitteilt ob er gewisse Teile umsonst zuruckschicken kann oder nicht.


Ich will mal versuchen meinen Webservice zu erklären:

Der Händler schickt dem Werbservice per Soap- Request (also einer standatisierten Version von XMl) eine Anfrage mit Teilenr./ Händlernr. etc. dieser Soap- Request wird im Webservice dann geparst und die Daten mit der Datenbank verglichen und danach als Soap-Response wieder an der Kunden zurückgeschickt.

Meine Aufgaben wären also diese:

- Programm in Java welches die Soap bzw.Xml Datei parst und einen Datenbankabruf über einen ConnectionPool der     schon im Server eingerichtet ist ausführt. Danach muss er ein Soap- Nachricht an den Kunden zurückschicken.

- Ich muss auch ein Java-Client erstellen, der mir zum Testen des Vorgans also dem Webservicezugriff dient.

Das Problem fängt schon damit an, dass ich diesen Webservice au einen Bea Weblogic Server 8.1 erstellen muss.
Im Internet werden die Beispiele immer mit Tomcat Servern durchgeführt, daher bin ich da nicht sehr weit gekommen.
Ich hab mich schon erkundet und bin auf Apache Axis gestoßen, welches eigentlich einen sehr großen Teil meiner Arbeit erleichtert. Die Wdsl- Datei wird glaube ich von Axis erledigt, sprich diese kann der Client dann verwenden um sein Soap-Request richtig zu gestalten. Doch das Problem ist, dass ich Axis nicht in den Server einbinden kann... ! ich hab wirklich alles versucht.

Ich könnte noch viel mehr schreiben, jedoch denke ich dass dies schon ne Menge Diskussionsstoff bereitstellt.

Ich bitte um Hilfe und Tipps.... !

Danke im Voraus  ! 

Viele Grüße
Moritz


----------



## Niki (10. Jan 2008)

Diesen Thread gibts schon...


----------



## moritz (10. Jan 2008)

ich weiss ! aber ich hab mir gedacht, dass mir hier die Leute eher helfen können bzw. der thread hier besser zu finden ist! 

Sorry, aber ich brauch unbedingt hilfe!


----------



## Niki (10. Jan 2008)

Der Thread könnte dir auch helfen: ant_file_fuer_wsdl_generierung


----------



## moritz (10. Jan 2008)

nöö hilft mir auch nicht weiter.
vielleicht muss ich dazu sagen, dass ich bis jetzt eigentlich nur kleine java programme geschrieben hab und kurz mal bei c++ reingeschnuppert habe.
also ich bräucht wirklich so eine art anleitung wie ich einen webservice anpacken muss.
ich bin verloren!!!!!!!
und das dumme ist, dass mir hier keiner helfen kann weil die alle nicht mehr selber programmieren sondern nur noch labern! 
die richtige arbeit machen die Dienstleister! 
...
aber was erzähl ich dir das alles eigentlich ! 


 :cry:  :cry:  :cry: 

ich will nicht mehr...!


----------



## ARadauer (10. Jan 2008)

weißt du was sdna bedeutet ;-)

"ich bin verlohren"... "ich will nicht mehr"... a geh! is ja alles halb so wild! ich war letzes jahr auch bei bei bmw. In einer Fachabteilung, der einzige Programmierer.. war völlig auf mich allein gestellt. Aber du hast ja Zeit oder? Es stresst dich bei BMW doch keiner. 

Schau dir das in ruhe an, probier einwenig herum und schau dass du was lernst. Und wenn du solche Projekte alle zusammen bringst, hast du wirklich was gelernt.

http://ws.apache.org/axis/java/install.html hilft dir sicher mal.
besorg dir ein axis buch und ein weblogic buch und schau dir das alles mal in ruhe an.

lass dich nicht entmutigen!
wo bist du den? welche Abteilung mein ich.

aja axis unter weblogic hab ich auch noch nicht gemacht, da kann ich dir auch nicht helfen.


----------



## Niki (10. Jan 2008)

Das wichtigste ist, nicht aufgeben, sonst wirds nie was mit Erfolgen!

Gehn wirs gemeinsam Schritt für Schritt durch.

Ich finde axis1.x einfacher zum Lernen, deshalb schlag ich vor du machst es damit >hier downloaden<

Danach benötigst du ein ant-File. Mit Hilfe von diesem File kannst du dir aus einem Interface oder einer Klasse die wsdl Datei generieren lassen. So ein File sieht so aus:

Bechreibung:
Properties sind sozusagen Variablen, auf diese Variablen kann mit ${propertyname} zugreifen
sys.dir: das Verzeichnis, wo du axis entpackt hast
src.dir: Verzeichnis wo deine sourcen liegen, bei mir ist es ./src
classes.dir: Verzeichnis der compilierten Klassen
axis.home: Root-Verzeichnis von axis

Der Rest ist eigentlich selbsterklärend. Dieses ant-File kannst du im Eclipse ausfähren wenn du einen rechten Mouseklick drauf machst und sagst: Run as -> Ant Build...
Dann kann man die einzelnen Targets auswählen. Das gesamte WebService kann über so ein File erzeugt werden. Angefangen von der wsdl, bis hin zu den Stub Klassen und die Installation in den Tomcat. Probier mal dieses File in dein Projekt zu kopieren, anzupassen und dann mal das Target java2wsdl auszuführen


```
<?xml version="1.0"?>
<project name="WebService" default="java2wsdl" basedir=".">

	<property name="sys.dir" value="C:/Allg/_system" />
	<property name="src.dir" value="${basedir}/src" />
	<property name="classes.dir" value="${basedir}/classes" />

	<property name="axis.home" value="${sys.dir}/axis/1.4" />


	<path id="axis.classpath">
		<fileset dir="${axis.home}/lib">
			<include name="**/*.jar" />
		</fileset>
	</path>

	<taskdef resource="axis-tasks.properties" classpathref="axis.classpath" />

	<target name="prepare">
		<mkdir dir="${classes.dir}" />
		<mkdir dir="${lib.dir}" />
	</target>

	<target name="clean">
		<delete dir="${classes.dir}" failonerror="false" />
		<delete dir="${lib.dir}" failonerror="false" />
	</target>

	<target name="compile" depends="prepare">
		<javac srcdir="${src.dir}" destdir="${classes.dir}">
			<classpath refid="axis.classpath" />
		</javac>
	</target>

	<target name="java2wsdl">
		<axis-java2wsdl classname="service.MyWebService"
		                location="http://localhost:8080/myapp/services/mywebservice"
		                namespace="urn:mywebservice"
		                output="myservice.wsdl"
		                style="RPC">
			<classpath path="${basedir}/classes" />
		</axis-java2wsdl>
	</target>

	<target name="wsdl2java">
		<axis-wsdl2java output="${src.dir}"
		                testcase="false"
		                serverside="true"
		                verbose="true"
		                url="myservice.wsdl"
		                implementationclassname="service.MyWebServiceImpl">
			<mapping namespace="urn:mywebservice" package="service" />
		</axis-wsdl2java>
	</target>

	<target name="installws">
			<axis-admin port="8080"
			            hostname="na35089"
			            failonerror="true"
			            servletpath="dbws/services/AdminService"
			            debug="true"
			            xmlfile="deploy.wsdd" />
		</target>

</project>
```


----------



## moritz (10. Jan 2008)

Vp-67 Teilevertrieb , Lilienthalallee; freimann sagt dir das was? 

das dumme ist ja das die nicht aufkommen wollen wenn ich mir bücher bestell! und diese bmw bibliothek bietet ja auch nichts ! ich könntsja mal in der stadtbibliothek versuchen ... !

aber trotzdem danke ! ich versuchs einfach weiter ... !


----------



## Niki (10. Jan 2008)

Ich hab da mal ein kleines WebService geschrieben, welches Statements auf einer Datenbank ausführt und dem Client die Ergebnisse schickt. Vielleicht hilft dir das ja weiter. 
WebService


----------



## lhein (10. Jan 2008)

@moritz:

Schau Dir mal die Wiki von Apache WS an. Dort findest Du sicher einiges.
wiki

Wenn Du kein AXIS verwenden willst, kannst Du alternativ auch noch Apache CXF nehmen, was aber noch im Incubator Status ist.

beide Projekte bieten eine gute Dokumentation auf der Website und haben auch eine sehr aktive Community.

Allgemein:
Das ist doch nicht der erste Webservice bei BMW vermut ich mal. Also warum schaust Du Dir nicht einfach mal die vorhandenen Sachen an, bzw. interviewst einfach mal Leute, die sowas schon bei denen entwickelt haben. Da sollte doch jemand zu finden sein. Es wird doch niemand ernsthaft von einem Praktikanten erwarten, diese Aufgabe ohne Hilfe zu lösen, wenn du noch nie mit Webservices gearbeitet hast, geschweige denn mit BEA WebLogic.

Ansonsten:
Ohne Fleiß und Eigeninitiative gibts auch kein Preis.

grüße
lr


----------



## moritz (11. Jan 2008)

@ niki


Also dank dir nochmals fürs beispiel hat mich schon etwas weiter gebracht! 
Ich habe es aber etwas abgespeckt. Die Klassen habe ich gelöscht und nur eine Klasse gemacht! und zwar die Hello World Klasse! 
package meinhelloworld;
public class HelloWorld 
{
	public String hello(){
		return "Hello World" ;
	}
}

Ich habs aber geschafft, dass das antfile eine wsdl file erstellt.

Mein Problem ist jetzt, dass mich nicht weiss wie ich ein kleines programm auf meinen bea weblogic server 8.1 packen kann.
Normalerweise erzeugen aus den klassen ein ear.file und lade es dann hoch.
könntest du mir da weiterhelfen bitte?

für was brauche ich jetzt eigentlich das wsdl file. ist es nur relevant für den client, wenn er drauf zugreifen will oder gibts da mehr??

Ich danke dir schonmal im voraus.


----------



## Niki (11. Jan 2008)

die wsdl datei brauchst du sowohl für den client, als auch für das service selbst. aus der wsdl datei musst du dir zunächst die eigentlichen klassen (stubs) generieren lassen, dafür gibt es im build.xml wieder ein target (wsdl2java).
probier das einfach mal aus und meld dich danach. ich kenn jetzt den genauen aufbau eines .ear nicht, aber du musst die axis bibliotheken und deine klassen in deiner webapp bereit stellen. in der web.xml musst du dann die servlet-mappings vom axis einfügen, schau dir beim axis einfach die mitgelieferte web.xml an und ergänze deine web.xml mit der vom axis (eventuell reicht es wenn du die vom axis nimmst, wenn du keine eigene hast)


----------



## moritz (11. Jan 2008)

hallo erstmal 

@niki

könntest du mir sagen was genau wohin muss

muss ich die deploy.wsdd und undeploy.wsdd auch in den wepapp-ordner packen? 

also jetzt liegen im meinem wepapp- ordner folgendes:

---[dist] = leer
---[WEB-INF]=  --[classes]=  eigene compilierte Klasse 
..........................................andere neu erstellte und compilierte Klassen
.......................--[lib]= alle .jar files von axis.
.......................--web.xml


mein build.xml und myservice.wsdl liegen im projekt also nicht im wepapp-verzeichnis.
die neu erzeugten klassen (unkompiliert) liegen im src-Verzeichnis und auch deploy.wsdd und undeplay.wsdd!


Hoffe dass du mir folgen konntest! 

Ich würd mich wirklich sehr freuen, wenn du mir noch weitere Tipps geben könntest und mir sagen ob ich zumindest auf dem richtigen weg bin oder nicht?   


Danke im Voraus! 


Viele Grüße
Moritz


----------

