【问题标题】:GWT - Oracle JDBC Connection problemsGWT - Oracle JDBC 连接问题
【发布时间】:2013-06-25 03:37:11
【问题描述】:

我很难连接到 Oracle 数据库 OJDBC。

Error:    

“无法连接到数据库。异常消息:I / O 错误:网络适配器无法建立连接”

我正在使用 Google Web Toolkit,并在我的项目中添加了一个 SQL 数据库。
数据库名称是议程。

我找了很多,好像这个问题很多人都有,但是解决不了这个问题。 我已下载“ojdbc6.jar”并添加到我的 BUILDPATH。
我已经刷新、关闭、打开和重新打开,但我仍然看到错误。

我的规格:
Windows 7 x64
Springsource - 也在 Eclipse 中尝试过

private static final long serialVersionUID = 1L;
private Connection connection = null;
private Properties props = null;
private ClassLoader cl = null;
private String databaseURL = "";
private String databaseUser = "";
private String databasePass = "";
public void init() {
    try {
        // Load the database connection properties from com.gwt.agenda.GWTAgendaSample.properties
        props = new Properties();
        cl = this.getClass().getClassLoader();
        InputStream is = cl.getResourceAsStream("com/gwt/agenda/GWTAgendaSample.properties");
        props.load(is);
        // Load the database access information
        databaseURL = props.getProperty("databaseURL");
        databaseUser = props.getProperty("databaseUser");
        databasePass = props.getProperty("databasePass");
    } catch (Exception e) {
        e.printStackTrace();
        logger.error("Error loading GWTAgendaSample.properties file.", e);
    }
    try {
        Class.forName("oracle.jdbc.driver.OracleDriver");
        // Connect to the database
        connection = DriverManager.getConnection(databaseURL, databaseUser, databasePass);
    } catch (SQLException se) { messageOut = "Unable to connect to database. Exception message: " + se.getMessage();
        System.out.println(messageOut);
        se.printStackTrace();
        // Server side log
        logger.error(messageOut + "\n", se);
        destroy();
    } catch (Exception e) {
        messageOut = "Unable to connect to database. Exception message: " + e.getMessage();
        System.out.println(messageOut);
        e.printStackTrace();
        // Server side
        logger.error(messageOut + "\n", e);
        destroy();
    }
}

谁能指出我正确的方向。 我错过了什么吗?

请帮忙!

已编辑!!

Unable to connect to database. Exception message: Erro de E/S: The Network Adapter could not establish the connection
java.sql.SQLRecoverableException: Erro de E/S: The Network Adapter could not establish the connection
    at oracle.jdbc.driver.T4CConnection.logon(T4CConnection.java:419)
    at oracle.jdbc.driver.PhysicalConnection.<init>(PhysicalConnection.java:536)
    at oracle.jdbc.driver.T4CConnection.<init>(T4CConnection.java:228)
    at oracle.jdbc.driver.T4CDriverExtension.getConnection(T4CDriverExtension.java:32)
    at oracle.jdbc.driver.OracleDriver.connect(OracleDriver.java:521)
    at java.sql.DriverManager.getConnection(Unknown Source)
    at java.sql.DriverManager.getConnection(Unknown Source)
    at com.gwt.Agenda.server.GreetingServiceImpl.init(GreetingServiceImpl.java:78)
    at javax.servlet.GenericServlet.init(GenericServlet.java:212)
    at org.mortbay.jetty.servlet.ServletHolder.initServlet(ServletHolder.java:433)
    at org.mortbay.jetty.servlet.ServletHolder.getServlet(ServletHolder.java:342)
    at org.mortbay.jetty.servlet.ServletHolder.handle(ServletHolder.java:463)
    at org.mortbay.jetty.servlet.ServletHandler.handle(ServletHandler.java:362)
    at org.mortbay.jetty.security.SecurityHandler.handle(SecurityHandler.java:216)
    at org.mortbay.jetty.servlet.SessionHandler.handle(SessionHandler.java:181)
    at org.mortbay.jetty.handler.ContextHandler.handle(ContextHandler.java:729)
    at org.mortbay.jetty.webapp.WebAppContext.handle(WebAppContext.java:405)
    at org.mortbay.jetty.handler.HandlerWrapper.handle(HandlerWrapper.java:152)
    at org.mortbay.jetty.handler.RequestLogHandler.handle(RequestLogHandler.java:49)
    at org.mortbay.jetty.handler.HandlerWrapper.handle(HandlerWrapper.java:152)
    at org.mortbay.jetty.Server.handle(Server.java:324)
    at org.mortbay.jetty.HttpConnection.handleRequest(HttpConnection.java:505)
    at org.mortbay.jetty.HttpConnection$RequestHandler.content(HttpConnection.java:843)
    at org.mortbay.jetty.HttpParser.parseNext(HttpParser.java:647)
    at org.mortbay.jetty.HttpParser.parseAvailable(HttpParser.java:211)
    at org.mortbay.jetty.HttpConnection.handle(HttpConnection.java:380)
    at org.mortbay.io.nio.SelectChannelEndPoint.run(SelectChannelEndPoint.java:395)
    at org.mortbay.thread.QueuedThreadPool$PoolThread.run(QueuedThreadPool.java:488)
