Zum Inhalt springen

WebService erstellen


TeamBob

Empfohlene Beiträge

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


@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

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;

 		}

}

Link zu diesem Kommentar
Auf anderen Seiten teilen

Deine Aufgaben werde ich hier sicherlich nicht machen.

Lass doch erstmal das Thema mit dem Zugriff auf Hibernate Search außen vor. Erstelle dir doch mal einen einfachen Webservice der die nichts weiter als "Hello World" zurück liefert. Wenn du dann sowohl Server und Client dafür erstellt hast und auch lauffähig deployed bekommen hast dann kannst du dich an schwere Sachen heran wagen. Also z.B was passiert mit Listen kannst du sie so übertragen oder musst du sie vorher in ein Array umwandeln.

Dann solltest du dir auch mal Gedanken zu deinem Design der Webservice Schnittstelle machen. Denn vielleicht wäre es für dich besser einen "Contract-First" Ansatz zu nutzen und nicht wie du es machst eine "Code-First" Ansatz.

Für weitere Hilfen wäre es auch Sinnvoll zu erfahren was für Framework die im Webservice Umfeld einsetzt.

Link zu diesem Kommentar
Auf anderen Seiten teilen

Hi

Also ja vielleicht sollte ich die Search sache mal ausdokumentieren.

Also wenn ich einfach bloss hello world ausgebe, dann sehen ich ja auch hello

world wenn ich alles deploye und lade, aber ich weis nicht wie ich den client dazu programmiere, bzw. wie ich es schaffe das der User eine eingabe macht und diese dann per webservice verarbeitet wird?

Also wenn der zum Bsp. seinen namen eingibt und als response hallo.... bekommt..

Link zu diesem Kommentar
Auf anderen Seiten teilen

Hi

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


@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 und

die ergebnise als Liste ausgibt.

Ich hoffe ihr könnt mir helfen?

Link zu diesem Kommentar
Auf anderen Seiten teilen

Ich denke dein Problem sollte es erstmal nicht weitere komplizierte Methoden einzubinden sondern erstmal dein Hauptproblem zu lösen. Denn du greifst bis jetzt immer nur via SoapUI auf deinen Webservice zu. Das ist aber nicht Ziel der Veranstaltung sondern ein Client soll drauf zugreifen.

Du solltest dir jetzt für dein einfaches Beispiel einen Client erstellen der dann den Zugriff ausführt und dir dein Ergebnis liefert. Da ich immer noch nicht weiß was für eine Webservice Runtime du da einsetzt hier mal ein Link zu einer recht einfachen Beschreibung. WebService in Java

Link zu diesem Kommentar
Auf anderen Seiten teilen

Hi

Also jetzt mal zu allen Dingen die ich zur Zeit benutze.

Eclipse Ganymede 3.40

plugins: - Web Tool Platform 3.04

- Data Tool Platform 1.61

- Modeling Framework 2.41

- SoapUI

JRE 6u12

JDK 1.50

JBoss

So wie genau sollte ich den jetzt weiterverfahren in sachen Client bauen?

danke

Link zu diesem Kommentar
Auf anderen Seiten teilen

Hi

Also ich habe jetzt mal das Tut. gemacht was du gepostet hast und habe da

eine fehlermeldung. Ich habe die Klasse eingerichtet und

wollte dann den server einrichten aber weis nicht so recht wie.

Mach ich einfach ein neues package aus und darin eine klasse und nenne die

Server?

Habe das so gemacht und habe den Quellcode eingeben und das wird

rot unterstrichen mit der Fehlermeldung

new Calculator();

-->No enclosing instance of type WebServiceSearch is accessible. Must qualify the allocation with an enclosing instance of type WebServiceSearch (e.g. x.new A() where x is an instance of WebServiceSearch)

Danke

Link zu diesem Kommentar
Auf anderen Seiten teilen

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

Link zu diesem Kommentar
Auf anderen Seiten teilen

Was ist denn JBoss in deinen Augen? Ist das kein Server?

Ab du einen Applicationserver wie JBoss nutzt oder einen Servlet Container wie Tomcat ist erstmal egal. Du kannst ab Java 6 wie weiter oben bereits verlinkt auch "ohne" zusätzlichen Server auskommen.

