Rest Webservice der 2 verschiedene XML Objekte(JaxB) entgegennimmt

Status
Nicht offen für weitere Antworten.

Tho82

Mitglied
Hi zusammen,

gibt es die Möglichkeit, dass ein Rest Webservice 2 unterschiedliche (XML) Objekte (JaxB) entgegennimmt?

Hier mein code, der leider nicht funktioniert:

Java:
@Path("/login")
public class LoginNotificationWS {

	@POST
	@Consumes("application/xml")
	public void login(Login login) {
		
	}

	@POST
	@Consumes("application/xml")
	public void logoff(Logoff logoff) {
		
	}
}

Hier die Fehlermeldung beim Tomcat start:

Code:
com.sun.jersey.api.container.ContainerException: Fatal issues found at class test.resource.LoginNotificationWS. See logs for more details.
	at com.sun.jersey.server.impl.application.WebApplicationImpl.newResourceClass(WebApplicationImpl.java:289)
	at com.sun.jersey.server.impl.application.WebApplicationImpl.getResourceClass(WebApplicationImpl.java:264)
	at com.sun.jersey.server.impl.application.WebApplicationImpl.processRootResources(WebApplicationImpl.java:666)
	at com.sun.jersey.server.impl.application.WebApplicationImpl.initiate(WebApplicationImpl.java:492)
	at com.sun.jersey.server.impl.application.WebApplicationImpl.initiate(WebApplicationImpl.java:319)
	at com.sun.jersey.spi.container.servlet.ServletContainer.initiate(ServletContainer.java:652)
	at com.sun.jersey.spi.container.servlet.ServletContainer.load(ServletContainer.java:540)
	at com.sun.jersey.spi.container.servlet.ServletContainer.init(ServletContainer.java:207)
	at org.apache.catalina.core.StandardWrapper.loadServlet(StandardWrapper.java:1172)
	at org.apache.catalina.core.StandardWrapper.load(StandardWrapper.java:992)
	at org.apache.catalina.core.StandardContext.loadOnStartup(StandardContext.java:4058)
	at org.apache.catalina.core.StandardContext.start(StandardContext.java:4371)
	at org.apache.catalina.core.ContainerBase.start(ContainerBase.java:1045)
	at org.apache.catalina.core.StandardHost.start(StandardHost.java:719)
	at org.apache.catalina.core.ContainerBase.start(ContainerBase.java:1045)
	at org.apache.catalina.core.StandardEngine.start(StandardEngine.java:443)
	at org.apache.catalina.core.StandardService.start(StandardService.java:516)
	at org.apache.catalina.core.StandardServer.start(StandardServer.java:710)
	at org.apache.catalina.startup.Catalina.start(Catalina.java:578)
	at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
	at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39)
	at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
	at java.lang.reflect.Method.invoke(Method.java:597)
	at org.apache.catalina.startup.Bootstrap.start(Bootstrap.java:288)
	at org.apache.catalina.startup.Bootstrap.main(Bootstrap.java:413)
03.06.2009 14:20:18 org.apache.catalina.core.StandardContext loadOnStartup

Der Webservice soll nun entweder ein JaxB Objekt der Klasse Login oder der Klasse Logoff entgegen nehmen. Hat jemand eine Idee wie das funktionieren soll?

EDIT: Habe auch schon versucht, die Methoden gleich zu nennen (beide login), was aber zu demselben Fehler führt...

Viele Grüße und dankeschön im Voraus..
 

Tho82

Mitglied
Das Problem ist, dass ich über die URL jeweils über Webservices informiert werde, die gegenstelle ist eine andere Applikation mit normalen Webservices.

Kann ich den Request irgendwie so auslesen und dann "von Hand" marshallen? Wäre doch auch ne Möglichkeit, wenn ich den Stream irgendwie auslesen könnte?
 

Noctarius

Top Contributor
REST ist REST und kein echter WebService. REST verfolgt den Ansatz einer festen URL für jedes eindeutige Objekt (in Java jede Instanz). Ein normaler WebService geht auf Methodenbasis.
 

Tho82

Mitglied
Ja das weiss ich. Nichts desto trotz brauch ich eine Lösung für das Problem.

Kann der Stream der reinkommt irgendwie ausgelesen werden, gibts die Möglichkeit?
 

Noctarius

Top Contributor
Wieso willst du eigentlich umbedingt REST benutzen? Nehm doch CXF oder Axis2 und bau einen richtigen WebService.

Ansonsten klar kannst du das von Hand machen. Servlet machen, doGet / doPost überschreiben, XML Body auslesen, in den JAXB schieben, Objekt rausbekommen, weiterarbeiten.

