簡體   English   中英

將oracle驅動程序添加到Maven存儲庫時無法連接到數據庫

[英]Unable to connect to database when oracle driver is added to Maven repository

我正在嘗試編寫一個簡單的Web服務,該服務可以將信息讀取/寫入數據庫。 ojdbc6無法將Oracle驅動程序ojdbc6作為依賴項添加到pom.xml中,因此我使用以下mvn install命令添加了它。

mvn install:install-file -Dfile=C:\ojdbc6.jar -DgroupId=com.oracle -DartifactId=ojdbc6 -Dversion=11.2.0 -Dpackaging=jar

ojdbc6.jar成功添加[ ojdbc6.jar ] [1]

我的DAO類嘗試從數據庫檢索產品信息:

    package com.nt.dao;

import org.hibernate.SessionFactory;
import org.hibernate.Transaction;
import org.hibernate.cfg.Configuration;
import org.hibernate.classic.Session;

import com.nt.dto.ProductDTO;

public class ProductServiceDAO {

    public ProductDTO getProductInfo(long productId) {
        System.out.println("session---------1-");
        SessionFactory sessionFactory = new Configuration().configure().buildSessionFactory();
        System.out.println("session---------2-");
        Session session = sessionFactory.openSession();
        ProductDTO productDTO = new ProductDTO();
        productDTO.setProductName("Apple");
        Transaction transaction = session.beginTransaction();
        System.out.println("session---------3-");
        productDTO = (ProductDTO) session.get(ProductDTO.class, productId);
        session.close();
        return productDTO;
    }
}

當我嘗試運行該程序時,收到以下異常。 請幫忙。

 Caused by: org.hibernate.exception.JDBCConnectionException: Cannot open connection

at org.hibernate.exception.SQLStateConverter.convert(SQLStateConverter.java:99)
at org.hibernate.exception.JDBCExceptionHelper.convert(JDBCExceptionHelper.java:66)
at org.hibernate.exception.JDBCExceptionHelper.convert(JDBCExceptionHelper.java:52)
at org.hibernate.jdbc.ConnectionManager.openConnection(ConnectionManager.java:449)
at org.hibernate.jdbc.ConnectionManager.getConnection(ConnectionManager.java:167)
at org.hibernate.jdbc.JDBCContext.connection(JDBCContext.java:160)
at org.hibernate.transaction.JDBCTransaction.begin(JDBCTransaction.java:81)
at org.hibernate.impl.SessionImpl.beginTransaction(SessionImpl.java:1473)
at com.nt.dao.ProductServiceDAO.getProductInfo(ProductServiceDAO.java:17)
at com.nt.bo.ProductServiceBO.getProductInfo(ProductServiceBO.java:10)
at com.nt.ws.impl.ProductServiceImpl.getProductInfo(ProductServiceImpl.java:12)
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
at java.lang.reflect.Method.invoke(Method.java:497)
at org.apache.cxf.service.invoker.AbstractInvoker.performInvocation(AbstractInvoker.java:181)
at org.apache.cxf.service.invoker.AbstractInvoker.invoke(AbstractInvoker.java:97)
... 40 more
Caused by: java.sql.SQLException: No suitable driver found for jdbc:oracle:thin:@localhost:1521:orcl
at java.sql.DriverManager.getConnection(DriverManager.java:689)
at java.sql.DriverManager.getConnection(DriverManager.java:208)
at org.hibernate.connection.DriverManagerConnectionProvider.getConnection(DriverManagerConnectionProvider.java:133)
at org.hibernate.jdbc.ConnectionManager.openConnection(ConnectionManager.java:446)
... 53 more

現在正在工作。 我在課堂上添加了以下代碼

Class.forName ("oracle.jdbc.OracleDriver");

但是我在這里面臨另一個問題。 我的“產品”表中有一條記錄,如下面的屏幕快照所示。 產品展示

當我嘗試在SOAPUI中檢索記錄時,未檢索到該記錄。 此外,記錄被刪除。 下面是SOAPUI屏幕截圖

肥皂