Deinen Service musst du aber irgendwie bekannt machen und so zur Verfügung stellen das anderen Teilnehmer auf ihn zugreifen können. Ob du nun einen JBoss einen Tomcat oder die einfache Variante die dir Java 6 zur Verfügung stellt nutzt bleibt dir überlassen. Sollte das nicht dein Ziel sein den Service zur Verfügung zu stellen dann solltest du überlegen ob ein Webservice das richtige Mittel ist.

Link zu diesem Kommentar
Auf anderen Seiten teilen

Hallo

Also ich will den Webservice schon ganz normal zur Verfügung stellen und deswegen auch die Frage ob man extra eine Server Klasse oder so programmiernen muss oder nicht?

Da ja der Webservice theoretisch so weit ist muss ich nun die eigendliche

Funktion reinbringen.

Die Suchfunktion an sich ist ja schon eingebunden, jedoch noch nicht der

return. Wenn ich die suche starte, dann sollten die gefunden Dokumente

als Liste wiedergeben werden, jedoch weis ich nicht ganz genau wie ich das

umsetzen soll, und wie ich es ermögliche dann diese Dokumente anzuklicken um sie aufrufen zu könne.

Wie kann ich die ganze Sache erstmal einfach testen usw.

Danke für eure Hilfe

Link zu diesem Kommentar
Auf anderen Seiten teilen

Ein Server entsteht nicht indem man eine Klasse Server nennt und dort eine Methode startServer implementiert.

Ich denke dir würde es gut tun wenn du erstmal einen Schritt zurück machst. Dann schaust du dir an was du gegeben hast und was du alles brauchst um dein Vorhaben umzusetzen. Was sind überhaupt deine Vorgaben? Denn eine Anbindung von Hibernate Search ist doch schon etwas wo man sich etwas mit auseinander setzen muss. Dann noch das Thema Webservices was auch nicht so schnell mal zusammengeklickt ist.

Wenn du deine Vorgaben genau kennst dann solltest du dich erstmal an das Schnittstellen Design machen. Ob du jetzt mit einem Code First oder Contract First(wsdl/ Schnittstellenbeschreibung zu erst) Ansatz fährst ist im Grunde egal aber du solltest dir Gedanken machen. Für das Design solltest du dann deine Vorgaben (z.B. Use-Cases) nutzen. Also welche Methoden benötige ich um das georderte Ergebnis zu liefern?

Erst wenn deine Schnittstelle definiert ist kannst du dich an das Implementieren des Service Providers und des Clients machen.

Denn deine Fragen die du hier stellst haben grundsätzlich erstmal nicht mit Webservices an sich zu tun. Ein Webservice ist nichts anderes als das du eine Methode Remote aufrufst.

Link zu diesem Kommentar
Auf anderen Seiten teilen

Hi

Also ich soll eine Schnittstelle zu einen Programm erstellen das über Webservice (SOAP) bereit gestellt werden soll.

Diese Webservice soll das durchsuchen von Mysql datenbanken nach Schlagwörtern ermöglichen und diese gefunden Dokumente dann in einer Liste ausgeben, wo es möglich sein soll diese einzelnen dokumente dann zu öffnen.

Die Suchfunktion steht ja schon, jedoch ist mir jetzt nicht ganz klar wie ich die Mysql datenbank durchsuchen soll und die ergebnise dann als lise ausgeben soll. Ich habe bei Jboss schon eien MySql datei eingefügt die diese Sache ermöglichen soll.

Das Design spielt erstmal keine Rolle, da ich dafür nicht zuständig bin.

Danke

Link zu diesem Kommentar
Auf anderen Seiten teilen

Servus,

bist Du Softwareentwickler? Hast Du Erfahrung mit Java Webservices, JDBC, Java EE oder Ähnlichem? Wenn nein, bist Du in meinen Augen der Falsche für die Aufgabe, weil Dir die Grundlagen fehlen. Es ist nicht damit getan, im JBoss eine JCA-Konfiguration für die Anbindung einer MySQL einzufügen, Du musst auch an der geeigneten Stelle über JNDI (neues Schlagwort, das Du kennen solltest) diese Connection verwenden können.

Erklär mal, was Du an Vorwissen hast, dann kann man sehen, ob es sich lohnt, hier weiterzumachen.

Peter

Link zu diesem Kommentar
Auf anderen Seiten teilen

Hi

Also ich habe eine Dualstudium für Informatik und mache nebenbei eine Ausbildung als Softwareentwickler. Da haben sie mir die Aufgaben gegeben da

