我已经完成了我所需要的一切,我在谷歌应用引擎上部署的后端servlet没有与我的谷歌云数据库进行任何连接,而最糟糕的部分就是,我的应用引擎日志不是& #39;甚至显示任何错误,显示" POST / hello HTTP / 1.1" 200 46 ...我真的不明白过去5天在这里发生了什么......
这些是我在下面所做的事情:
这是我的servlet代码:
public class MyServlet extends HttpServlet {
@Override
public void doGet(HttpServletRequest req, HttpServletResponse resp)
throws IOException {
resp.setContentType("text/plain");
resp.getWriter().println("Please use the form to POST to this url");
}
@Override
public void doPost(HttpServletRequest req, HttpServletResponse resp)
throws IOException {
String url = null;
resp.setContentType("text/html");
PrintWriter out = resp.getWriter();
try {
if (SystemProperty.environment.value() ==
SystemProperty.Environment.Value.Production) {
// Connecting from App Engine.
// Load the class that provides the new "jdbc:google:mysql://" prefix.
Class.forName("com.mysql.jdbc.GoogleDriver");
url = "jdbc:google:mysql://festive-shark-90408:daily-joy-project/database?user=joys";
} else {
// Local MySQL instance to use during development.
Class.forName("com.mysql.jdbc.Driver");
url = "jdbc:mysql://<cloud-sql-instance-ip>:3306/database?user=joys";
// Alternatively, connect to a Google Cloud SQL instance using:
}
} catch (Exception e) {
e.printStackTrace();
}
try {
Connection conn = DriverManager.getConnection(url);
try {
String fname = req.getParameter("name");
// String content = req.getParameter("message");
String statement = "INSERT INTO message (tags, posts, date, datetime) VALUES( ? , 'message', now(), now() )";
PreparedStatement stmt = conn.prepareStatement(statement);
stmt.setString(1, fname);
// stmt.setString(2, content);
int success = 2;
success = stmt.executeUpdate();
if (success == 1) {
out.println(
"<html><head></head><body>Success! Redirecting in 3 seconds...</body></html>");
} else if (success == 0) {
out.println(
"<html><head></head><body>Failure! Please try again! " +
"Redirecting in 3 seconds...</body></html>");
}
} finally {
conn.close();
}
} catch (SQLException e) {
e.printStackTrace();
}
}
}
在我的appengine-web.xml中,下面是参数:
申请价值:festive-shark-90408
版本值:app-001
threadsafe值:true
use-google-connector-j value:true
系统性能:
property name="java.util.logging.config.file" value="WEB-INF/logging.properties"
我的android工作室正在使用JDK 1.7.0_72
我的appengine sdk是appengine-java-sdk-1.9.18
我已经在我的云sql中设置了Access控件来授权我的app引擎应用程序,并且还授权我的网络ip。
我已经成功部署了我的后端servlet,每当我向servlet发出post请求时,我的app引擎日志只会显示:
203.106.176.214 - - [04 / Apr / 2015:04:43:17 -0700]&#34; POST / hello HTTP / 1.1&#34; 200 45 - &#34; Mozilla / 5.0(Windows NT 6.1; WOW64)AppleWebKit / 537.36(KHTML,如Gecko)Chrome / 41.0.2272.118 Safari / 537.36&#34; &#34; festive-shark-90408.appspot.com&#34; ms = 39 cpu_ms = 76 cpm_usd = 0.000005 instance = 00c61b117c0b660d29c1e893219b346d423915 app_engine_release = 1.9.18
意味着它成功,因为状态代码200 ..
我的云sql数据库在此之后根本没有被查询,但每当我在笔记本电脑上本地运行服务器时,一切正常,我的云sql获得了连接。
它只是不适用于我的应用引擎。
为什么?我真的不明白问题的来源。
答案 0 :(得分:1)
我弄清楚出了什么问题。
首先,我想从应用引擎连接到云sql数据库时使用root作为我的用户名。
其次,我打算将App Engine项目标题从其默认名称更改为我想要的名称..(我仍然不知道为什么会影响它)