web-dev-qa-db-fra.com

Adresse déjà utilisée: JVM_Bind

J'utilise Glassfish 3.0.1, JVM 1.6.0_21 sous Windows XP Pro;

Je ne sais pas exactement ce qui a changé dans mon environnement, mais je reçois ce stacktrace dès que j'essaie de déployer une application d'entreprise (module ejb + module client d'application).

Il n'y a rien qui fonctionne sur le port 3820, sauf Glassfish ... J'ai vérifié avec netstat avec le serveur arrêté et le serveur démarré.

Quelle pourrait en être la cause? Un conflit de processus interne?

Des conseils sur la façon dont je peux déboguer plus loin?

WARNING: Can not find resource bundle for this logger.  class name that failed: org.glassfish.enterprise.iiop.impl.IIOPSSLSocketFactory
SEVERE: iiop.createsocket_exception
WARNING: Can not find resource bundle for this logger.  class name that failed: org.glassfish.enterprise.iiop.impl.IIOPSSLSocketFactory
SEVERE: Java.net.BindException: Address already in use: JVM_Bind
        at Java.net.PlainSocketImpl.socketBind(Native Method)
        at Java.net.PlainSocketImpl.bind(PlainSocketImpl.Java:365)
        at Java.net.ServerSocket.bind(ServerSocket.Java:319)
        at Java.net.ServerSocket.<init>(ServerSocket.Java:185)
        at javax.net.ssl.SSLServerSocket.<init>(SSLServerSocket.Java:106)
        at com.Sun.net.ssl.internal.ssl.SSLServerSocketImpl.<init>(SSLServerSocketImpl.Java:106)
        at com.Sun.net.ssl.internal.ssl.SSLServerSocketFactoryImpl.createServerSocket(SSLServerSocketFactoryImpl.Java:72)
        at org.glassfish.enterprise.iiop.impl.IIOPSSLSocketFactory.createSSLServerSocket(IIOPSSLSocketFactory.Java:402)
        at org.glassfish.enterprise.iiop.impl.IIOPSSLSocketFactory.createServerSocket(IIOPSSLSocketFactory.Java:281)
        at com.Sun.corba.ee.impl.transport.SocketOrChannelAcceptorImpl.initialize(SocketOrChannelAcceptorImpl.Java:91)
        at com.Sun.corba.ee.impl.transport.CorbaTransportManagerImpl.getAcceptors(CorbaTransportManagerImpl.Java:247)
        at com.Sun.corba.ee.impl.transport.CorbaTransportManagerImpl.addToIORTemplate(CorbaTransportManagerImpl.Java:264)
        at com.Sun.corba.ee.spi.oa.ObjectAdapterBase.initializeTemplate(ObjectAdapterBase.Java:131)
        at com.Sun.corba.ee.impl.oa.poa.POAImpl.initialize(POAImpl.Java:474)
        at com.Sun.corba.ee.impl.oa.poa.POAImpl.makeRootPOA(POAImpl.Java:323)
        at com.Sun.corba.ee.impl.oa.poa.POAFactory$1.evaluate(POAFactory.Java:279)
        at com.Sun.corba.ee.impl.orbutil.closure.Future.evaluate(Future.Java:57)
        at com.Sun.corba.ee.impl.resolver.LocalResolverImpl.resolve(LocalResolverImpl.Java:51)
        at com.Sun.corba.ee.impl.resolver.CompositeResolverImpl.resolve(CompositeResolverImpl.Java:55)
        at com.Sun.corba.ee.impl.orb.ORBImpl.resolve_initial_references(ORBImpl.Java:1289)
        at com.Sun.corba.ee.impl.naming.cosnaming.TransientNameService.initialize(TransientNameService.Java:122)
        at com.Sun.corba.ee.impl.naming.cosnaming.TransientNameService.<init>(TransientNameService.Java:90)
        at org.glassfish.enterprise.iiop.impl.PEORBConfigurator.configure(PEORBConfigurator.Java:154)
        at com.Sun.corba.ee.impl.orb.ORBConfiguratorImpl.runUserConfigurators(ORBConfiguratorImpl.Java:191)
        at com.Sun.corba.ee.impl.orb.ORBConfiguratorImpl.configure(ORBConfiguratorImpl.Java:176)
        at com.Sun.corba.ee.impl.orb.ORBImpl.postInit(ORBImpl.Java:579)
        at com.Sun.corba.ee.impl.orb.ORBImpl.set_parameters(ORBImpl.Java:680)
        at com.Sun.corba.ee.impl.orb.ORBImpl.setParameters(ORBImpl.Java:666)
        at com.Sun.corba.ee.spi.osgi.ORBFactory.initialize(ORBFactory.Java:91)
        at org.glassfish.enterprise.iiop.impl.GlassFishORBManager.initORB(GlassFishORBManager.Java:612)
        at org.glassfish.enterprise.iiop.impl.GlassFishORBManager.getORB(GlassFishORBManager.Java:289)
        at org.glassfish.enterprise.iiop.impl.GlassFishORBFactoryImpl.createORB(GlassFishORBFactoryImpl.Java:83)
        at org.glassfish.enterprise.iiop.api.GlassFishORBHelper.getORB(GlassFishORBHelper.Java:122)
        at org.glassfish.enterprise.iiop.api.GlassFishORBHelper.getProtocolManager(GlassFishORBHelper.Java:189)
        at com.Sun.ejb.containers.BaseContainer.initializeProtocolManager(BaseContainer.Java:810)
        at com.Sun.ejb.containers.BaseContainer.<init>(BaseContainer.Java:558)
        at com.Sun.ejb.containers.AbstractSingletonContainer.<init>(AbstractSingletonContainer.Java:136)
        at com.Sun.ejb.containers.CMCSingletonContainer.<init>(CMCSingletonContainer.Java:73)
        at com.Sun.ejb.containers.ContainerFactoryImpl.createContainer(ContainerFactoryImpl.Java:109)
        at org.glassfish.ejb.startup.EjbApplication.loadContainers(EjbApplication.Java:207)
        at org.glassfish.ejb.startup.EjbDeployer.load(EjbDeployer.Java:197)
        at org.glassfish.ejb.startup.EjbDeployer.load(EjbDeployer.Java:63)
        at org.glassfish.internal.data.ModuleInfo.load(ModuleInfo.Java:175)
        at org.glassfish.internal.data.ApplicationInfo.load(ApplicationInfo.Java:216)
        at com.Sun.enterprise.v3.server.ApplicationLifecycle.deploy(ApplicationLifecycle.Java:338)
        at com.Sun.enterprise.v3.server.ApplicationLifecycle.deploy(ApplicationLifecycle.Java:183)
        at org.glassfish.deployment.admin.DeployCommand.execute(DeployCommand.Java:272)
        at com.Sun.enterprise.v3.admin.CommandRunnerImpl$1.execute(CommandRunnerImpl.Java:305)
        at com.Sun.enterprise.v3.admin.CommandRunnerImpl.doCommand(CommandRunnerImpl.Java:320)
        at com.Sun.enterprise.v3.admin.CommandRunnerImpl.doCommand(CommandRunnerImpl.Java:1176)
        at com.Sun.enterprise.v3.admin.CommandRunnerImpl.access$900(CommandRunnerImpl.Java:83)
        at com.Sun.enterprise.v3.admin.CommandRunnerImpl$ExecutionContext.execute(CommandRunnerImpl.Java:1235)
        at com.Sun.enterprise.v3.admin.CommandRunnerImpl$ExecutionContext.execute(CommandRunnerImpl.Java:1224)
        at com.Sun.enterprise.v3.admin.AdminAdapter.doCommand(AdminAdapter.Java:365)
        at com.Sun.enterprise.v3.admin.AdminAdapter.service(AdminAdapter.Java:204)
        at com.Sun.grizzly.tcp.http11.GrizzlyAdapter.service(GrizzlyAdapter.Java:166)
        at com.Sun.enterprise.v3.server.HK2Dispatcher.dispath(HK2Dispatcher.Java:100)
        at com.Sun.enterprise.v3.services.impl.ContainerMapper.service(ContainerMapper.Java:245)
        at com.Sun.grizzly.http.ProcessorTask.invokeAdapter(ProcessorTask.Java:791)
        at com.Sun.grizzly.http.ProcessorTask.doProcess(ProcessorTask.Java:693)
        at com.Sun.grizzly.http.ProcessorTask.process(ProcessorTask.Java:954)
        at com.Sun.grizzly.http.DefaultProtocolFilter.execute(DefaultProtocolFilter.Java:170)
        at com.Sun.grizzly.DefaultProtocolChain.executeProtocolFilter(DefaultProtocolChain.Java:135)
        at com.Sun.grizzly.DefaultProtocolChain.execute(DefaultProtocolChain.Java:102)
        at com.Sun.grizzly.DefaultProtocolChain.execute(DefaultProtocolChain.Java:88)
        at com.Sun.grizzly.http.HttpProtocolChain.execute(HttpProtocolChain.Java:76)
        at com.Sun.grizzly.ProtocolChainContextTask.doCall(ProtocolChainContextTask.Java:53)
        at com.Sun.grizzly.SelectionKeyContextTask.call(SelectionKeyContextTask.Java:57)
        at com.Sun.grizzly.ContextTask.run(ContextTask.Java:69)
        at com.Sun.grizzly.util.AbstractThreadPool$Worker.doWork(AbstractThreadPool.Java:330)
        at com.Sun.grizzly.util.AbstractThreadPool$Worker.run(AbstractThreadPool.Java:309)
        at Java.lang.Thread.run(Thread.Java:619)

WARNING: Can not find resource bundle for this logger.  class name that failed: org.glassfish.enterprise.iiop.impl.IIOPSSLSocketFactory
WARNING: Can not find resource bundle for this logger.  class name that failed: org.glassfish.enterprise.iiop.impl.IIOPSSLSocketFactory
SEVERE: "IOP00410216: (COMM_FAILURE) Unable to create IIOP listener on the specified Host/port: all interfaces/3820"

EDIT Voici exactement ce que j'ai essayé:

C:\Documents and Settings\b.tanase>netstat -p tcp -ano | findstr :3820

asadmin> start-domain domain1
Waiting for DAS to start ...
Started domain: domain1
Domain location: D:\Java\glassfish-3.0.1\glassfish\domains\domain1
Log file: D:\Java\glassfish-3.0.1\glassfish\domains\domain1\logs\server.log
Admin port for the domain: 4848
Command start-domain executed successfully.

C:\Documents and Settings\b.tanase>netstat -p tcp -ano | findstr :3820

asadmin> deploy d:/Java/projects/netbeans-projects/CountingSystem/dist/CountingS
ystem.ear
com.Sun.enterprise.admin.cli.CommandException: remote failure: Exception while l
oading the app : Java.lang.RuntimeException: EJB Container initialization error
Exception while invoking class org.glassfish.ejb.startup.EjbDeployer load method
 : Java.lang.RuntimeException: EJB Container initialization error


Command deploy failed.

C:\Documents and Settings\b.tanase>netstat -p tcp -ano | findstr :3820
  TCP    0.0.0.0:3820           0.0.0.0:0              LISTENING       2428

Comme vous pouvez le constater, rien n'écoute sur le port 3820 jusqu'à ce que le déploiement échoue (avant l'erreur d'erreur d'initialisation du conteneur EJB, je reçois dans le journal du serveur la trace de pile envoyée au début de la publication).

25
Bogdan

Je remarque que vous utilisez Windows, ce qui est particulièrement mauvais pour l’utilisation de numéros de port bas pour les sockets sortants. Voir ici pour savoir comment réserver le numéro de port sur lequel vous voulez compter pour utiliser Glassfish.

10
MrPotes

Votre port local 443/8181/3820 est utilisé.

Si vous êtes sur linux/unix:

  • utilisez netstat -an et lsof -n pour vérifier qui utilise ce port

Si vous êtes sur windows

  • utilisez netstat -an et tcpview pour vérifier.
46
J-16 SDiZ

sous Windows, ouvrez une fenêtre cmd.exe avec des autorisations d'administrateur et utilisez netstat -a -b -oVous obtiendrez l'id du processus contenant votre port et pourrez le tuer à l'aide du gestionnaire de tâches.

5
epeleg

comme le dit l'exception, il y a déjà un autre serveur en cours d'exécution sur le même port. vous pouvez soit tuer ce service ou changer Glassfish pour fonctionner sur un autre poète

1
Aravind R. Yarram

En passant, sous Windows, ProcessExplorer est fantastique pour observer les connexions TCP/IP existantes pour chaque processus.

0
Contango

Ma réponse correspond à 100% à ce problème, mais je souhaite documenter ma solution et le piège derrière cette dernière, car l'exception est la même.

Mon port était toujours utilisé pour tester une jetée dans un test Junit. Le problème était le code pro de Google sur Eclipse, qui, je suppose, testait en arrière-plan et démarrait donc jetty devant moi tout le temps. éditeur. Cela semble aider.

0
Dirk Schumacher

L'erreur enregistrée indique que le problème est lié au port 3820, mais je suggérerais de rechercher tous les ports que votre application tente d'écouter. J'ai rencontré ce problème et le problème était un port que j'avais oublié - pas le "principal" que je cherchais.

0
Tom Clift

Vous pouvez essayer d'utiliser TCPView utility. 

Essayez de trouver dans la colonne localport _ un processus ayant fonctionné sur le port "occupé". Faites un clic droit et terminez le processus. Puis essayez de démarrer le Tomcat

Cela fonctionne vraiment pour moi.

0
prathip

Ce problème survient principalement parce qu'il est possible que le code soit en cours d'exécution à partir d'une série de tests antérieurs que vous avez probablement effectués. Recherchez et fermez toute autre instance ou, le cas échéant, essayez de redémarrer le serveur.

0
Lijo George