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
Der WebService
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;
}
}