TeamBob Geschrieben 13. Februar 2009 Geschrieben 13. Februar 2009 ch habe vor mir ein Project und in diesem Project heißt ein Package: Search. Darin befinden sich mehrere Klassen und eine Klasse besitzt den Namen: SearchBean Der Quelltext dieser Klasse geht circa über 50 Seiten. Ich benötige daraus eine Methode die es ermöglicht dokumente nach schlagwörtern zu durchsuchen und diese auszugeben. Diese Methode ist diese "searchInDocumentFieldsForSimpleSearch" 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); } } } return documents; } /* * (non-Javadoc) * * @seede.search.SearchLocal# * getAllDocumentsByUserCommunitiesAndByReleaseStatus(java.lang.Long) */ Ich habe in diesen project ein neues package: webserive angelegt und den webservice programmiert. Ich benötige in diesem Webservice die methode von oben, aber weis nicht wie ich sie einbinden soll. Hier ist mal der Quelltext zum Webservice. Ich hoffe ihr könnt mir helfen. Ganz unten ist der code zum einbinden der Methode, aber das kann doch nicht alles sein? Danke für jede Hilfe package web.service; import javax.ejb.EJB; import javax.jws.WebMethod; import javax.jws.WebParam; import javax.jws.WebService; import javax.naming.InitialContext; import 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.until.ArrayList<String> getItems(java.lang.String searchTerm) { // new java.until.ArrayList<String>(); @EJB SearchBean object = new SearchBean(); object.searchInDocumentFieldsForSimpleSearch(); } } Zitieren
breeZer87 Geschrieben 13. Februar 2009 Geschrieben 13. Februar 2009 Hallo, du rufst ja die Methode object.searchInDocumentFieldsForSimpleSearch(); und somit wird diese ausgeführt und gibt dir "documents" zurück, was du dann damit anfängst ist dann was anderes. Kann natürlich sein, dass ich da was falsch verstanden habe, aber so sieht es für mich aus. Zitieren
TeamBob Geschrieben 13. Februar 2009 Autor Geschrieben 13. Februar 2009 aber warum wird bei mir EJB SearchBean object1 = new SearchBean(); object.searchInDocumentFieldsForSimpleSearch(); dann rot unterschrichen mit dem Fehler Syntax error on token "searchInDocumentFieldsForSimpleSearch", Identifier expected after this token Zitieren
breeZer87 Geschrieben 13. Februar 2009 Geschrieben 13. Februar 2009 weil du keine Parameter eingefügt hast ... public List<Document> searchInDocumentFieldsForSimpleSearch( final String and_search, final Long userId) das is deine Methode und du führst nur object.searchInDocumentFieldsForSimpleSearch(); aus. Zitieren
TeamBob Geschrieben 13. Februar 2009 Autor Geschrieben 13. Februar 2009 Also muss ich statt SearchBean object1 = new SearchBean(); object.searchInDocumentFieldsForSimpleSearch(); das hier schreiben? public List<Document> searchInDocumentFieldsForSimpleSearch( final String and_search, final Long userId) oder da? public List<Document> searchInDocumentFieldsForSimpleSearch( final String and_search, final Long userId) { return null; } Zitieren
breeZer87 Geschrieben 13. Februar 2009 Geschrieben 13. Februar 2009 nein einfach SearchBean object1 = new SearchBean(); object.searchInDocumentFieldsForSimpleSearch("Suchbegriff? also ein string!", 001(also hier eine zahl bzw. die userid)); Zitieren
TeamBob Geschrieben 13. Februar 2009 Autor Geschrieben 13. Februar 2009 Also wenn ich das schreibe SearchBean object1 = new SearchBean(); object.searchInDocumentFieldsForSimpleSearch(final String and_search, final Long userId) { return null; } dann unterstreicht er mir das ende alles rot und wenn ich auf fix gehe kommt eine möglichkeit und die sieht so aus. SearchBean object1 = new SearchBean(); Object searchInDocumentFieldsForSimpleSearch(final String and_search, final Long userId) Zitieren
breeZer87 Geschrieben 13. Februar 2009 Geschrieben 13. Februar 2009 ja du sollst ja auch einen String und eine UserID eingeben... ein bsp. (keine garantie das es geht) SearchBean object1 = new SearchBean(); Object searchInDocumentFieldsForSimpleSearch("Suchbegriff", 00520); Zitieren
TeamBob Geschrieben 13. Februar 2009 Autor Geschrieben 13. Februar 2009 aber ich kann doch nicht einfach schon eine User ID, bzw. Suchbegriff vorher eingeben, weil der User der diesen Webservice benutz soll ja selber den Suchbegriff eingeben usw. Zitieren
breeZer87 Geschrieben 13. Februar 2009 Geschrieben 13. Februar 2009 Der Benutzer muss sich doch sicherlich Anmelden?! Da musst du dir die UserId übergeben lassen und diese dann dort in dem Parametern angeben. Das Programm brauch die UserId um zu checken welche Dokumente der User sehen darf. Hast du denn vorher schon Erfahrungen in Java oder anderen Programmiersprachen gesammelt? Ohne jegliches Wissen, wär es angebracht mit leichteren dingen anzufangen. Zitieren
TeamBob Geschrieben 13. Februar 2009 Autor Geschrieben 13. Februar 2009 Na so wird doch die UserID übergeben oder irre ich mich SearchBean object1 = new SearchBean(); Object searchInDocumentFieldsForSimpleSearch(final String and_search, final Long userId) Zitieren
breeZer87 Geschrieben 13. Februar 2009 Geschrieben 13. Februar 2009 ja du irrst dich, final String and_search - woher soll er in der klasse wissen, was die Variable and_search bedeutet??? final Long userId - das selbe hier userId wird nirgendswo definiert.... Du musst dir in der Klasse schon Variablen definieren, welche dir den Suchbegriff geben, dieser muss doch sicherlich auf einer OBerfläche eingegebn werden.... diesen musste dann der Methode object1.searchInDocumentFieldsForSimpleSearch() übergeben. Genauso die UserID... die musst du auch aus dem Programm auslesen und dann als Parameter dieser Methode übergeben... Du scheinst scheinbar keine richtig Ahnung zu haben, deshalb empfehl ich dir erstma leichtere dinge zu machen. Java ist auch eine Insel (8. Auflage) empfehle ich dir ma anzuschauen... dort findest du gute beispiele. Zitieren
TeamBob Geschrieben 13. Februar 2009 Autor Geschrieben 13. Februar 2009 Ok Also muss ich in meinen Webservice extra eine Variable definieren die die UserID ausliest und eine Fkt., die diese dann übergibt. Das selbe dann auch für den Suchbegriff Danke Zitieren
Empfohlene Beiträge
Dein Kommentar
Du kannst jetzt schreiben und Dich später registrieren. Wenn Du ein Konto hast, melde Dich jetzt an, um unter Deinem Benutzernamen zu schreiben.