WebService erstellen

Status
Nicht offen für weitere Antworten.

TeamBob

Aktives Mitglied
Hi
Also ich glaube einfach mal das es sinnvoller ist ein Thema über Webservice allgemein zu machen, anstatt die ganzen Probleme einzeln zu posten.
Ich habe mir schon verschiedene Tutorial durchgelesen aber nirgends wir
sowas was ich mache genau gezeigt. Deswegen hoffe das ihr mir weiterhelfen
könnt. Danke

Zur Geschicht:

Ich soll ein WebService zu einen Projekt entwickeln, was Usern ermöglicht
einen Suchbegriff einzugeben und Dokumente nach diesen Suchbegriff zu
durchsuchen und eine Liste der Dokumente die dieses Wort enthalten auszugeben.

Vorgehen:
In Eclipse habe ich zuerst einmal eine neue Klasse WebService erstellt, die dieses Vorhaben dann ermöglichen soll. Die Suchfunktion liegt bereits fertig in ein anderes Package. Diese rufe ich dann bloss noch auf in meinen WebService. Unten findet ihr die ganzen Quelltexte zu der Suchfunktion und dem Webservice.
Ich habe dann das SoapUI Plugin für Eclipse als WebTester für die ganze Sache genommen und den JBoss als Server.
Ich kann den WebService deployen und vom Jboss aus starten und mit SoapUI dann unter http://localhost:9090/......?wsdl testen.


Problem:

Der User soll ja Suchbebegriffe eingeben können und soll dann eine liste der Dokumente ausgegeben bekommen. Ich weis jedoch nicht wie ich jetzt weiter
verfahren soll.
Muss ich einen Client bauen? Wie soll der aussehen?
Wie kann ich es ermöglichen das der User eine Eingabe macht und damit
dann die Searchfunktion gestartet wird?
Wie genau kann ich alles als Liste wiedergeben?

Ich hoffe ihr könnt mir helfen, weil ich gerade echt nicht weis
wie ich fortfahren soll?

Quelltexte:

Die SearchFunktion
Code:
@SuppressWarnings("unchecked")
	public List<Document> searchInDocumentFieldsForSimpleSearch(
			final String and_search, final Long userId) {

		final List<Long> documentIds = new ArrayList<Long>(0);
		final List<Long> visibledocumentsForUser_ids = new ArrayList<Long>(0);
		final List<Document> documents = new ArrayList<Document>(0);

		final Session session = sf.openSession();
		final FullTextSession fullTextSession = Search
				.createFullTextSession(session);

		// determine visible documents by user
		visibledocumentsForUser_ids.addAll(dfl
				.getVisibleDocumentsByUser(userId));

		final String newSearch = and_search.trim();
		final Query luceneQuery = createInputFieldQuery(newSearch,
				BooleanClause.Occur.MUST, false);

		final org.hibernate.Query fullTextQuery = fullTextSession
				.createFullTextQuery(luceneQuery, Document.class);
		final Iterator it = fullTextQuery.iterate();

		// while (it.hasNext()) {
		// final DocumentField df = (DocumentField) it.next();
		// if (df != null) {
		// if (!documentIds.contains(df.getDocumentId())
		// && (visibledocumentsForUser_ids
		// .contains(df.getDocumentId()))) {
		// final Document dd = df.getDocument();
		// if(dd!=null){
		// if(Hibernate.isInitialized(dd)==false){
		// Hibernate.initialize(dd);
		// }
		// documentIds.add(dd.getId());
		// documents.add(dd);
		// }
		// }
		// }
		// }

		while (it.hasNext()) {
			final Document d = (Document) it.next();
			if (d != null) {
				if (!documentIds.contains(d.getId())
						&& (visibledocumentsForUser_ids.contains(d.getId()))) {
					documentIds.add(d.getId());
					documents.add(d);
				}
			}
		}

		/*
		 * visibledocumentsForUser_ids.addAll(dfl
		 * .getVisibleDocumentsByUser(userId));
		 * 
		 * Iterator is = documentFields.iterator(); while (is.hasNext()) {
		 * DocumentField df = (DocumentField) is.next(); if(df!=null){ Document
		 * dd = df.getDocument(); dd.getAuthors(); if
		 * (!documentIds.contains(dd.getId()) &&
		 * (visibledocumentsForUser_ids.contains(dd.getId()))) {
		 * 
		 * documentIds.add(dd.getId()); documents.add(dd); // System.out //
		 * .println("###### Document " + dd.getName() + " " // +
		 * dd.getCreationDate() + " " // + dd.getModificationDate()); // hier
		 * implemantation für die categorien anzeige ?? } } }
		 */
		return documents;

	}

	/*
	 * (non-Javadoc)
	 * 
	 * @seede.search.SearchLocal#
	 * getAllDocumentsByUserCommunitiesAndByReleaseStatus(java.lang.Long)
	 */