sie das noch brauchen. Ich habe vorher noch nie richtig mit Webservices

gearbeitet. Mit java schon aber deswegen sollte ich mich ja damit auseinandersetzen und brauche eure Hilfe dabei damit ich weiterkomme und das

auch lerne.

Ich habe jetzt zu der JBoss JCA-Konfiguration noch in meinem Webservice das dazu geschrieben um eine Verbindung aufzubauen zur Datenbank in mysql.

Link zu diesem Kommentar
Auf anderen Seiten teilen

Ich habe jetzt zu der JBoss JCA-Konfiguration noch in meinem Webservice das dazu geschrieben um eine Verbindung aufzubauen zur Datenbank in mysql.

Ich kann leider mit Deinen Beschreibungen relativ wenig anfangen. Lass uns doch noch mal einen Schritt zurück gehen. Wie sieht der Aufbau für Dich aus? Du willst einen Web Service, der was tut. Auf welcher Plattform wird der laufen? JBoss? Dann können wir das auch verwenden. Wenn er in Produktion dann nämlich auf einem Tomcat läuft, musst Du wieder schauen, wie Du die JCA-Connection dort integrierst. Mit welchem Framework wirst Du den Web Service schreiben? Axis, JBossWS, ...? Wie soll das Design Deiner Anwendung sein? Du sagst, es gibt einen Suchservice, aber dann sprichst Du davon, dass Du nicht weißt, wie Du auf die Datenbank zugreifst. Was denn? Und solltest Du auf die Datenbank zugreifen müssen, wie möchtest Du das abkapseln? JDBC DAO, Hibernate, JDO, ...?

Erst wenn Du diese Themen ausreichend geklärt hast, also ein Konzept für Architektur und Design der Anwendung hast, dann kann man weitermachen. Ansonsten ist es so, wie wenn Du in einem Kfz-Mechaniker Forum auftauchst und fragst, wie Du denn den Motor zerlegst, aber noch nicht weißt, welches Auto Du hast oder ob es vielleicht ein Boot oder ein Fahrrad ist.

Peter

Link zu diesem Kommentar
Auf anderen Seiten teilen

Also ich benutze Eclipse, JRE 6_12 ; JDK 6_12; Jboss; Lucene; Hibernate und MySql.

So ich soll einen Webservice schreiben der eine Suchfunktion ermöglicht womit ich eine Mysql datenbank nach schlagwörtern durchsuchen kann.

Das wars jetzt habe ich wie gesagt in meine JBoss deploy ein JCA-Konfiguration

hinzugefügt und das hier in meinen Webservie geschrieben um damit zu conecten


private static void testDataSource()throws NamingException, SQLException {

 InitialContext ctx = new InitialContext();

 DataSource ds = (DataSource)ctx.lookup("java:comp/env/jdbc/lsedemo");

 java.sql.Connection conn = null;

 java.sql.Statement stmt = null; {

 	try {

 		conn = ((java.sql.Statement) ds).getConnection();

	 stmt = conn.createStatement();

	 stmt.execute("Testergebnis");

	 stmt.close();

	 stmt = null;

	 conn.close();

	 conn = null;

 	} 

 	catch (SQLException e) 

 	{

 	e.printStackTrace();

 	} 

 	finally {

 		if (stmt != null) 

 		{

 			try {

 				stmt.close();

 			} catch (SQLException sqlex) {

 			}

 			stmt = null;

 		}

 		if (conn != null) {

 			try {

 				conn.close();

 			} catch (SQLException sqlex) {

 			}

 			conn = null;

 			}

		}

 }

}

Link zu diesem Kommentar
Auf anderen Seiten teilen

Du nutzt Hibernate was willst du denn nun mit dieser Connection? Das Datenbank Handling übernimmt Hibernate für dich. Deine Aufgabe in diesem Zusammenhang, Hibernate so zu konfigurieren das es die JNDI Source nutzt.

Das beste wird es sein wenn du dir eine Aufgabe geben lässt die eher deinen Kenntnissen entspricht. Denn du packst hier Framework Komponenten zusammen die du nicht mal im Ansatz verstanden hast. Das kann so nichts werden.

Bearbeitet von Schiller256
Link zu diesem Kommentar
Auf anderen Seiten teilen

Hi

Also die Sache ist jetzt so weiter alles gelöst und ich habe das alles gemacht.

