我目前在我的Ubuntu AWS EC2服务器上运行apache tomcat。我有我所有的html / js独家webapps服务,那些工作正常。我目前正在尝试导入我的Java项目,但是我无法通过AJAX调用来访问我的java(我收到了404错误)。对我来说奇怪的是,我的本地版本可以很好地处理这些AJAX请求。我怀疑在执行此操作Tomcat SSL Guide后我可能会有阻止我的防火墙。我会发布一些代码,也许我有一个逻辑错误。
的web.xml
我曾经没有注释掉这个,但我尝试了注释。这适用于本地,但不适用于服务器。
<?xml version="1.0" encoding="UTF-8"?>
<web-app xmlns="http://xmlns.jcp.org/xml/ns/javaee"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://xmlns.jcp.org/xml/ns/javaee http://xmlns.jcp.org/xml/ns/javaee/web-app_3_1.xsd"
version="3.1">
<!-- <servlet>
<servlet-name>response</servlet-name>
<servlet-class>Demo.ServiceReceiver</servlet-class>
</servlet>
<servlet-mapping>
<servlet-name>response</servlet-name>
<url-pattern>/sendIt</url-pattern>
</servlet-mapping> -->
</web-app>
ServiceReceiver.java
@WebServlet("/sendIt")
public class ServiceReceiver extends HttpServlet {
public void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
doPost(request, response);
}
public void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
String first = request.getParameter("stuff");
String second = request.getParameter("other");
Driver driver = new Driver();
String ret = driver.runner();
response.getWriter().write(ret);
}
}
index.js
$(document).ready(function() {
$("#testClick").click( function()
{
testerClick();
}
);
});
function testerClick() {
var send;
send = {
stuff:"ayyyye",
other:"naayyyyyy"
};
$.ajax({
url: 'sendIt',
data: send,
type:'GET',
cache: false,
contentType: "application/json; charset=utf-8",
success:function(data){
alert(data);
},
error:function(error){
alert(error);
}
});
}
同样,这一切都适用于本地,所以我怀疑我在不知不觉中阻止了自己。我想要访问的网站是https://tyleralangreen.com/Dice_Game_war/。如果您点击该按钮,您会看到您获得了404.地址看起来正确:https://tyleralangreen.com/Dice_Game_war/sendIt?stuff=ayyyye&other=naayyyyyy&_=1521266411409
答案 0 :(得分:0)
我找到了这个问题。我查看了所有我的tomcat日志,查找错误,一个小错误说它不会编译我的Java类。哦哇,谢谢近乎无声的错误。无论如何,问题说:
org.apache.catalina.core.ApplicationContext.log标记servlet [Demo.ServiceReceiver]不可用19-Mar-2018 01:26:15.444严重 [AJP-NIO-127.0.0.1-8009-EXEC-8] org.apache.catalina.core.StandardWrapperValve.invoke分配 servlet的异常[Demo.ServiceReceiver] java.lang.UnsupportedClassVersionError:Demo / ServiceReceiver已经 由更新版本的Java Runtime编译(类文件 版本53.0),此版本的Java Runtime仅识别类 文件版本高达52.0(无法加载类[Demo.ServiceReceiver])
我看了,我正在使用intellij上的Java 9进行编译,但是我的服务器上安装了Java 8。我将IntelliJ上的默认JDK更改为Java 8,一切正常。我希望我能帮助别人。