Der WebService

Code:
package web.service;

import javax.ejb.EJB;
import javax.jws.WebMethod;
import javax.jws.WebService;
import javax.naming.InitialContext;

import ejb.search.*;


@WebService(name = "SearchService", serviceName = "SearchService", targetNamespace = "http://www.test.de")
public class WebServiceSearch {

@EJB
SearchLocal searchBean;

 SearchLocal getSearchBean() {

	if (searchBean == null) {
			
		try {
			searchBean = (SearchLocal) new InitialContext()
			.lookup("java:comp/env/ejb/SearchEJB");
			} catch (Exception a) {
				throw new RuntimeException(a);
			}
		}
		return searchBean;
	}	
 
 
//@WebMethod
 	//public java.util.ArrayList<String> getItems(java.lang.String searchTerm) {
   // new java.util.ArrayList<String>();

 
 @WebMethod
 	public String searchInDocumentFieldsForSimpleSearch(final String and_search, final Long userId)
 		{
	    return and_search;
 		}
}
 

The_S

Top Contributor
Natürlich benötigst du einen Client, der den Webservice aufruft und auswertet. Um den eigentlichen Webservice-Import musst du dich aber nicht kümmern - dafür gibt es für so gut wie jede Sprache ein kleines Tools, dass dir alle benötigten Klassen automatisch erstellt (in Java z. B. wsimport).
 

TeamBob

Aktives Mitglied
Hi
Also bedeutet das ich mir jetzt wsimport runterladen soll und dies
dann ausführen soll auf meinen Webservice und der mir alle benötigten Klasse
erstellt?
Danke
 

The_S

Top Contributor
So z. B.

Code:
wsimport -keep http://localhost:1234/services/service?wsdl

Du könntest übrigens viele deiner Fragen durch Googeln beantworten.
 

TeamBob

Aktives Mitglied
ok habe den Jboss angemacht wo mein project liegt und dann über die Konsole das gemacht.
Dann kam
parsing wsdl
generating code...

fertig.
Was genau habe ich jetzt bewirkt?
danke für deine hilfe
 

TeamBob

Aktives Mitglied
ich habe einen neuen Ordner gefunden, wo jetzt eine menge Klasse drin sind.
Wie verfahre ich weiter
 
Zuletzt bearbeitet:

The_S

Top Contributor
Indem du Eigeninitiative zeigst und Google bemühst, bevor du nach elementaren Sachen in einem Forum fragst, die dir jedes Tutorial zu dem Thema erklärt.
 

TeamBob

Aktives Mitglied
Naja ich habe schon ein paar Tut. gelesen aber keins hat mich so wirklich weiter
gebracht. Ich will ja erreichen, dass der User eine Eingabe machen muss z.B seinen
name und dann eine response bekommt mit z:B hallo name...

Wie genau verfahre ich den weiter mit den Klasse?
 

The_S

Top Contributor
Du wiederholst dich :rolleyes: .

