2011-08-19 5 views
8

Tomcat 7のwarファイルにデプロイしようとしています。次のエラーが表示されます。Antはなぜデプロイ時に403を返すのですか?

deploy: 
    [echo] Deploying on Tomcat. 

BUILD FAILED 
    C:\Users\coder\workspace\projectName\build.xml:84: java.io.IOException: Server returned  
    HTTP response code: 403 for URL: http://localhost:8090/manager/deploy?path=%2FprojectName 

ここに私のビルドファイルは、あなたがアクセス拒否エラーを取得している

<project name="ProjectName" default="main" 
       basedir="."> 

       <!-- Tell ant to use my environment variables --> 
       <property environment="env"/> 

       <property file="./build.properties"/> 
       <property name="username" value="someUsername"/> 
       <property name="password" value="somePassword"/> 

       <taskdef name="deploy" classname="org.apache.catalina.ant.DeployTask"/> 

       <property name="tomcat.home" 
       value="${env.CATALINA_HOME}"/> 
       <property name="hibernate.home" 
       value="${env.CATALINA_HOME}"/> 
       <property name="servlet.jar" 
       value="${tomcat.home}/common/lib/servlet-api.jar"/> 
       <property name="jsp.jar" 
       value="${tomcat.home}/common/lib/jsp-api.jar"/> 
       <property name="hibernate.jar" value="C:/hibernate-distribution-3.6.4.Final/hibernate3.jar"/> 

       <property name="deploy.dir" 
       value="${tomcat.home}/webapps"/> 
       <property name="build.compiler" value="modern"/> 
       <property name="build.dir" value="build" /> 
       <property name="src.dir" value="src"/> 
       <property name="war.file" value="projectName"/> 
       <property name="war.file.name" value="${war.file}.war"/> 

       <path id="project.class.path"> 
       <fileset dir="./WEB-INF/lib/"> 
       <include name="**/*.jar"/> 
       </fileset> 
       <pathelement path="${src.dir}"/> 
       <pathelement path="${servlet.jar}"/> 
       <pathelement path="${jsp.jar}"/> 
       <pathelement path="${hibernate.jar}"/> 
       </path> 

       <target name="clean"> 
       <delete dir="${build.dir}" includeEmptyDirs="true" /> 
       </target> 

       <target name="prep"> 
       <mkdir dir="${build.dir}"/> 
       </target> 

       <target name="compile"> 
       <javac srcdir="${src.dir}" 
       destdir="${build.dir}" 
       debug="on" 
       deprecation="on"> 
       <include name="**/*.java"/> 
       <classpath refid="project.class.path"/> 
       </javac> 
       </target> 

       <target name="cleanWebApp"> 
       <delete file="${deploy.dir}/${war.file.name}" /> 
       <delete dir="${deploy.dir}/${war.file}" 
       includeEmptyDirs="true" /> 
       </target> 

       <target name="war"> 
       <war warfile="${war.file.name}" 
       webxml="./WEB-INF/web.xml"> 
       <fileset dir="./" includes="**/*.*" excludes="*.war, 
       **/*.nbattrs, web.xml, **/WEB-INF/**/*.*, 
       **/project-files/**/*.*"/> 
       <webinf dir="./WEB-INF" includes="**/*" 
       excludes="web.xml, **/*.jar, **/*.class"/> 
       <lib dir="./WEB-INF/lib"/> 
       <classes dir="${build.dir}"/> 
       <classes dir="${src.dir}"> 
       <include name="**/*.properties"/> 
       </classes> 
       </war> 
       </target> 

       <target name="deploy"> 
        <echo message="Deploying on Tomcat." /> 
        <deploy url="http://localhost:8090/manager" username="someUsername" 
        password="somePassword" path="/projectName" war="./${war.file.name}" /> 
       </target> 

       <target name="main" depends="clean, prep, cleanWebApp, 
       compile, war, deploy"/> 

       </project> 
+0

403は、リソースが禁止されていることを示す、HTTPレスポンスコードです。この場合、あなたのTomcatマネージャー。あなたのユーザー名、パスワード、パスなどを確認してください。 – arunkumar

答えて

14

manager.usernameとmanager.passwordに記載されているアカウントは、「manager-script」(またはそれが動作しない場合は「admin-script」)の役割にある必要があります。