Jetzt habe ich an meiner Searchmethode gearbeitet und komme jetzt nicht weiter. Wenn ich jetzt das alles mit Jboss deploye dann zeigt er mit ein Fehler an. Ich schätze mal er kommt mit dem umwandeln der Dokumente in eine Arraylist in einer XML Sprache nicht klar oder so...

Fehler


ERROR [MainDeployer] Could not start deployment: file:/C:/Users/dnuss/Programme/jboss-4.2.3.GA/server/default/tmp/deploy/tmp1844kmm.ear-contents/kmm-ws.war

java.lang.IllegalStateException: Cannot build JAXB context

	at org.jboss.ws.metadata.builder.jaxws.JAXWSMetaDataBuilder.createJAXBContext(JAXWSMetaDataBuilder.java:955)

	at org.jboss.ws.metadata.builder.jaxws.JAXWSWebServiceMetaDataBuilder.buildWebServiceMetaData(JAXWSWebServiceMetaDataBuilder.java:156)

	at org.jboss.ws.metadata.builder.jaxws.JAXWSServerMetaDataBuilder.setupProviderOrWebService(JAXWSServerMetaDataBuilder.java:52)

	at org.jboss.ws.metadata.builder.jaxws.JAXWSMetaDataBuilderJSE.buildMetaData(JAXWSMetaDataBuilderJSE.java:63)

	at org.jboss.wsf.stack.jbws.UnifiedMetaDataDeploymentAspect.create(UnifiedMetaDataDeploymentAspect.java:66)

	at org.jboss.wsf.framework.deployment.DeploymentAspectManagerImpl.deploy(DeploymentAspectManagerImpl.java:118)

	at org.jboss.wsf.container.jboss42.ArchiveDeployerHook.deploy(ArchiveDeployerHook.java:97)

	at org.jboss.wsf.container.jboss42.DeployerInterceptor.start(DeployerInterceptor.java:90)

	at org.jboss.deployment.SubDeployerInterceptorSupport$XMBeanInterceptor.start(SubDeployerInterceptorSupport.java:188)

	at org.jboss.deployment.SubDeployerInterceptor.invoke(SubDeployerInterceptor.java:95)

	at org.jboss.mx.server.Invocation.invoke(Invocation.java:88)

	at org.jboss.mx.server.AbstractMBeanInvoker.invoke(AbstractMBeanInvoker.java:264)

	at org.jboss.mx.server.MBeanServerImpl.invoke(MBeanServerImpl.java:659)

	at org.jboss.mx.util.MBeanProxyExt.invoke(MBeanProxyExt.java:210)

......

......

......

Webservice

package web.service;



import java.util.List;


import javax.ejb.EJB;

import javax.jws.WebMethod;

import javax.jws.WebService;

import javax.jws.soap.SOAPBinding;

import javax.naming.InitialContext;



import ejb.search.*;

import persistence.hibernate.entities.Document;




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

@SOAPBinding(style = SOAPBinding.Style.RPC) ////Kommunikation über SOAP prozedurorientiert

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 void createIndex ()

{ try {

	getSearchBean().createIndex();

} catch (Exception e) {

	e.printStackTrace();

}

}


@WebMethod

 	public Document[] searchInDocumentFieldsForSimpleSearch(final String and_search, final Long userId)

 		{

		List<Document> documents=

		getSearchBean().searchInDocumentFieldsForSimpleSearch(and_search, userId);

		return documents.toArray(new Document[documents.size()]);

 		}

}

Das hier ist die Dokument Klasse aber nur der Anfang weil die sehr lang ist...

@Entity

@Indexed(index = Item.INDEXNAME)

@Table(name = "DOCUMENT")

@PrimaryKeyJoinColumn(name = "itemid")

@OnDelete(action = OnDeleteAction.CASCADE)

public class Document extends Item {


	private static final long serialVersionUID = 4383112294280993163L;


	@Embeddable

	static public class NumberingFormat implements Serializable {


		private static final long serialVersionUID = -6523464405795614043L;


		private String format;


		private Integer sequenceId;


		@Column(name = "format", length = 100, nullable = true)

		public String getFormat() {

			return format;

		}


		public void setFormat(String format) {

			this.format = format;

		}


		@Column(name = "sequenceId", nullable = true)

		public Integer getSequenceId() {

			return sequenceId;

		}


		public void setSequenceId(Integer sequenceId) {

			this.sequenceId = sequenceId;

		}


	}


	private String name;


Link zu diesem Kommentar
Auf anderen Seiten teilen

Servus,

ich muss mich leider ausklinken. Meine Zeit reicht nicht aus, um bei Adam und Eva anzufangen und Dir bis zu Hibernate, JDBC, JaxB usw. alles zu erklären.

In meinen Augen ist das Grundproblem schon, dass Du Dir keine Gedanken zu dem System an sich machst, sondern einfach ziellos anfängst (Hibernate verwenden wollen und sich eine Connection für JDBC geben lassen).

Viel Erfolg!

Peter

Link zu diesem Kommentar
Auf anderen Seiten teilen

Du schreibst das du dir keine Gedanken um das Design der Anwendung machen musst weil das jemand anderes für dich übernimmt. Das ist hier aber eines der Hauptprobleme dir ist die Komplexität deiner Anwendung überhaupt nicht klar. Weder auf Infrastruktur Seite noch in deiner Anwendung selbst. Du versucht hier nach irgendwelchen Tutorials wild Komponenten zusammen zustecken ohne das du ansatzweise verstanden hast was da passiert. Dir fehlen die Grundlagen um solche Aufgaben umsetzen zu können. Grundlagen lernt man aber nicht in dem du wild unterschiedliche Komponenten aneinander reihst und hoffst das es irgendwann läuft. Sondern in dem man Komponente für Komponente einzeln Verstanden hat und sie dann zusammen einsetzen kann.

Deine Fehlermeldung hat nichts mit dem List in einer Array umwandeln zu tun. Denn die Exception fliegt bereits zum deployment Zeitpunkt. Hier wird die Methode selbst noch gar nicht ausgewertet. Du würdest hier eventuell Probleme zur Laufzeit bekommen. Schau dir mal deinen Code an wo du da JAXB einsetzt ich denke irgendwo wo du XML to Object oder Object to XML nutzt.

Link zu diesem Kommentar
Auf anderen Seiten teilen

hmm der fehler kam erst nachdem ich die Suchmethode hier geschrieben habe also muss es doch irgendwo darin liegen aber ich finde nix. habe doch alles gepostet

Suchmethode


WebMethod

 	public Document[] searchInDocumentFieldsForSimpleSearch(final String and_search, final Long userId)

 		{

		List<Document> documents=

		getSearchBean().searchInDocumentFieldsForSimpleSearch(and_search, userId);

		return documents.toArray(new Document[documents.size()]);

 		}

}

Link zu diesem Kommentar
Auf anderen Seiten teilen

Weißt du was JAXB macht? Ich habe das Gefühl nicht wirklich.

Bis jetzt bestand deine Webservice Schnittstelle nur aus primitiven Datentypen. Die machen beim umwandeln von XML to Java und wieder zurück keine Probleme. Jetzt verwendest du aber einen komplexen Datentyp da weiß die Webservice Runtime erstmal nichts mit anzufangen.

Link zu diesem Kommentar
Auf anderen Seiten teilen

Naja JAXB ermöglicht doch das aus XML Datein an java Klassen zu binden um daraus dann Java klassen aus eine XML Schema zu genieren.

Naja also muss ich das Runtime irgendwie klar machen, bloss wie?

Weis den keiner eine Lösung? Dann wäre ich der Sache schon sehr viel nähr.

danke

Link zu diesem Kommentar
Auf anderen Seiten teilen

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.

Gast
Auf dieses Thema antworten...

×   Du hast formatierten Text eingefügt.   Formatierung wiederherstellen

  Nur 75 Emojis sind erlaubt.

×   Dein Link wurde automatisch eingebettet.   Einbetten rückgängig machen und als Link darstellen

×   Dein vorheriger Inhalt wurde wiederhergestellt.   Editor leeren

×   Du kannst Bilder nicht direkt einfügen. Lade Bilder hoch oder lade sie von einer URL.

Fachinformatiker.de, 2024 by SE Internet Services

fidelogo_small.png

Schicke uns eine Nachricht!

Fachinformatiker.de ist die größte IT-Community
rund um Ausbildung, Job, Weiterbildung für IT-Fachkräfte.

Fachinformatiker.de App

Download on the App Store
Get it on Google Play

Kontakt

Hier werben?
Oder sende eine E-Mail an

Social media u. feeds

Jobboard für Fachinformatiker und IT-Fachkräfte

×
×
  • Neu erstellen...