Du verfährst weiter, indem du die generietern Klassen verwendest. Könnte z. B. so aussehen:

Code:
YourService service = new YourService();
YourWebService ws = service.getYourWebServicePort();
SuchErgebnis se = ws.suche("Suchstring");
 

The_S

Top Contributor
Nein.

WebService = Server-Side
Abfrage von WebService = Client-Side

Du brauchst nen eigenen Client.

Generell habe ich den verdacht, dass du einfach mal machst, aber nicht weißt, was du tust (und auch nicht wirklich fit in Java bist)
 

TeamBob

Aktives Mitglied
Also ich arbeite gerade das nächste Tutorial durch aber das haut immer nicht alles so hin
wie es soll und ich habe fehlermedlung obwohl ich es so machen wie im Tut. beschrieben
 

The_S

Top Contributor
Meine Kristallkugel ist leider momentan in der Werkstatt. Also verrate mir bitte: Welches Tutorial, was funktioniert nicht, was macht es, was soll es machen, wie lautet die Fehlermeldung?

Generell gehst du ein ein bisschen wenig auf meine Fragen und Anmerkungen ein ...
 

TeamBob

Aktives Mitglied
Dieses Tut.
http://www.zdnet.de/anwendungsentwi...hen_web_service_story-20000201-39161748-1.htm

Also ich soweit alles gemacht, bloss ich benutze nicht Apache Axis oder Tomcat, sondern
den JBoss 4.2. habe den auch konfiguriert in Server runtime usw.
Habe den WS erstellt und bin auf Seite drei.
Habe die Klasse erstellt und den Quelltext erstellt und gehe nun auf Web Services/Create Web service und dann finish.
Dann kommt diese Fehlermeldung
Unable to add the follwing facets to project Webservice: Axis2 Web Services Extensions, Axis2 Web Services Core.
 

The_S

Top Contributor
Und das hat jetzt was mit deinem wsimport-Client-Problem zu tun? Ich denke die Client-Klassen können ohne Probleme über wsimport erzeugt werden!?
 

TeamBob

Aktives Mitglied
Das hat jetzt erstmal gar nichts damit zu tun.
Mit den erzeugten Klasse komme ich nicht weiter.
Wollte erstmal das machen und das erzeugen lassen und
es dann daraus weiterbauen.
danke
 

The_S

Top Contributor
Sorry, von JBoss habe ich keine Ahnung. Evtl. hilft dir hier ein separater Thread weiter - hat ja nicht direkt mit Webservices allgemein zu tun.
 

TeamBob

Aktives Mitglied
habe jetzt den Tomcat genommen und Axis und bin auf Seite 3.
habe die Klasse erstellt und wenn ich auf die Klasse gehe und
eb Services/Create Web service und dann finish drücke dann
arbeitet er und startet einiges und dann bekomme ich zum schluss
die Fehlermeldung "Selection must be WSDL"
Keine ahnung was los ist. habe alles so gemacht wie
beschrieben.
 

TeamBob

Aktives Mitglied
Hi
Also ich habe jetzt in meine WebService einfach mal diese Funktion eingebaut

