2010-09-15 3 views
24

Ich verwende Glassfish 3.0.1, JVM 1.6.0_21 unter Windows XP Pro;Bereits verwendete Adresse: JVM_Bind

Ich weiß nicht genau, was sich in meiner Umgebung geändert hat, aber ich bekomme dieses Stacktrace, sobald ich versuche, eine Unternehmensanwendung (EJB-Modul + App-Clientmodul) bereitzustellen.

Es gibt nichts läuft auf Port 3820, außer Glassfish ... Ich überprüft mit Netstat mit dem Server gestoppt und der Server gestartet.

Was könnte die Ursache dafür sein? Einige interne Prozesskonflikte?

Irgendwelche Tipps, wie ich das weiter debuggen kann?

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 Hier ist es genau das, was ich versucht:

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 

Wie Sie sehen, nichts hören auf Port 3820, bis die Bereitstellung failes gibt es (vor EJB Container Initialisierungsfehlers ich im Server erhalten loggen Sie den StackTrace ein, der am Anfang des Pfostens bekanntgegeben wird)

+0

Haben Sie versucht, einen anderen Port zu verwenden? – Jayan

+0

changin ports funktioniert. Ich musste für SSL & SSL_MUTUALAUTH wechseln. Die Frage bleibt, warum passiert das? – Bogdan

+0

Haben Sie auch Port 3700 überprüft? –

Antwort

9

Ich bemerke, dass Sie Fenster verwenden, die besonders schlecht über die Verwendung niedriger Portnummern für ausgehende Sockets ist. Unter here erfahren Sie, wie Sie die Portnummer reservieren, die Sie für Glassfish verwenden möchten.

+0

Danke für den Link; könnte nützlich sein. Denkst du, du könntest auf "Windows" eingehen ... ist besonders schlecht, wenn du niedrige Portnummern verwendest ... "oder gib mir einen Link für weitere Lektüre? – Bogdan

+0

@Bogdan Es gibt eine weitere Stapelüberlauffrage, die ein bisschen mehr Details gibt, http://stackoverflow.com/questions/2630009/how-can-i-work-around-winxp-using-ports-1025-5000-as-ephemeral – MrPotes

+0

danke für den Link. Dies scheint der wahrscheinlichste Grund für das zu sein, was passiert ist. Ich werde es mir merken, wenn ich wieder darauf stoße. – Bogdan

44

Ihr lokaler Hafen 443/8181/3820 wird benutzt.

Wenn Sie auf Linux/Unix:

  • Verwendung netstat -an und lsof -n zu überprüfen, die diesen Port

wird mit der Wenn Sie auf Fenster sind

  • Verwendung netstat -an und tcpview überprüfen.
+15

+1 für die Erwähnung von tcpview –

+0

Laut netstat & tcpview läuft nichts auf Port 3820, bevor Sie Glassfish ausführen und versuchen, die Anwendung zu implementieren. Siehe mein Update – Bogdan

+3

tcpview hat mein Leben gerettet. +1. Es hilft zu wissen, dass tcpview den Dienst, der den benötigten Port benötigt, beenden kann. – crstamps2

1

als die Ausnahme besagt, dass bereits ein anderer Server auf dem gleichen Port ausgeführt wird. Sie können entweder diesen Service töten oder Glassfish ändern, um auf einem anderen Poeten zu laufen

+0

Wie tötet man es? – CodyBugstein

0

Der protokollierte Fehler besagt, dass Port 3820 das Problem ist, aber ich würde vorschlagen, alle die Ports, die Ihre App versucht zu überwachen versucht. Ich stieß auf dieses Problem und das Problem war ein Port, den ich vergessen hatte - nicht das "Haupt", nach dem ich suchte.

0

Nebenbei, unter ProcessExplorer ist fantastisch für die Beobachtung der vorhandenen TCP/IP-Verbindungen für jeden Prozess.

0

Sie können versuchen, TCPView Dienstprogramm zu verwenden.

Versuche in den LokalerAnschluss Spalt zu finden, ist es ein Verfahren auf „besetzt“ Hafen gearbeitet. Klicken Sie mit der rechten Maustaste und beenden Sie den Vorgang. Versuchen Sie dann, den Tomcat zu starten.

Es funktioniert wirklich für mich.

5

Öffnen Sie unter Windows ein cmd.exe-Fenster mit Administratorrechten und verwenden Sie netstat -a -b -o . Sie erhalten die ID des Prozesses, der Ihren Port enthält, und können ihn mithilfe des Task-Managers löschen.

0

Meine Antwort passt 100% zu diesem Problem, aber ich möchte meine Lösung und die Falle dahinter dokumentieren, da die Ausnahme die gleiche ist.

Mein Port wurde immer benutzt, um einen Jetty in einem Junit-Testfall zu testen. Problem war Googles Code-Pro auf Eclipse, der, wie ich glaube, im Hintergrund getestet wurde und damit immer vor mir steckte. Problemumgehung: Lassen Sie Eclipse * .java-Dateien immer mit dem Java-Editor statt mit dem Junit-Editor von Google öffnen. Das scheint zu helfen.

0

Dieses Problem tritt meistens auf, weil eine andere Ausführung des Codes ausgeführt werden kann, von einigen früheren Tests, die Sie wahrscheinlich durchgeführt haben. Finden Sie alle anderen Instanzen heraus und schließen Sie sie. Wenn es in Ordnung ist, versuchen Sie den Server neu zu starten.

+0

Wie schließen Sie eine andere Instanz? – CodyBugstein