Das können die richtigen WebService Frameworks aber auch alles automatisch. Mir erschließt sich nur nicht, wieso du so versessen darauf bist einen SOAP WebService auf REST zu mappen was rein technisch 2 komplett verschiedene Blickwinkel auf die Daten sind.
 

Tho82

Mitglied
Das Problem ist, dass die Schnittstelle von unserer Seite her komplett mit REST implementiert wurde. Nur dieser Webservice liefert jetzt 2 verschiedene Objekte zurück. Zeit um alles auf ein anderes Framework umzustellen ist nicht vorhanden, und ein zweites Framework möchte ich nicht ins Spiel bringen wenn irgendwie möglich. Die Lösung sollte daher möglichst einfach sein, und eben mit dem vorhandenen - REST - realisiert werden.

Also über REST kann ich nur ein JaxB Objekt entgegennehmen, habe ich das richtig verstanden? Also sowas wie einen InputStream nicht? Wie z.B.:

Java:
@POST
    @Consumes("text/xml")
    public void login(InputStream inputStream) {
        
    }

?

Wäre eine andere Möglichkeit, ein neues JaxB Objekt selber zu basteln das ein Objekt wie folgendes entgegennimmt:

<login>
<....>
</login>
<logout>
<...>
</logout>

Beide Tags (login und logout) optional machen.. ist das möglich?
 

Noctarius

Top Contributor
Natürlich kannst du ein ganz neues Objekt erschaffen aber das muss die Gegenseite auch wieder kennen.

Hindert dich denn irgendwas /login und /logout zu nutzen? REST kennt nunmal nur Objekte und die sind in der URI definiert.

Alternative Wrapper-Service als eine Art ESB Adapter
 

Tho82

Mitglied
Was verstehst du unter Wrapper-Service (Sorry REST/Webservices ist noch ein wenig Neuland für mich)?
 

Noctarius

Top Contributor
Nen kleines Zusatzapp (nen eigener "WebService"), der die vom externen Programm stammenden SOAP Inhalte annimmt in REST Requests umwandelt und weiterreicht. Rückwärts das Selbe.

Das Ganze ist ein Standardverhalten bei der Anbindung von, nicht für ESB Systeme vorgesehenen, Anwendungen in ESB Landschaften.

Enterprise Service Bus ? Wikipedia

Edit:
Vorteil:
- Indirekte Anbindung beider Services ohne die Schnittstellen zu ändern
- Das SOAP Framework ist nur im Adapterprojekt nötig (keine Änderung der bisherigen Systeme)
- Lastverteilung durch Umlegung des Adapters auf eine Hardware (bei hoher Belastung)

Nachteil:
- Viel CPU-Cycles durch doppeltes Marshalling / Unmarshalling bei jedem Request / Response
- Ein zusätzliches projekt zum Pflegen
- Doppelte Anzahl Ports belegt (einer eingehend, einer ausgehend)
 
Zuletzt bearbeitet:
Status
Nicht offen für weitere Antworten.
Ähnliche Java Themen
  Titel Forum Antworten Datum
D Sicherheit bei REST-Webservice SOA 19
sascha-sphw Statuscode REST Response DELETE SOA 2
B Authentication & Authorization REST API SOA 43
B REST - es gibt eine REST API, wie mache ich nun in JAVA weiter? SOA 8
mrBrown Rest - Bilder mit Metadaten modellieren SOA 24
OnDemand REST Client Aufbau SOA 7
D POST-Request mit Chrome Rest Client wirft Fehler : HTTP Status 415 - Cannot consume content type SOA 3
Shams Was ist ein "Deployment" bei Rest? SOA 1
M HTTP 400 Feher bei REST Web Service durch POST per FormParam SOA 3
M Kann man das Protokoll eines REST (Jersey) bzw. SOAP Web Services manipulieren? SOA 5
P REST POST -> return SOA 4
G WebServices REST SOA 5
H [REST] Deserialisierung eines Object-Feldes SOA 6
G Rest und Sicherheit SOA 3
J Berechtigungen bei REST SOA 2
G Rest - Session Handling SOA 3
J REST mit java client und php server SOA 22
C REST Webservices, XML Ausgabe und Objektübertragung SOA 2
F REST Service mit Netbeans und MySQL Datenbank SOA 1
M Sicherer REST-Service SOA 2
K Vortrag über REST SOA 5
T Hat AXIS2 noch Zukunft und wie REST implementieren? SOA 6
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
N Web Services Client aus externen WebService erstellen SOA 4
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
M Webservice Client erstellen und XML Request senden SOA 3
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
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
R Proxy WebService erstellen SOA 3
G JPA/ Webservice: Passwort Feld einer Klasse fürs Lesen "verschleiern" SOA 10
G WebService mit wsdl erstellen SOA 4
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
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 WebService erstellen SOA 28
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

Ähnliche Java Themen

Neue Themen


Oben