我的ProducDTO課程:

    package com.nt.dto;

    import javax.xml.bind.annotation.XmlAccessType;
    import javax.xml.bind.annotation.XmlAccessorType;
    import javax.xml.bind.annotation.XmlElement;
    import javax.xml.bind.annotation.XmlType;

    @XmlType(name="ProductDTO")
    @XmlAccessorType(XmlAccessType.FIELD)
    public class ProductDTO {
        @XmlElement
        private int productId;
        @XmlElement
        private String productName;
        @XmlElement
        private int productPrice;
        public int getProductId() {
            return productId;
        }
        public void setProductId(int productId) {
            this.productId = productId;
        }
        public String getProductName() {
            return productName;
        }
        public void setProductName(String productName) {
            this.productName = productName;
        }
        public int getProductPrice() {
            return productPrice;
        }
        public void setProductPrice(int productPrice) {
            this.productPrice = productPrice;
        }


    }

My DAO class retrieving the record:

package com.nt.dao;

import org.hibernate.SessionFactory;
import org.hibernate.Transaction;
import org.hibernate.cfg.Configuration;
import org.hibernate.classic.Session;

import com.nt.dto.ProductDTO;

public class ProductServiceDAO {

    public ProductDTO getProductInfo(long productId) {
        System.out.println("session---------1-");
        try {
            Class.forName ("oracle.jdbc.OracleDriver");
        } catch (ClassNotFoundException e) {
            // TODO Auto-generated catch block
            e.printStackTrace();
        }
        SessionFactory sessionFactory = new Configuration().configure().buildSessionFactory();
        System.out.println("session---------2-");
        Session session = sessionFactory.openSession();
        ProductDTO productDTO = new ProductDTO();

        Transaction transaction = session.beginTransaction();
        System.out.println("session---------3-"+productId);
        productDTO = (ProductDTO) session.get(ProductDTO.class, (int) productId);
        if(productDTO!=null){
            System.out.println("session---------4-"+productDTO.getProductId());
            System.out.println("session---------5-"+productDTO.getProductName());
            System.out.println("session---------6-"+productDTO.getProductPrice());
        }else{
            System.out.println("session---------7-");
        }

        session.close();
        return productDTO;
    }
}

我的日志文件:

    Payload: <soapenv:Envelope xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/" xmlns:ws="http://ws.nt.com/">
   <soapenv:Header/>
   <soapenv:Body>
      <ws:getProductInfo>
         <productId>159</productId>
      </ws:getProductInfo>
   </soapenv:Body>
</soapenv:Envelope>
--------------------------------------
session---------1-
session---------2-
session---------3-159
Hibernate: 
    /* load com.nt.dto.ProductDTO */ select
        productdto0_.PRODUCT_ID as PRODUCT1_5_0_,
        productdto0_.PRODUCT_NAME as PRODUCT2_5_0_,
        productdto0_.PRODUCT_PRICE as PRODUCT3_5_0_ 
    from
        PRODUCTS productdto0_ 
    where
        productdto0_.PRODUCT_ID=?
session---------7-
Nov 19, 2017 7:58:18 PM org.apache.cxf.services.ProductServiceService.ProductServicePort.ProductService
INFO: Outbound Message
---------------------------
ID: 2
Response-Code: 200
Encoding: UTF-8
Content-Type: text/xml
Headers: {}
Payload: <soap:Envelope xmlns:soap="http://schemas.xmlsoap.org/soap/envelope/"><soap:Body><ns2:getProductInfoResponse xmlns:ns2="http://ws.nt.com/"/></soap:Body></soap:Envelope>
--------------------------------------

我的DAO課程:

package com.nt.dao;

import org.hibernate.SessionFactory;
import org.hibernate.Transaction;
import org.hibernate.cfg.Configuration;
import org.hibernate.classic.Session;

import com.nt.dto.ProductDTO;

public class ProductServiceDAO {

    public ProductDTO getProductInfo(long productId) {
        System.out.println("session---------1-");
        try {
            Class.forName ("oracle.jdbc.OracleDriver");
        } catch (ClassNotFoundException e) {
            // TODO Auto-generated catch block
            e.printStackTrace();
        }
        SessionFactory sessionFactory = new Configuration().configure().buildSessionFactory();
        System.out.println("session---------2-");
        Session session = sessionFactory.openSession();
        ProductDTO productDTO = new ProductDTO();

        Transaction transaction = session.beginTransaction();
        System.out.println("session---------3-"+productId);
        productDTO = (ProductDTO) session.get(ProductDTO.class, (int) productId);
        if(productDTO!=null){
            System.out.println("session---------4-"+productDTO.getProductId());
            System.out.println("session---------5-"+productDTO.getProductName());
            System.out.println("session---------6-"+productDTO.getProductPrice());
        }else{
            System.out.println("session---------7-");
        }

        session.close();
        return productDTO;
    }
}

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM