Zum Inhalt springen

JaxB umformen


TeamBob

Empfohlene Beiträge

allo

Also ich habe den einen Tag meine WebService soweit fertig programmiert und wollte meine WebService umstellen

und ihn mit JaxB nutzen. Also ich benutze Eclipse 3.5, JDK 1.5 ( JaxB implementiert ) JRE 1.5 und als Server JBoss.

So ich weis jedoch nicht so genau wie ich das genau mache, mit der Umstellung auf JaxB und ob es unbedingt sinnvoll ist.

Es geht darum, dass in meinen WebService eine Suchfunktion drin ist die einen Index nach Dokumenten durchsucht und diese Ausgibt. Diese Dokumente methoden (ID ; Name ) kommen aus der Klasse "Document" und diese sollen dann in meinen Webservice durchsucht werden und in eine Liste gebracht werden. Jedoch hat dieses nie funktioniert, weil er immer Probleme mit der Arrayumwandlung hatte und XML usw. Ich hatte es so gelöst, das ich die Methoden ID ; Name in eine eigene Klasse gekapselt habe und diese dann erste separat aufgerufen habe und damit hatte es funktioniet. Natürlich wäre das sehr umständlich wenn ich immer alles extra kapseln müsste und nun stellt sich die Frage ob es nicht jaxB und den xml annotation nicht einfacher geht und es doch möglich macht das ganze ohne kapseln. Schaut euch einfach den Quelltext an und ihr seht bestimmt was ich meine.

Wie genau schreibe ich das um mit JaxB und xml annotation.

Danke

Mein Webservice


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

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

public class SearchService {


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

{ try {

	getSearchBean().createIndex();

} catch (Exception e) {

	e.printStackTrace();

}

}



@WebMethod

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

 		{

		List<Document> documents=

			getSearchBean().searchInDocumentFieldsForSimpleSearch(and_search, userId);

			WSDocument ret[] = new WSDocument[documents.size()];

			for(int x = 0; x != documents.size(); x++) //durchläuft class WSDocument

			{

				ret[x] = new WSDocument(documents.get(x)); 

			}

			return ret;

 		}

Meine Klasse Document

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


	private NumberingFormat numberingFormat;


	private Workflow workflow;


	private WorkflowStatus status;


	private Community community;


	private Template template;


	private Integer majorVersion;


	private Integer minorVersion;


	private java.util.Date expiryDate;


	private User originator;


	private User lastModifier;


	private User lockingUser;


	private Long revisionId;


	private Document revision;


	private Document previous;


	private List<DocumentField> documentFields = new ArrayList<DocumentField>(0);


	private Set<DocumentParticipant> participants = new HashSet<DocumentParticipant>(

			0);


	private Set<DocumentAuthor> authors = new HashSet<DocumentAuthor>(0);


	private Set<DocumentCategory> categories = new HashSet<DocumentCategory>(0);


	private Set<DocumentRating> ratings = new HashSet<DocumentRating>(0);


	private Set<Commentary> commentaries = new HashSet<Commentary>(0);


	/** The favorites. */

	private Set<User> inFavorOfUsers = new HashSet<User>(0);


	protected Set<DocumentStatusTask> documentStatusTasks = new HashSet<DocumentStatusTask>(

			0);


	public Document() {

	}


	@OneToMany(mappedBy = "document")

	@OnDelete(action = OnDeleteAction.CASCADE)

	public Set<Commentary> getCommentaries() {

		return commentaries;

	}


	public void setCommentaries(Set<Commentary> commentaries) {

		this.commentaries = commentaries;

	}


	@OneToMany(mappedBy = "document")

	@OnDelete(action = OnDeleteAction.CASCADE)

	public Set<DocumentRating> getRatings() {

		return ratings;

	}


	public void setRatings(Set<DocumentRating> ratings) {

		this.ratings = ratings;

	}


	@OneToMany(mappedBy = "document")

	@OnDelete(action = OnDeleteAction.CASCADE)

	public Set<DocumentCategory> getCategories() {

		return categories;

	}


	public void setCategories(Set<DocumentCategory> categories) {

		this.categories = categories;

	}


	@OneToMany(mappedBy = "document")

