我在aws上的ubuntu实例上运行了tomcat,我可以成功访问#include <stdio.h>
#include <stdlib.h> //don't forget to include this
struct student
{
int studID;
int *marks;
};
int main(void)
{
struct student s[100];
int i, j, val, flag=0;
printf(" \n Please enter the students ID# followed by their grades. When done entering\n");
printf(" grades, enter 101 to start a new student or 102 to exit entry.\n\n\n ");
for(i=0;i<10;)
{
printf("Enter student ID#: ");
scanf("%d",&s[i].studID);
s[i].marks = malloc(100*sizeof(int)); //allocating memory
printf("\nFor student ID# %d\n",s[i].studID);
for(j=0;j<100;j++)
{
printf("Enter grades: ");
scanf("%d",&val);
if(val>=0 && val<=100)
{
s[i].marks[j]=val;
}
else if(val==101)
{
s[i].marks[j]=-1;
s[i].marks = realloc(s[i].marks,(j+1)*sizeof(int)); //resize
break;
}
else if(val==102)
{
s[i].marks[j]=-1;
s[i].marks = realloc(s[i].marks,(j+1)*sizeof(int)); //resize
flag=1;
break;
}
else
{
printf("\ninvalid entry\n");
j--;
}
}
printf("\n\n----------\n\n");
i++;
if(flag==1)
break;
}
int num=i;
for(i=0; i<num ; i++)
{
printf("\nInformation for student ID number %d:\n",s[i].studID);
for(j=0; s[i].marks[j]!=-1; j++)
printf("Grades: %d\n",s[i].marks[j]);
}
//freeing memory
for(i=0; i<num ; i++)
{
free(s[i].marks);
}
}
页面但是当我点击int quantity = 0;
public void test(){
decrement2(null);
decrement(null);
}
public void decrement(View view)
{
quantity = quantity -1;
TextView t1 = (TextView)(findViewById(R.id.quant1));
t1.setText(""+quantity);
}
public void decrement2(View view)
{
quantity = quantity -1;
displayMessage(quantity);
}
public void displayMessage(int qty)
{
TextView t1 = (TextView)(findViewById(R.id.quant1));
t1.setText(""+qty);
}
时,我会立即导航到If you're seeing this, you've successfully installed Tomcat. Congratulations!
页面。< / p>
我编辑了Manager App
文件以获得manager-gui角色,甚至让用户也拥有了manager-status,manager-script。
然后我使用403 Access Denied
关闭服务器,导航到该页面以检查它是否实际关闭,然后tomcat-users.xml
重新启动它。
但每当我点击bin/shutdown.sh
按钮时,它甚至都没有显示用户名/密码框,而是直接进入403页面。
我错过了别的什么吗?
编辑:这是我的整个用户xml文件
bin/startup.sh
答案 0 :(得分:6)
这帮助我实现了它。 Tomcat manager never asking me ID/PASSWORD
您需要将manager.xml添加到conf / Catalina / localhost
根据文件:
“默认的Tomcat安装包括Manager。要将Manager Web应用程序Context的实例添加到新主机,请在$ CATALINA_BASE / conf / [enginename] / [hostname]文件夹中安装manager.xml上下文配置文件”
在我的例子中,我有这条路径:/ opt / tomcat / conf / Catalina / localhost
manager.xml示例
<Context privileged="true" antiResourceLocking="false" docBase="${catalina.home}/webapps/manager">
<Valve className="org.apache.catalina.valves.RemoteAddrValve" allow="^.*$" /></Context>
答案 1 :(得分:2)
我认为解决此问题的另一种方法是编辑应用程序中默认存在的context.xml文件:
$ CATALINA_HOME / web应用/经理/ META-INF / context.xml中
在Tomcat 8.5之前,Valve在这里被注释掉了:
<Context antiResourceLocking="false" privileged="true" >
<!--
Remove the comment markers from around the Valve below to limit access to
the manager application to clients connecting from localhost
-->
<!--
<Valve className="org.apache.catalina.valves.RemoteAddrValve"
allow="127\.\d+\.\d+\.\d+|::1|0:0:0:0:0:0:0:1" />
-->
</Context>
但默认情况下,它似乎在8.5中没有注释。如8.5x迁移指南中所述,https://tomcat.apache.org/migration-85.html#Migrating_from_8.0.x_to_8.5.x:
从8.0.x迁移到8.5.x
本节列出了8.0.x和8.5.x之间的所有已知更改,这些更改可能会在升级时导致向后兼容性问题。
...
网络应用
Manager和HostManager Web应用程序默认配置为RemoteAddrValve,用于限制对来自localhost的连接的访问。
所以,最重要的是,我认为您可以调整应用中的context.xml,或者创建一个新的manager.xml文件并调整该上下文元素,如上所述。
答案 2 :(得分:1)
您需要为Manager App创建上下文并允许从Tomcat 8.5.x
进行访问在$CATALINA_BASE/conf/Catalina/localhost/
主页下创建文件管理器
manager.xml内容,请注意我的源代码是172.31.254.37(我的电脑),将此更改为您的来源:
<Context privileged="true" antiResourceLocking="false"
docBase="${catalina.home}/webapps/manager">
<Valve className="org.apache.catalina.valves.RemoteAddrValve"
allow="172\.31\.254\.37" />
</Context>
确保您的用户/角色已在$CATALINA_BASE/conf/tomcat-users.xml
<user username="tomcat" password="tomcat" roles="manager-gui,manager-status"/>
亲切的问候,
Jacques de Jager