Netbeans IDE 7.4からApache Tomcat 6を起動する際に問題があります(7.3バージョンでは同じトラブルが発生しました。この問題は、8.0などの他のバージョンにも存在します)。
私がしたこと:
Tomcatユーザー:NetBeansに、Tomcatというパスワードを使用してTomcatと呼ばれる新しいユーザーを作成させます。サーバーの追加後に{Tomcat}\conf\Tomcat-users.xmlファイルを開くと、ユーザーに関する情報が表示されます。
<user password = "Tomcat" roles = "manager、admin" username = "Tomcat" />
「開始」をクリックすると、「Tomcatの開始に失敗しました」と表示されます。
私の疑い:
少なくともNetBeansバージョン7.4〜8.0.2に影響します。最初にバージョン8.0から報告され、NetBeans 8.1で修正されました。 Tomcatバージョン(バージョン7.0.56〜8.0.28で確認済み)で問題が発生していました。
詳細は Netbeans bug#248182 として説明されています。
この問題は、次のエラー出力に言及する投稿にも関連しています。
「127.0.0.1 *」は、内部コマンドまたは外部コマンド、操作可能なプログラムまたはバッチファイルとして認識されません。
ZipファイルからインストールされたTomcatの場合、Tomcat bin
ディレクトリ内のcatalina.bat
ファイルを変更して修正しました。
catalina.bat
ファイルで以下の設定を見つけます。
:noJuliConfig
set "Java_OPTS=%Java_OPTS% %LOGGING_CONFIG%"
:noJuliManager
set "Java_OPTS=%Java_OPTS% %LOGGING_MANAGER%"
そして、以下のように二重引用符を削除して変更します:
:noJuliConfig
set Java_OPTS=%Java_OPTS% %LOGGING_CONFIG%
:noJuliManager
set Java_OPTS=%Java_OPTS% %LOGGING_MANAGER%
変更を保存し、NetBeans内からTomcatを起動します。
これが影響します:
これは、NetbeansがTomcatが正常に起動したにもかかわらず、起動したことを「認識」しないためです。
NetBeansでのバグ#262749 を提出しました。
server.xml
ファイルで、HTTP/1.1のConnector
要素に、次の属性を追加します:server="Apache-Coyote/1.1"
。
例:
<Connector
connectionTimeout="20000"
port="8080"
protocol="HTTP/1.1"
redirectPort="8443"
server="Apache-Coyote/1.1"
/>
その理由は、8.5.3以前では、サーバーヘッダーをApache-Coyote/1.1
として設定することがデフォルトでしたが、8.5.3以降、このデフォルトは空白に変更されたためです。明らかに、Netbeansはこのヘッダーをチェックします。
将来的には、この問題に対処するnetbeansの修正が期待されるかもしれません。
ドキュメントの変更までさかのぼることができました。
「http応答のサーバーヘッダーをオーバーライドします。設定すると、この属性の値はWebアプリケーションによって設定されたサーバーヘッダーをオーバーライドします。設定しない場合、アプリケーションによって指定された値が使用されます。サーバーヘッダーが設定されていません。」
「http応答のサーバーヘッダーをオーバーライドします。設定すると、この属性の値は、TomcatのデフォルトおよびWebアプリケーションによって設定されたサーバーヘッダーをオーバーライドします。設定しない場合、アプリケーションによって指定された値が使用されます。値を指定すると、Apache-Coyote/1.1が使用されます。偏執狂的でない限り、この機能は必要ありません。」
これは、バージョン8.5.3以降、サーバー属性を明示的に追加する必要性を説明しています。
また、プロキシ設定に問題がある可能性が高いです。
問題を開始してTomactを克服できなかった人は、NetBeansで[ツール]-> [オプション]-> [全般]タブでプロキシなしを選択してください。
助けてくれました。
NetBeansがTomcatと対話できるようにするには、Tomcat-users.xml
ファイルで適切に構成するために、netbeansのセットアップとしてユーザーが必要です。 NetBeansはこれを自動的に行うことができます。
つまり、Tomcat-users.xml
内(${CATALINA_HOME}/conf
または${CATALINA_BASE}/conf
にあります)、
script-manager
ロールが追加されていることを確認してください例、変更
<user password="Tomcat" roles="manager,admin" username="Tomcat"/>
に
<user password="Tomcat" roles="manager-script,manager,admin" username="Tomcat"/>
manager-script
ロールが宣言されていることを確認してください追加
<role rolename="manager-script"/>
実際、netbeansオンラインヘルプには次のように誤って記載されています。
ユーザー名-IDEがサーバーのマネージャーアプリケーションへのログインに使用するユーザー名を指定します。 ユーザーは管理者ロールに関連付けられている必要があります。 [開始/停止]メニューアクションやIDEからWebコンポーネントを実行するなどして、IDEがTomcat Webサーバーを初めて起動すると、IDEは
Tomcat-base-path/conf/Tomcat-users.xml
ファイルに対してランダムに生成されたパスワード。 ([サービス]ウィンドウでTomcat Webサーバーインスタンスノードを右クリックし、[プロパティ]を選択します。[プロパティ]ダイアログボックスで、ベースディレクトリプロパティはbase-dir
ディレクトリを指します。)Tomcat-users.xml
の管理ユーザーエントリファイルは次のようになります:<user username="idea" password="woiehh" roles="manager"/>
ロールはmanager
ではなくmanager-script
である必要があります。
より完全なTomcat-users.xml
ファイルの場合:
<?xml version='1.0' encoding='utf-8'?>
<Tomcat-users>
<role rolename="manager-script"/>
<role rolename="manager-gui"/>
<user password="Tomcat" roles="manager-script" username="Tomcat"/>
<user password="pass" roles="manager-gui" username="me"/>
</Tomcat-users>
なぜ展開エラーが発生するのですか? に別の素敵な投稿があります
私は同じ問題を抱えていましたが、上記の答えはどれもうまくいきませんでした。私にとっての解決策は、Tomcatにバンドルされている Manager web application を復元することでした。