À l'aide de JAX-WS services web avec Spring 3.0.X sur JBoss as 7.1.X
J'ai quelques problèmes de déploiement d'un JAX-WS webservice avec le Printemps 3.0.6 sur JBoss as Final 7.1.1.
J'ai essayé les deux première méthode de ce tutoriel: http://www.javacodegeeks.com/2010/11/jaxws-with-spring-and-maven-tutorial.html
Quand j'ai été en utilisant la première méthode (extension de SpringBeanAutowiringSupport et déclarer la servlet dans web.xml) l'application se déploie correctement, mais les haricots que j'injecte dans le webservice sont Nulles.
À l'aide de la seconde méthode avec SimpleJaxWsServiceExporter j'obtiens une erreur lors du déploiement:
10:09:33,012 ERROR [org.springframework.web.context.ContextLoader] (MSC service thread 1-2) Context initialization failed: org.springframework.beans.factory.BeanCreationException: Error creating bean with name 'org.springframework.remoting.jaxws.SimpleJaxWsServiceExporter#0' defined in ServletContext resource [/WEB-INF/generic-applicationContext.xml]: Invocation of init method failed; nested exception is javax.xml.ws.WebServiceException: java.lang.RuntimeException: java.net.BindException: Address already in use: bind
at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.initializeBean(AbstractAutowireCapableBeanFactory.java:1420) [spring-beans-3.0.6.RELEASE.jar:3.0.6.RELEASE]
at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.doCreateBean(AbstractAutowireCapableBeanFactory.java:519) [spring-beans-3.0.6.RELEASE.jar:3.0.6.RELEASE]
at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.createBean(AbstractAutowireCapableBeanFactory.java:456) [spring-beans-3.0.6.RELEASE.jar:3.0.6.RELEASE]
at org.springframework.beans.factory.support.AbstractBeanFactory$1.getObject(AbstractBeanFactory.java:293) [spring-beans-3.0.6.RELEASE.jar:3.0.6.RELEASE]
at org.springframework.beans.factory.support.DefaultSingletonBeanRegistry.getSingleton(DefaultSingletonBeanRegistry.java:222) [spring-beans-3.0.6.RELEASE.jar:3.0.6.RELEASE]
at org.springframework.beans.factory.support.AbstractBeanFactory.doGetBean(AbstractBeanFactory.java:290) [spring-beans-3.0.6.RELEASE.jar:3.0.6.RELEASE]
at org.springframework.beans.factory.support.AbstractBeanFactory.getBean(AbstractBeanFactory.java:192) [spring-beans-3.0.6.RELEASE.jar:3.0.6.RELEASE]
at org.springframework.beans.factory.support.DefaultListableBeanFactory.preInstantiateSingletons(DefaultListableBeanFactory.java:585) [spring-beans-3.0.6.RELEASE.jar:3.0.6.RELEASE]
at org.springframework.context.support.AbstractApplicationContext.finishBeanFactoryInitialization(AbstractApplicationContext.java:895) [spring-context-3.0.6.RELEASE.jar:3.0.6.RELEASE]
at org.springframework.context.support.AbstractApplicationContext.refresh(AbstractApplicationContext.java:425) [spring-context-3.0.6.RELEASE.jar:3.0.6.RELEASE]
at org.springframework.web.context.ContextLoader.createWebApplicationContext(ContextLoader.java:282) [spring-web-3.0.6.RELEASE.jar:3.0.6.RELEASE]
at org.springframework.web.context.ContextLoader.initWebApplicationContext(ContextLoader.java:204) [spring-web-3.0.6.RELEASE.jar:3.0.6.RELEASE]
at org.springframework.web.context.ContextLoaderListener.contextInitialized(ContextLoaderListener.java:47) [spring-web-3.0.6.RELEASE.jar:3.0.6.RELEASE]
at org.apache.catalina.core.StandardContext.contextListenerStart(StandardContext.java:3392) [jbossweb-7.0.13.Final.jar:]
at org.apache.catalina.core.StandardContext.start(StandardContext.java:3850) [jbossweb-7.0.13.Final.jar:]
at org.jboss.as.web.deployment.WebDeploymentService.start(WebDeploymentService.java:90) [jboss-as-web-7.1.1.Final.jar:7.1.1.Final]
at org.jboss.msc.service.ServiceControllerImpl$StartTask.startService(ServiceControllerImpl.java:1811)
at org.jboss.msc.service.ServiceControllerImpl$StartTask.run(ServiceControllerImpl.java:1746)
at java.util.concurrent.ThreadPoolExecutor$Worker.runTask(ThreadPoolExecutor.java:886) [rt.jar:1.6.0_18]
at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:908) [rt.jar:1.6.0_18]
at java.lang.Thread.run(Thread.java:619) [rt.jar:1.6.0_18]
Caused by: javax.xml.ws.WebServiceException: java.lang.RuntimeException: java.net.BindException: Address already in use: bind
at org.apache.cxf.jaxws.EndpointImpl.doPublish(EndpointImpl.java:350)
at org.apache.cxf.jaxws.EndpointImpl.publish(EndpointImpl.java:239)
at org.jboss.wsf.stack.cxf.client.ProviderImpl$DelegateEndpointImpl.publish(ProviderImpl.java:300)
at org.springframework.remoting.jaxws.SimpleJaxWsServiceExporter.publishEndpoint(SimpleJaxWsServiceExporter.java:68) [spring-web-3.0.6.RELEASE.jar:3.0.6.RELEASE]
at org.springframework.remoting.jaxws.AbstractJaxWsServiceExporter.publishEndpoints(AbstractJaxWsServiceExporter.java:154) [spring-web-3.0.6.RELEASE.jar:3.0.6.RELEASE]
at org.springframework.remoting.jaxws.AbstractJaxWsServiceExporter.afterPropertiesSet(AbstractJaxWsServiceExporter.java:125) [spring-web-3.0.6.RELEASE.jar:3.0.6.RELEASE]
at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.invokeInitMethods(AbstractAutowireCapableBeanFactory.java:1477) [spring-beans-3.0.6.RELEASE.jar:3.0.6.RELEASE]
at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.initializeBean(AbstractAutowireCapableBeanFactory.java:1417) [spring-beans-3.0.6.RELEASE.jar:3.0.6.RELEASE]
... 20 more
web.xml
<?xml version="1.0" encoding="UTF-8"?>
<web-app xmlns="http://java.sun.com/xml/ns/j2ee" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd" version="2.5">
<display-name>subscription-barring-service</display-name>
<context-param>
<param-name>contextConfigLocation</param-name>
<param-value>/WEB-INF/generic-applicationContext.xml</param-value>
</context-param>
<listener>
<listener-class>org.springframework.web.context.ContextLoaderListener</listener-class>
</listener>
</web-app>
le contexte de l'application:
<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns="http://www.springframework.org/schema/beans" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xmlns:context="http://www.springframework.org/schema/context"
xmlns:jee="http://www.springframework.org/schema/jee"
xmlns:tx="http://www.springframework.org/schema/tx"
xmlns:task="http://www.springframework.org/schema/task"
xsi:schemaLocation="
http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans-3.0.xsd
http://www.springframework.org/schema/jee http://www.springframework.org/schema/jee/spring-jee-3.0.xsd
http://www.springframework.org/schema/context http://www.springframework.org/schema/context/spring-context-3.0.xsd
http://www.springframework.org/schema/tx http://www.springframework.org/schema/tx/spring-tx-3.0.xsd
http://www.springframework.org/schema/task http://www.springframework.org/schema/task/spring-task-3.0.xsd">
<context:component-scan
base-package="org.bluewin.bwsso.services.barring" />
<bean class="org.springframework.remoting.jaxws.SimpleJaxWsServiceExporter"/>
</beans>
webservice:
@Service("terminateSessionsEndpoint")
@WebService(serviceName = "TerminateSessionsEndpoint", portName = "TerminateSessionsEndpoint")
public class TerminateSessionsEndpoint extends SpringBeanAutowiringSupport {
private Logger logger = Logger.getLogger(TerminateSessionsEndpoint.class);
@Autowired
Service serviceImpl;
@WebMethod(operationName = "TerminateAllSessionsForAccountId")
@WebResult(name = "TerminateAllSessionsResponse")
public TerminateAllSessionsResponseVO terminateAllSessionsForAccountId(
@WebParam(name = "TerminateAllSessionsRequest")
TerminateAllSessionsRequestVO requestWS) {
//do some logic..
}
}
Aucune idée de comment puis-je le faire fonctionner?
le problème est de ports , vous devez vérifier les ports disponibles
il n'est pas le problème de port. c'est quelque chose de plus difficile. lorsque vous modifiez le numéro de port pour le SimpleJaxWsServiceExporter:
Il a quelque chose à voir avec le port, selon le journal.
Comme une pensée générale, on n'a pas besoin d'un part entière java EE contenant afin d'exposer un WS à l'aide de JAX-WS.
il n'est pas le problème de port. c'est quelque chose de plus difficile. lorsque vous modifiez le numéro de port pour le SimpleJaxWsServiceExporter:
<property name="baseAddress" value="http://localhost:9999/ws/" />
il donne toujours la même exception. J'ai également essayé de le configurer à l'aide de cette méthode Exposition servlet à base de services web avec JAX-WS (static.springsource.org/spring/docs/3.1.x/...), puis le déploiement sur JBoss va sans aucun problème, mais l'injection de haricots avec @Autocâblés ne fonctionne pas.Il a quelque chose à voir avec le port, selon le journal.
Comme une pensée générale, on n'a pas besoin d'un part entière java EE contenant afin d'exposer un WS à l'aide de JAX-WS.
OriginalL'auteur kbielski | 2012-05-04
Vous devez vous connecter pour publier un commentaire.
J'ai aussi eu des problèmes de déploiement de JAX-WS avec une configuration similaire. En effet, à l'aide de la SpringBeanAutowiringSupport comme décrit au Printemps doc chapitre "19.5.5 Exposer servlet à base de services web avec JAX-WS" ne fonctionne pas comme prévu.
Voir doc http://static.springsource.org/spring/docs/3.0.x/spring-framework-reference/html/remoting.html#remoting-web-services
Mais vous avez tort d'essayer d'utiliser SimpleJaxWsServiceExporter. Le chapitre "l'article 19.5.6 l'Exportation autonome des services web avec JAX-WS" du printemps doc.
Ce fait en conflit avec le service web a déjà été enregistré par jboss.
Pour prouver essayer de configuration suivantes avec la mise à jour numéro de port
le contexte de l'application:
Au final vous allez courir avec deux services exposés
Comme pour l'instant j'ai trouvé deux solutions proposées par d'autres personnes:
Les deux solutions fonctionnent très bien.
OriginalL'auteur Andrzej Łach
C'est certainement un port problème. L'exception est assez clair sur ce point.
De votre commentaire vous indiquer qu'il y a quelque chose à l'écoute sur le port 9999,
<property name="baseAddress" value="http://localhost:9999/ws/" />
. Lemanagement-native
de port par défaut est le port 9999. Si vous regardez dans votrestandalone.xml
en vertu de la<socket-binding-group/>
Vous verrez probablement quelque chose comme ce qui suit.Pour démarrer un test autonome avec la commande suivante.
OriginalL'auteur James R. Perkins