Caused by: oracle.net.ns.NetException: The Network Adapter could not establish the connection
    at oracle.net.nt.ConnStrategy.execute(ConnStrategy.java:375)
    at oracle.net.resolver.AddrResolution.resolveAndExecute(AddrResolution.java:422)
    at oracle.net.ns.NSProtocol.establishConnection(NSProtocol.java:678)
    at oracle.net.ns.NSProtocol.connect(NSProtocol.java:238)
    at oracle.jdbc.driver.T4CConnection.connect(T4CConnection.java:1054)
    at oracle.jdbc.driver.T4CConnection.logon(T4CConnection.java:308)
    ... 27 more
Caused by: java.net.ConnectException: Connection refused: connect
    at java.net.PlainSocketImpl.socketConnect(Native Method)
    at java.net.PlainSocketImpl.doConnect(Unknown Source)
    at java.net.PlainSocketImpl.connectToAddress(Unknown Source)
    at java.net.PlainSocketImpl.connect(Unknown Source)
    at java.net.SocksSocketImpl.connect(Unknown Source)
    at java.net.Socket.connect(Unknown Source)
    at oracle.net.nt.TcpNTAdapter.connect(TcpNTAdapter.java:209)
    at oracle.net.nt.ConnOption.connect(ConnOption.java:123)
    at oracle.net.nt.ConnStrategy.execute(ConnStrategy.java:353)
    ... 32 more

无法连接到数据库。 异常消息:侦听器被拒绝 与以下的联系 错误:ORA-12505,TNS:listener 确实 目前不知道给出的 SID 连接描述符

【问题讨论】:

  • databaseURL=jdbc:oracle:thin:@hp-PC:1521:Agenda databaseUser=user databasePass=agenda 其中@hp-PC 是我的计算机名称,Agenda 是我的数据库名称
  • oracle 监听器是否启动并运行?
  • 如何测试它?你有什么建议?
  • 您应该检查侦听器是否已启动以及它是否正在侦听端口 1521 (Caused by: java.net.ConnectException: Connection refused: connect)。尝试 netstat -a(从控制台)并查看端口 1521 是否打开
  • 嗨,我已经尝试并得到了这个 Proto:TCP // 本地网络:127.0.0.1:8888 // 外部:hp-PC:0 // 状态:LISTENING。找不到任何名为 1521 的端口。我看到很多激活行和已建立状态。不知道它是否应该发生。我记得我很久以前编辑过我的主机文件。这是问题的原因吗?提前致谢

标签: java oracle gwt jdbc


【解决方案1】:

听起来您的连接被 Oracle 数据库拒绝了。您确定您的 Oracle 数据库已启动并正在运行吗?很久以前我遇到过类似的问题,并且认为没有必要安装 MYSQL 数据库来运行示例。我错了,必须安装才能使其运行。

【讨论】:

  • 你是对的。没有安装Oracle数据库。我从没想过这是必要的。这就是它给出错误的原因。一旦安装了 Postgres 数据库并修改了代码,它就可以在没有不需要的工件的情况下工作。谢谢
【解决方案2】:

这个错误发生在很多情况下:

  1. 未配置 TNS 侦听器
  2. TNS-Listerner 已配置但未运行
  3. 连接 URL 中的 TNS 名称错误
  4. 系统路径中有多个 TNSNAMES.ORA

我在 Oracle 上玩得很开心。 尝试tnsping 验证您的数据库是否已启动并运行连接器。

【讨论】:

  • 抱歉,不太明白怎么做TnsPing。我打开一个 DOS 窗口并执行 ping 操作,然后其他参数是什么?谢谢。
  • C:\oraclexe\app\oracle\product\10.2.0\server\network\admin\sqlnet.ora 使用 HOSTNAME 适配器解析别名尝试联系 (DESCRIPTION=(CONNCET_DATA=(SERVICE_NAME =))(ADRESS=(PROTOCOL=TCP)(HOST=127.0.0.1)PORT=1521))) OK (10 ms) 这对吗?
  • 我缺少一个 SERVICE_NAME,但我不是 ORACLE 专业人士。可能是HOST必须是主机名,否则连接可能会被限制在localhost。
  • 我的数据库名称是 Agenda.sql,位于我的项目中的 com.gwt.agenda 下。我没有参考它!它应该在连接字符串中引用它的名称/位置?我还有一个 file.proprties,其中驻留了参数(url、user、pass),它们是:databaseURL=jdbc:oracle:thin:@hp-PC:1521/XE databaseUser=marantes databasePass=Cepsa2000。这也是正确的还是必须用 url、pass 和 user 加入数据库 URL?
  • 我认为问题不在您的 URL 内。它在服务器的配置中。作为一名开发人员,我对客户端部分有所了解,但我对配置 Oracle 服务器的了解并不是很好。您必须询问 Oracle 管理员。尝试在 serverfault.com 上向您提问
【解决方案3】:

通常,当我的数据库 URL 针对相关驱动程序的格式错误或我的用户名和密码不正确或传递不正确时,我会看到这种情况。

我所做的是使用 IDE 的 db 插件和与我的代码将使用的驱动程序相同的驱动程序连接到 db,并在尝试通过代码连接之前使其工作。

【讨论】:

【解决方案4】:

这是一个 Google App Engine 问题。在外部服务器上运行您的应用程序。

这里是有用的链接 How to setup GWT for Tomcat?

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2011-01-20
    • 1970-01-01
    • 2010-10-03
    • 2023-03-27
    • 2012-12-24
    • 2011-04-01
    • 2018-05-01
    相关资源
    最近更新 更多