netbeans IDE无法识别Tomcat启动

az31mfrm  于 2023-03-18  发布在  其他
关注(0)|答案(4)|浏览(159)

我正在使用Netbeans 11部署一个WAR文件,当使用RUN时,IDE会启动Tomcat,并显示启动消息:

INFO - Starting ProtocolHandler [http-nio-8080]
INFO - Starting ProtocolHandler [ajp-nio-8009]
INFO - Server startup in 815 ms

但是,IDE的“运行”选项卡显示启动失败,超时后:

Deploying on TomEE
    profile mode: false
    debug mode: false
    force redeploy: true
Starting Tomcat process...
Waiting for Tomcat...
Starting of Tomcat failed.

由于Tomcat确实在端口8080上运行和侦听,IDE无法正确检测Tomcat。我尝试过these suggestions,尤其是带有IDE代理和连接器的these suggestions,但都不起作用。
根据备注:
1)我正在运行TomEE,尽管我认为从Netbeans的Angular (甚至从TomEE本身)来看,我的问题没有什么不同。老实说,我认为这是Netbeans - Tomcat通信问题,TomEE只是添加了一些库和其他东西,会对以后产生影响。
2)我使用的是自定义的server.xml,但现在我使用的是原来的server.xml

<?xml version='1.0' encoding='utf-8'?>
<!--
  Licensed to the Apache Software Foundation (ASF) under one or more
  contributor license agreements.  See the NOTICE file distributed with
  this work for additional information regarding copyright ownership.
  The ASF licenses this file to You under the Apache License, Version 2.0
  (the "License"); you may not use this file except in compliance with
  the License.  You may obtain a copy of the License at

      http://www.apache.org/licenses/LICENSE-2.0

  Unless required by applicable law or agreed to in writing, software
  distributed under the License is distributed on an "AS IS" BASIS,
  WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
  See the License for the specific language governing permissions and
  limitations under the License.
-->
<!-- Note:  A "Server" is not itself a "Container", so you may not
     define subcomponents such as "Valves" at this level.
     Documentation at /docs/config/server.html
 -->
