gpt4 book ai didi

java - 简单的Java Web服务问题

转载 作者:行者123 更新时间:2023-11-30 04:53:40 25 4
gpt4 key购买 nike

我想用 Java 创建一个 Web 服务来访问存储在外部服务器中的数据库。我创建了一个包含主要信息的 BeepWebService 类:

@WebService
public class BeepWebService {

private Connection conn = null;
private String url = "jdbc:mysql://xxxxxx.ipagemysql.com/";
private String dbName = "beep";
private String userName = "beep_user_name";
private String password = "pswrd";
private String db_str = " select Name beep.SW where Name = ";

public BeepWebService(){
try {
Class.forName("com.mysql.jdbc.Driver").newInstance();
this.conn = DriverManager.getConnection(url+dbName,userName,password);
System.out.println("Connected to the database");

}catch (Exception e) {
System.out.print("failed");
}
}

@WebMethod
public String returnFormat(@WebParam(name="input_value") String input){

String str = null;
String query = db_str+input;

try {
Statement statement = conn.createStatement();
ResultSet rs = statement.executeQuery(query);


while (rs.next()) {
str = rs.getString(2);
System.out.println(str);
}

rs.close();
statement.close();

} catch (SQLException e) {
e.printStackTrace();
}

return str;

}

}

然后我创建了发布者类,名为 BeepWebServicePublisher:

public class BeepWebServicePublisher {

public static void main(String[] args){

System.out.println("Web Service initiating...");
Endpoint.publish("http://xxxxxx.ipagemysql.com/", new BeepWebService());
}
}

不幸的是,在成功编译这两个类并运行应用程序后,输出消息为“失败”(意味着无法与数据库建立连接),随后出现异常错误。这是完整的输出:

Web Service starting..
failedException in thread "main" com.sun.xml.internal.ws.server.ServerRtException: Server Runtime Error: java.net.BindException: Address already in use: bind
at com.sun.xml.internal.ws.transport.http.server.ServerMgr.createContext(Unknown Source)
at com.sun.xml.internal.ws.transport.http.server.HttpEndpoint.publish(Unknown Source)
at com.sun.xml.internal.ws.transport.http.server.EndpointImpl.publish(Unknown Source)
at com.sun.xml.internal.ws.spi.ProviderImpl.createAndPublishEndpoint(Unknown Source)
at javax.xml.ws.Endpoint.publish(Unknown Source)
at com.BeepServicePackage.server.BeepWebServicePublisher.main(BeepWebServicePublisher.java:17)
Caused by: java.net.BindException: Address already in use: bind
at sun.nio.ch.Net.bind(Native Method)
at sun.nio.ch.ServerSocketChannelImpl.bind(Unknown Source)
at sun.nio.ch.ServerSocketAdaptor.bind(Unknown Source)
at sun.net.httpserver.ServerImpl.<init>(Unknown Source)
at sun.net.httpserver.HttpServerImpl.<init>(Unknown Source)
at sun.net.httpserver.DefaultHttpServerProvider.createHttpServer(Unknown Source)
at com.sun.net.httpserver.HttpServer.create(Unknown Source)
... 6 more

由于我是这个领域的新手,有人可以告诉我代码是否有问题或者服务器有问题吗?谢谢!

最佳答案

打印出整个堆栈跟踪;它会为您提供比“失败”消息更多的信息。

您在哪里注册 MySQL JDBC 驱动程序?我没看到。

更新:我建议您分解问题。不要将数据库代码放在 Web 服务中。创建一个可以离线测试的基于接口(interface)的 POJO。让它工作,然后为 Web 服务提供一个实例以供使用。

child ,你有 99 个问题。从一次修复一个开始。

这是错误的:

private String db_str = " select Name beep.SW where Name = ";

您需要一个绑定(bind)参数:

private String db_str = " select Name beep.SW where Name = ?";

您需要一个PreparedStatement,而不是一个Statement

然后你要绑定(bind)你传入的名字。

SELECT 仅返回一列;为什么在第 2 列上setString

在很多方面都是错误的。

关于java - 简单的Java Web服务问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9263048/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com