Code:
@WebMethod
 	public String sayHello(String name){

         return "Hello " + name;

Wenn ich das Project jetzt deploye und mit SOAPUI teste und dann als arg.
mein name eingeben kommt Hello "mein name"
Also habe ich ja schonmal ein request und ein Response die
funktionieren.
Die frage ist jetzt wie bekomme ich die ganze Sache mit meiner Suchfunktion
hin, dass ich ein Suchbegriff eingebe und der ne Datenbank durchsucht
 

TeamBob

Aktives Mitglied
Hi
Also ich bin jetzt auf ein Tut. gestoßen, welches sich echt gut anhört.
http://www.theserverside.de/webservice-in-java/

Habe jetzt eine neue Package Service mit der Klasse erstellt und da den Code reingemacht.
Dann habe ich ein neues Package Server mit den code erstellt.

So wenn ich jetzt den Broswer öffne und da:
http://localhost:8080/calculator?wsdl
eingebe bekomme ich gar nichts raus. Somit kann ich auch nicht weiter
zum client schreiten. Woran liegt es.
Muss ich noch vorher was starten oder deployen oder so?
 

TeamBob

Aktives Mitglied
Hi
Also ich habe jetzt wirkliche fortschritte erzielt.
Ich habe jetzt einen WebService erstellt der 2 zahlen
addiert und dazu einen Client wodurch man auf ihm
zugreifen kann.
Jedoch lese ich im Internet sehr viel über einen
WebService+Server+Client.
Einen Server habe ich bis jetzt noch nicht. Da ich
meinen Webservice bis jetzt noch über den JBoss
lade und dann kann ich ja mit hilfe des Clients die
request usw. durchführen.
Könnte mir vielleicht jemand helfen wie ich genau ich
einen server aufbauen muss und ob ich überhaupt einen
brauche usw.
Danke
 

mvitz

Top Contributor
Jeder JavaApplicationServer kann auch als Webservice-Server eingesetzt werden. Man kann jedoch auch Frameworks, wie z.B. Apache Axis in den Tomcat einbinden und diesen als Server benutzen. Afaik kann man Axis auch direkt als Server laufen lassen.

Die beiden letzteren Möglichkeiten fressen halt garantiert weniger Ressourcen als ein kompletter JBoss.
 

Ebenius

Top Contributor
habi55, nur um Deine Vermutung zu bestätigen: Axis2 kann sowohl als simple server oder im Tomcat als WAR laufen.
 
Status
Nicht offen für weitere Antworten.
Ähnliche Java Themen
  Titel Forum Antworten Datum
N Web Services Client aus externen WebService erstellen SOA 4
M Webservice Client erstellen und XML Request senden SOA 3
R Proxy WebService erstellen SOA 3
G WebService mit wsdl erstellen SOA 4
Y Webservice erstellen SOA 4
T Error beim Versuch, einen Webservice zu kontaktieren SOA 4
J SOA WebService JAX-WS Java-Klasse per wsimport generieren lassen SOA 3
K Webservice: 4 counts of IllegalAnnotationExceptions SOA 0
D Zertifikat Authentifizierung am Webservice SOA 0
P JBOSS 7 und Restful Webservice SOA 1
N WebService Ausgabe einer ArrayList SOA 2
I SOAP Webservice Methoden und Parameter auslesen SOA 3
F [WebService] Array von eigenen Objekten SOA 0
P SOAP Webservice mit HTTP Basic Authentifizierung SOA 1
M JAVA Webservice Währungsrechner DRINGEND Hilfe SOA 1
A Up-/ Download von Dateien zu WebService SOA 6
D WebService Technik - Aufwand Änderung des Application Server SOA 3
R Webservice Timeout Konfiguration SOA 3
D SOAP Webservice (SAP) SOA 3
MQue WebService Versionierung SOA 9
L [AXIS2] OutOfMemory Exception bei Übertragung von größerer Datei via Webservice SOA 3
A Funktion mit Map als WebService SOA 4
T Webservice serviceName im Handler ermitteln SOA 3
N Webservice Einbinden wsdl SOA 7
M Edit und Remove über Webservice SOA 3
F Client Problem gegen Webservice SOA 3
P Java Webservice mit JWS Bindingnamen customizen SOA 4
L wie ArrayList an Webservice geben? SOA 3
B Webservice Config / SoapStub: Best Practice SOA 3
S Objektübertragung Fehler über Webservice SOA 10
E Webservice durch Java ansprechen SOA 7
L Webservice HTTPS Netbeans SOA 2
G NullPointerException bei Parameterübergabe an Webservice mittels kSoap2 SOA 2
M Webservice per URL ansprechen SOA 14
T Verwendung von Eclipse Projekten im Axis2 Webservice SOA 8
S Webservice als "CronJob" SOA 4
M Webservice (JaxWS) extern verfügbar machen SOA 5
M Welches WebService Framework ist denn das beste FRAMEWORK? SOA 5
D Webservice fürs Internet sichtbar machen SOA 2
W WebService aus einer HTML-Seite SOA 9
T WebService innerhalb von Seam-Projekt, komplexe Datentypen SOA 6
N JAX-WS WebService und Tomcat 7 SOA 11
E Trennung von Daten und WebService und Wiederverwendung der Daten SOA 2
D Sicherheit bei REST-Webservice SOA 19
G WebService, was darf der Client alles sehen SOA 19
M Nutzen des Webservice AWSECommerceService SOA 1
S AXIS2 Webservice: Umgang mit komplexen Datentypen SOA 5
G Webservice Contract first SOA 8
G WebService -> ServletFilter SOA 2
G WebService Concurrency SOA 19
M Fehler beim Veröffentlichen eines Webservice SOA 6
G WebService Types SOA 7
G OpenLigaDB Webservice Client SOA 4
G WebService WSDL SOA 3
A PHP WebService aus Java aufrufen SOA 2
G JPA/ Webservice: Passwort Feld einer Klasse fürs Lesen "verschleiern" SOA 10
P WebService SOA 6
H Webservice: BindingProvider SOA 6
D WebService DB abfrage SOA 4
mabe83 EJB Klassen für Webservice nutzen SOA 2
S Webservice-Client-Klasse gibt immer null zurück SOA 3
G WebService mit komplexen Objekten SOA 5
C Problem mit Java Webservice - SOAPBinding.Style - Wrapper class fehlt SOA 1
T Rest Webservice der 2 verschiedene XML Objekte(JaxB) entgegennimmt SOA 10
S Webservice, Vererbung und Netbeans SOA 3
E Lesen der kompletten SOAP als WebService Provider/Server SOA 4
T WebService Authentifizierung SOA 11
mabe83 Suche Hilfe zum Thema Webservice + EJB SOA 3
T Krankes Vorhaben: Von VB auf Java Webservice SOA 10
M Webservice RuntimeModelerException? SOA 5
G Webservice mit Java aufrufen SOA 2
G WebService: mehrere methoden mit demselben Namen SOA 4
T einfacher Webservice SOA 3
G Webservice im JBoss: runtime modeler error SOA 3
V webservice von aussen (webbrowser) ansprechen SOA 2
V Webservice, allgemeine Fragen SOA 9
G Alfresco - WebDav oder WebService SOA 2
0 Webservice nutzen (rpc/enc style) SOA 2
R XML verschicken mit Webservice Server Client SOA 2
R Webservice aufrufen mit SOAP Style.DOCUMENT ? SOA 5
G Webservice zugreifen SOA 6
G Deploy Apache CXF WebService mit Eclipse SOA 2
G Webservice mit JSON SOA 8
T Webservice über Tomcat loggen SOA 5
thE_29 WebService - JAXBElement - richtige Klasse? SOA 2
L Probleme mit komplexen Datentypen in einen Webservice SOA 2
O brauche hilfe bei java/webservice geschichte SOA 29
M Webservice/ Axis/ Bea Weblogic Server 8.1 SOA 12
E Webservice konfigurieren SOA 2
F Tutorial zu WebService mit JBoss, Eclipse und Jax-ws? SOA 3
C Webservice im Unternehmen SOA 4
L webservice frage (eclipse/wtp, wsdl) SOA 12
U Webservice mit Axis, Hello World Beispiel SOA 2
J Frage zu Webservice SOA 3
L WebService TestClient Problem SOA 2
M Web Services Client erstellen: Grundlegende Starthilfe SOA 2
D JAX-WS im eigenen Heimnetz erstellen. Portfreigabe? SOA 2

Ähnliche Java Themen

Neue Themen


Oben