"manager-gui"、 "admin-gui"、 "manager-script"(テキスト接続用)、 "admin-script"(テキスト接続用) )Tomcatの7

に私はエラーページ下からマネージャに関連する4つの役割が見つかりました:

403のアクセスをあなたがこのページを閲覧する権限がありません

を拒否されました。

アクセスを許可するようにマネージャアプリケーションを設定済みで、ブラウザの戻るボタンを使用して保存されたブックマークなどを使用した場合は、以前に行われたクロスサイトリクエストフォージェリ(CSRF) ManagerアプリケーションのHTMLインタフェースに対して有効になります。メインのManagerページに戻って、この保護をリセットする必要があります。このページに戻ると、ManagerアプリケーションのHTMLインターフェイスを通常どおり使用することができます。このアクセス拒否メッセージが引き続き表示される場合は、このアプリケーションにアクセスするために必要な権限があることを確認してください。

設定ファイルを変更していない場合は、インストール中のconf/tomcat-users.xmlファイルを調べてください。このファイルには、このWebアプリケーションを使用できるようにするための資格情報が含まれている必要があります。

たとえば、パスワードがs3cretのユーザーtomcatにmanager-guiロールを追加するには、上記の設定ファイルに以下を追加します。

以降以降では、マネージャアプリケーションの使用に必要なロールが、単一のマネージャロールから次の4つのロールに変更されています。アクセスしたい機能に必要な役割を割り当てる必要があります。

マネージャ - GUI - HTML GUIおよびステータスページ

マネージャー・スクリプトへのアクセスを可能にする - テキストインターフェイスとステータスページ

マネージャー-JMXへのアクセスを可能にする - JMXプロキシへのアクセスを可能にしますそして、ステータスページ

マネージャー・ステータスは - ステータスページのみ

HTMLインターフェイスは、CSRFに対して保護されていますが、テキストやJMXインタフェースではないにアクセスすることができます。

manager-guiロールを持つユーザには、manager-scriptロールまたはmanager-jmxロールのいずれも付与しないでください。 テキストまたはjmxインターフェイスにブラウザ経由でアクセスする場合(たとえば、これらのインターフェイスは人間以外のツール用であるため、テストする場合など)、ブラウザを終了してセッションを終了する必要があります。 詳細については、Manager App HOW-TOを参照してください。

3

です。

これは、ユーザー名またはパスワードが間違っているか、役割を正しく追加していないために可能です。あなたが展開する Managerアプリケーションを使用したいと 実行されているTomcatのインストール中にアンデプロイするアプリケーション場合:

のApache Tomcat 6.0レルムの設定HOW-TOが書いた - ここ

は、Tomcatのドキュメントから宣伝文です選択したレルムの実装で少なくとも1つのユーザ名に の「マネージャ」ロールを追加する必要があります。マネージャWebアプリケーション自体が、 アプリケーション内の任意の要求URIにアクセスするためにロール "manager"を必要とするセキュリティ制約 を使用するため、これは です。

希望するものがあります。

0

私はTomcat 6と同じ問題を抱えていましたが、上記の解決方法は私には役に立ちません。 それで、tomcat-usersのユーザにロール( 'manager')を追加することで修正しました。

<user username="tomcat" password="tomcat" roles="tomcat,manager-gui,manager"/> 
0

私は最近このエラーに遭遇しましたが、これらのアプローチは私を助けませんでした。

ソリューションはへのtomcat-users.xmlの中に明示的に書き込みの役割だった:

<role rolename="manager-gui"/> 
<role rolename="manager-script"/> 
<role rolename="admin-gui"/> 
<role rolename="admin-script"/> 
<user name="admin" password="admin" roles="admin-gui,admin-script,manager-gui,manager-script"/> 

役割admin-guiadmin-scriptスクリプトを実行する必要はありません、私は管理者Tomcatにこのユーザーを使用するためにそれらを必要としますウェブGUIであなたが使用する必要があります

6

ベースURLは次のようになります。http://localhost:8090/manager/text

+3

+1これは私にとってそれを修正したものです。 –

+1

それは受け入れられる答えでなければなりません。 '/ text'をマネージャパスに追加するだけで働いた – devnull69

+1

これは私にとってもうまくいきました。これを共有してくれてありがとう。 –

関連する問題