2016-04-15 16 views
0

Wir migrieren unsere Web-Services von JBoss 5 zu JBoss 7. Die Web-Services werden jetzt mit dem Service-Namen in der URL veröffentlicht, wodurch alle bestehenden Clients aufgelöst werden.Ändern der veröffentlichten WebService-Adresse in JBoss AS 7.1.1.Final

Wie kann ich die veröffentlichte Adresse zurück zu dem, was es früher war, zwingen?

JBoss 5 url: http://localhost:8080/app/MyServiceImpl

JBoss 7 url: http://localhost:8080/app/MyService/MyServiceImpl

Service-Definition ist alle EJB Anmerkungen:

@Stateless 
@WebContext(contextRoot = "/app") 
@WebService(name = "MyServiceImpl", serviceName = "MyService", portName = "MyServicePort", targetNamespace = "http://...", portName="MyServicePortType", wsdlLocation="/META-INF/wsdl/MyService.wsdl") 

public class MyServiceImpl extends implements MyServicePortType { 
    //code for webservice operations 
} 

Grundsätzlich mag ich den service aus der URL entfernen, nach hinten haben Kompatibilität. Wenn ich serviceName von @WebService lösche, erhalte ich beim Start von JBoss einen Fehler, also ist das keine Lösung. Der Fehler wird wie: Verursacht durch: org.apache.cxf.service.factory.ServiceConstructionException: Konnte nicht Definition für Service

Dank

Antwort

1

So finden, wie ich in der Frage sagte, wenn ich service entfernen @WebService, JBoss7 löst beim Start eine Ausnahme aus. Bei näherer Betrachtung des Stack-Trace habe ich festgestellt, dass der @WebClient nicht gefunden werden kann, da er nach einem standardmäßig erstellten Namen sucht und folgendermaßen aussieht: MyServiceImplService.

Meine Lösung war, meinen @ WebClient namens MyService in MyServiceImplService umzubenennen. Auf diese Weise konnte ich das Attribut serviceName aus der Annotation @WebService entfernen und JBoss7 einen @WebClient mit dem Standardnamen bereitstellen, nach dem gesucht wird. Für EJB-basierte JAX-WS Web Services der Standard-Endpunkt-Adresse lautet:

host/@ WebService.serviceName/@ WebService.name

Wo das @ WebService.serviceName und @ WebService.name sind Anmerkung Attribute der Webdienst

Also, wenn ich nicht das Attribut service vorsah, wurde auf die URL nicht hinzugefügt, und jetzt sieht es aus wie das in JBoss5:

http://localhost:8080/app/MyServiceImpl