2011-08-19 12 views
8

Sto tentando di distribuire in un file di guerra in Tomcat 7. Mi sta dando il seguente errore.Perché Ant restituisce un 403 in fase di distribuzione?

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 

Ecco il mio file di generazione

<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 è il codice di risposta HTTP, che indica che la risorsa è proibito. In questo caso il tuo gestore di tomcat. Controlla il tuo nome utente, password, percorso, ecc. – arunkumar

risposta

14

L'account menzionato in manager.username e manager.password, deve essere nel ruolo di "manager-script" (o "admin-script" anche se non funziona).

Sembra che i ruoli "manager" e "admin" vengano modificati in "manager-gui", "admin-gui", "manager-script" (per la connessione testuale), "admin-script" (per la connessione testuale) in Tomcat 7.

ho trovato 4 ruoli rilevanti per Manager dal basso pagina di errore:

403 Accesso negato

, non sei autorizzato a visualizzare questa pagina.

Se è già stata configurata l'applicazione Manager per consentire l'accesso e si è utilizzato il pulsante Indietro del browser, utilizzato un bookmark salvato o simile, è possibile che sia stata attivata la protezione CSRF (cross-site request forgery) che è stata abilitato per l'interfaccia HTML dell'applicazione Manager. Sarà necessario ripristinare questa protezione tornando alla pagina principale di Manager. Una volta che si torna a questa pagina, sarà possibile continuare a utilizzare normalmente l'interfaccia HTML dell'application Manager. Se continui a vedere questo messaggio di accesso negato, controlla di disporre delle autorizzazioni necessarie per accedere a questa applicazione.

Se non sono stati modificati file di configurazione, esaminare il file conf/tomcat-users.xml nell'installazione. Quel file deve contenere le credenziali per permetterti di usare questa webapp.

Ad esempio, per aggiungere il ruolo di manager-gui a un utente denominato tomcat con una password di s3cret, aggiungere quanto segue al file di configurazione elencato sopra.

Si noti che per Tomcat 7 in poi, i ruoli necessari per utilizzare l'applicazione di gestione sono stati modificati dal ruolo di gestore singolo ai seguenti quattro ruoli. Dovrai assegnare i ruoli richiesti per la funzionalità a cui desideri accedere.

manager-gui - consente l'accesso alla GUI HTML e le pagine di stato

direttore-script - consente l'accesso all'interfaccia del testo e lo stato pagine

manager-JMX - consente l'accesso al proxy JMX e le pagine di stato

manager-stato - permette l'accesso alle pagine di stato solo

l'interfaccia HTML è protetto contro CSRF ma il testo e le interfacce JMX non lo sono. Per mantenere la protezione CSRF:

Gli utenti con ruolo manager-gui non devono ottenere i ruoli manager-script o manager-jmx. Se le interfacce di testo o jmx sono accessibili tramite un browser (ad esempio per il test poiché tali interfacce sono destinate agli strumenti non umani), il browser deve essere chiuso in seguito per terminare la sessione. Per ulteriori informazioni, consultare l'app Manager HOW-TO.

3

Stai diventando un errore di accesso negato.

Ciò è possibile perché il nome utente o la password non sono corretti o non sono stati aggiunti correttamente i ruoli.

Ecco un trafiletto dalla documentazione di Tomcat -

Apache Tomcat 6.0 Realm Configurazione HOW-TO ha scritto: Se si desidera utilizzare Application Manager per distribuire le applicazioni undeploy in un esecuzione installazione di Tomcat , DEVI aggiungere il ruolo "manager" a almeno un nome utente nell'implementazione di Realm selezionata. Questo è perché l'applicazione Web di gestione stessa utilizza un vincolo di sicurezza che richiede il ruolo "gestore" per accedere a QUALSIASI URI di richiesta all'interno dell'applicazione .

Spero che questo aiuti.

0

Ho avuto lo stesso problema con Tomcat 6, ma le soluzioni precedenti non mi aiutano. Quindi l'ho risolto aggiungendo un ruolo aggiuntivo ("manager") all'utente in tomcat-users.

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

Recentemente ho riscontrato questo errore e nessuno di questi approcci mi ha aiutato.

La soluzione era quella di esplicitamente ruoli scrittura in 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"/> 

Ruoli admin-gui e admin-script non sono tenuti a eseguire lo script, ho bisogno di loro di usare questo utente di tomcat amministratore in una gui web.

6

URL La base si dovrebbe utilizzare dovrebbe essere: http://localhost:8090/manager/text

+3

+1 questo è ciò che ha risolto per me. –

+1

Dovrebbe essere la risposta accettata. Solo l'aggiunta di '/ text' al percorso manager ha funzionato per me – devnull69

+1

Questo ha funzionato anche per me. Grazie per aver condiviso questo. –

Problemi correlati