<Server port="8005" shutdown="SHUTDOWN">
  <!-- TomEE plugin for Tomcat -->
  <Listener className="org.apache.tomee.catalina.ServerListener" />
  <Listener className="org.apache.catalina.startup.VersionLoggerListener" />
  <!-- Security listener. Documentation at /docs/config/listeners.html
  <Listener className="org.apache.catalina.security.SecurityListener" />
  -->
  <!--APR library loader. Documentation at /docs/apr.html -->
  <Listener className="org.apache.catalina.core.AprLifecycleListener" SSLEngine="on" />
  <!-- Prevent memory leaks due to use of particular java/javax APIs-->
  <Listener className="org.apache.catalina.core.JreMemoryLeakPreventionListener" />
  <Listener className="org.apache.catalina.mbeans.GlobalResourcesLifecycleListener" />
  <Listener className="org.apache.catalina.core.ThreadLocalLeakPreventionListener" />

  <!-- Global JNDI resources
       Documentation at /docs/jndi-resources-howto.html
  -->
  <GlobalNamingResources>
    <!-- Editable user database that can also be used by
         UserDatabaseRealm to authenticate users
    -->
    <Resource name="UserDatabase" auth="Container"
              type="org.apache.catalina.UserDatabase"
              description="User database that can be updated and saved"
              factory="org.apache.catalina.users.MemoryUserDatabaseFactory"
              pathname="conf/tomcat-users.xml" />
  </GlobalNamingResources>

  <!-- A "Service" is a collection of one or more "Connectors" that share
       a single "Container" Note:  A "Service" is not itself a "Container",
       so you may not define subcomponents such as "Valves" at this level.
       Documentation at /docs/config/service.html
   -->
  <Service name="Catalina">

    <!--The connectors can use a shared executor, you can define one or more named thread pools-->
    <!--
    <Executor name="tomcatThreadPool" namePrefix="catalina-exec-"
        maxThreads="150" minSpareThreads="4"/>
    -->

    <!-- A "Connector" represents an endpoint by which requests are received
         and responses are returned. Documentation at :
         Java HTTP Connector: /docs/config/http.html
         Java AJP  Connector: /docs/config/ajp.html
         APR (HTTP/AJP) Connector: /docs/apr.html
         Define a non-SSL/TLS HTTP/1.1 Connector on port 8080
    -->
    <Connector port="8080" protocol="HTTP/1.1"
               connectionTimeout="20000"
               redirectPort="8443" xpoweredBy="false" server="Apache TomEE" />
    <!-- A "Connector" using the shared thread pool-->
    <!--
    <Connector executor="tomcatThreadPool"
               port="8080" protocol="HTTP/1.1"
               connectionTimeout="20000"
               redirectPort="8443" />
    -->
    <!-- Define a SSL/TLS HTTP/1.1 Connector on port 8443
         This connector uses the NIO implementation with the JSSE engine. When
         using the JSSE engine, the JSSE configuration attributes must be used.
    -->
    <!--
    <Connector port="8443" protocol="org.apache.coyote.http11.Http11NioProtocol"
               maxThreads="150" SSLEnabled="true">
        <SSLHostConfig>
            <Certificate certificateKeystoreFile="conf/localhost-rsa.jks"
                         type="RSA" xpoweredBy="false" server="Apache TomEE" />
        </SSLHostConfig>
    </Connector>
    -->
    <!-- Define a SSL/TLS HTTP/1.1 Connector on port 8443 with HTTP/2
         This connector uses the APR/native implementation. When using the
         APR/native implementation or the OpenSSL engine with NIO or NIO2 then
         the OpenSSL configuration attributes must be used.
    -->
    <!--
    <Connector port="8443" protocol="org.apache.coyote.http11.Http11AprProtocol"
               maxThreads="150" SSLEnabled="true" >
        <UpgradeProtocol className="org.apache.coyote.http2.Http2Protocol" xpoweredBy="false" server="Apache TomEE" />
        <SSLHostConfig>
            <Certificate certificateKeyFile="conf/localhost-rsa-key.pem"
                         certificateFile="conf/localhost-rsa-cert.pem"
                         certificateChainFile="conf/localhost-rsa-chain.pem"
                         type="RSA" />
        </SSLHostConfig>
    </Connector>
    -->

    <!-- Define an AJP 1.3 Connector on port 8009 -->
    <Connector port="8009" protocol="AJP/1.3" redirectPort="8443" />

    <!-- An Engine represents the entry point (within Catalina) that processes
         every request.  The Engine implementation for Tomcat stand alone
         analyzes the HTTP headers included with the request, and passes them
         on to the appropriate Host (virtual host).
         Documentation at /docs/config/engine.html -->

    <!-- You should set jvmRoute to support load-balancing via AJP ie :
    <Engine name="Catalina" defaultHost="localhost" jvmRoute="jvm1">
    -->
    <Engine name="Catalina" defaultHost="localhost">

      <!--For clustering, please take a look at documentation at:
          /docs/cluster-howto.html  (simple how to)
          /docs/config/cluster.html (reference documentation) -->
      <!--
      <Cluster className="org.apache.catalina.ha.tcp.SimpleTcpCluster"/>
      -->

      <!-- Use the LockOutRealm to prevent attempts to guess user passwords
           via a brute-force attack -->
      <Realm className="org.apache.catalina.realm.LockOutRealm">
        <!-- This Realm uses the UserDatabase configured in the global JNDI
             resources under the key "UserDatabase".  Any edits
             that are performed against this UserDatabase are immediately
             available for use by the Realm.  -->
        <Realm className="org.apache.catalina.realm.UserDatabaseRealm"
               resourceName="UserDatabase"/>
      </Realm>

      <Host name="localhost"  appBase="webapps"
            unpackWARs="true" autoDeploy="true">

        <!-- SingleSignOn valve, share authentication between web applications
             Documentation at: /docs/config/valve.html -->
        <!--
        <Valve className="org.apache.catalina.authenticator.SingleSignOn" />
        -->

        <!-- Access log processes all example.
             Documentation at: /docs/config/valve.html
             Note: The pattern used is equivalent to using pattern="common" -->
        <Valve className="org.apache.catalina.valves.AccessLogValve" directory="logs"
               prefix="localhost_access_log" suffix=".txt"
               pattern="%h %l %u %t &quot;%r&quot; %s %b" />

      </Host>
    </Engine>
  </Service>