	@OnDelete(action = OnDeleteAction.CASCADE)

	public Set<DocumentAuthor> getAuthors() {

		return authors;

	}


	public void setAuthors(Set<DocumentAuthor> authors) {

		this.authors = authors;

	}


	@OneToMany(mappedBy = "document")

	@OrderBy(value = "orderno")

	@OnDelete(action = OnDeleteAction.CASCADE)

	public List<DocumentField> getDocumentFields() {

		return documentFields;

	}


	public void setDocumentFields(List<DocumentField> documentFields) {

		this.documentFields = documentFields;

	}


	@Temporal(TemporalType.TIMESTAMP)

	@Column(name = "expirydate")

	public java.util.Date getExpiryDate() {

		return expiryDate;

	}


	public void setExpiryDate(java.util.Date expiryDate) {

		this.expiryDate = expiryDate;

	}


	@ManyToOne

	@ForeignKey(name = "FK_DOCUMENT_MODIFIER")

	@JoinColumn(name = "changeuserid")

	public User getLastModifier() {

		return lastModifier;

	}


	public void setLastModifier(User lastModifyer) {

		this.lastModifier = lastModifyer;

	}


	@Column(name = "major_version", nullable = false)

	public Integer getMajorVersion() {

		return majorVersion;

	}


	public void setMajorVersion(Integer majorVersion) {

		this.majorVersion = majorVersion;

	}


	@Column(name = "minor_version", nullable = false)

	public Integer getMinorVersion() {

		return minorVersion;

	}


	public void setMinorVersion(Integer minorVersion) {

		this.minorVersion = minorVersion;

	}


	@Column(name = "name", nullable = false)

	public String getName() {

		return name;

	}


	public void setName(String name) {

		this.name = name;

	}

....... geht noch weiter aber das reicht

Mein gekapselte Klasse WSDocument

public class WSDocument {

Document document = new Document();

public WSDocument() {

super();

}

public WSDocument(Document document) {

super();

this.document = document;

}

public Long getId() {

return document.getId();

}

public String getName() {

return document.getName();

}

public void setId(Long id) {

document.setId(id);

}

public void setName(String name) {

document.setName(name);

}

}

Link zu diesem Kommentar
Auf anderen Seiten teilen

Ich kann natürlich nur für mich sprechen, aber für meinen Teil WILL ich Dir nicht helfen. Ich habe das Gefühl, dass eine Hilfe bei Dir für die Katz ist, weil Du nicht die Probleme hinter Deinen Aufgaben verstehen willst, sondern nur vordergründig schnelle Frickellösungen brauchst. Und dafür ist mir die Zeit zu schade. Aber das habe ich Dir in einem Deiner anderen Threads ja schon gesagt. Vielleicht geht es anderen ähnlich und Du erhältst deshalb weniger Antworten als in Deinen ersten Threads.

Peter

Link zu diesem Kommentar
Auf anderen Seiten teilen

naja aber wie du siehst bin ich ja schon sehr weit voran gekommen und er WS funktioniert ja auch bloss etwas umständlich und ich würde gern wissen ob man dies was ich oben beschrieben habe mit JaxB und xml annotations umgehen kann bzw. verbessern kann.

Danke

Link zu diesem Kommentar
Auf anderen Seiten teilen

Ich habe dir doch in einem anderen Thread bereits einen Link auf die Dokumentation geliefert. Was hast du denn da nicht verstanden? Ein Webservice kann auch mit komplexen Klassen umgehen. Sowohl als Parameter als auch als Rückgabewert.

Ich selber habe noch recht wenig mit JBoss gearbeitet deshalb weiß ich nicht welche Webservice Runtime hier genau verwendet wird. Da du hier aber etwas von Java 1.5 schreibst wird wohl eine Java Web Services Developer Pack (WSDP) Version hier verbaut sein welche genau das hast du uns bis jetzt noch nicht gesagt. Vielleicht wird hier auch etwas ganz anderes Verwendet und wir raten hier fröhlich weiter.

Hinzu kommt noch das du wild irgend welche Framework's oder einzelne Jar's zusammenklebst ohne verstanden zu haben was du da eigentlich machst.

Bearbeitet von Schiller256
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...