</Server>

3)Tomcat正确启动,我看到端口8080在我的计算机中打开。实际上我必须手动杀死进程才能再次尝试从Netbeans重新运行,否则它会抱怨端口已经打开。同时,Netbeans只是等待和等待...在“等待Tomcat”之后的某个时候,它只是说它失败了,就像它无法识别Tomcat是否打开一样。Tomcat保持运行,就像没有人与它通信一样。因此,任何地方都没有其他奇怪的日志。
4)从Netbans我只能“启动”,永远不能停止,因为它没有检测到Tomcat正在运行。所以“停止”命令被禁用,正如你所说。Tomcat正在运行,但IDE从未检测到它正在运行。
5)这种情况经常发生,我无法从IDE运行任何项目。
Netbeans日志显示:

INFO [org.netbeans.modules.tomcat5.deploy.TomcatManager]: TomEE version TOMEE_15, type TOMEE_PLUS
INFO [null]: Last record repeated again.
INFO [org.netbeans.modules.j2ee.deployment.devmodules.api.Deployment]
org.netbeans.modules.j2ee.deployment.impl.ServerException: Starting of Tomcat failed.
    at org.netbeans.modules.j2ee.deployment.impl.ServerInstance._start(ServerInstance.java:1457)
    at org.netbeans.modules.j2ee.deployment.impl.ServerInstance.startTarget(ServerInstance.java:1400)
    at org.netbeans.modules.j2ee.deployment.impl.ServerInstance.startTarget(ServerInstance.java:1204)
    at org.netbeans.modules.j2ee.deployment.impl.ServerInstance.start(ServerInstance.java:1082)
    at org.netbeans.modules.j2ee.deployment.impl.TargetServer.startTargets(TargetServer.java:547)
[catch] at org.netbeans.modules.j2ee.deployment.devmodules.api.Deployment.deploy(Deployment.java:190)
    at org.netbeans.modules.maven.j2ee.execution.DeploymentHelper.perform(DeploymentHelper.java:185)
    at org.netbeans.modules.maven.j2ee.execution.ExecutionChecker.executionResult(ExecutionChecker.java:70)
    at org.netbeans.modules.maven.execute.MavenCommandLineExecutor.run(MavenCommandLineExecutor.java:303)
    at org.netbeans.core.execution.RunClassThread.run(RunClassThread.java:128)
8fq7wneg

8fq7wneg1#

我有同样的问题,它得到了解决,使用旧版本的tomcat。
我在使用Netbeans 11.1和11.3时遇到了这个问题。
我在使用Tomcat 8.5.54和9.0.34时收到此错误。Tomcat使用版本8.5.49时工作正常

fjaof16o

fjaof16o2#

我认为问题出在一台有两个网络接口的计算机上,不知何故,Netbeans(很有可能,除非Tomcat有什么事)错误地管理了情况,它无法检测到Tomcat启动了。
我真的不知道如何解决这个问题,但我断开了第二个接口,它似乎工作。这是非常烦人和不方便,但它是一个有效的变通方案。
我发现这个问题是因为sudo非常慢,而且我发现有一个问题,即sudo在具有两个或更多网络接口的计算机上会变得非常慢...无关紧要,但可以解决这个问题:hereecho "Set probe_interfaces false" | sudo tee -a /etc/sudo.conf

sqxo8psd

sqxo8psd3#

我谷歌和stackoverflow,没有解决,直到我看到这里的文章:https://www.mail-archive.com/commits@netbeans.apache.org/msg24509.html
我下载了NetBeans11.1的源代码,并使用命令

ant -Dcluster.config=full

大概要17分钟。之后,我会用

ant tryme

然后我在工具-〉服务器中设置了tomcat,打开了我的项目,然后我试着运行它,令人惊讶的是,它现在工作得很好。
显然,这是NetBeans的一个bug。而且在NetBeans方面并不难解决。

piwo6bdm

piwo6bdm4#

在Tomcat server.xml中,对于,尝试添加:

服务器=“Apache-狼/1.1”

举个完整的例子,这就是对我们有效的方法:

<Connector connectionTimeout="20000" port="8080" server="Apache-Coyote/1.1" protocol="HTTP/1.1" redirectPort="8443"/>

相关问题