2017-11-15 14 views
0

데이터베이스에 정보를 읽거나 쓰는 간단한 웹 서비스를 작성하려고합니다. 나는 오라클 드라이버 ojdbc6을 pom.xml에 종속성으로 추가 할 수 없으므로 아래 mvn install 명령을 사용하여 추가했습니다.oracle 드라이버가 Maven 저장소에 추가되었을 때 데이터베이스에 연결할 수 없습니다.

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; 
    } 
} 

내가 프로그램을 실행하려고, 내가받은 :

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 클래스는 추가되었다 아래 예외. 도와주세요.

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 
+0

ojdbc6.jar입니다 아래 SOAPUI 스크린 샷

soap

내 ProducDTO 클래스는 Maven 로컬 저장소에 추가됨 지금 sitory. 여전히 문제. –

+0

POM을 보여줄 수 있습니까? 그리고 당신은 당신의 데이터 소스를 구성합니까? – pirho

+0

pom.xml에있는 경우 런타임 패키지를 확인하십시오. CLASSPATH에서 JAR을 사용할 수없는 경우 일 수 있습니다. 귀하의 URL이 내게 적합합니다. – duffymo

답변

0

이제 작동 중입니다. 내 수업에 아래 코드 줄을 추가했습니다.

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

하지만 여기서 또 다른 문제에 직면하고 있습니다. 내 "제품"테이블에는 아래 스크린 샷과 같은 레코드가 있습니다. products

SOAPUI에서 레코드를 검색하려고하면 검색되지 않습니다. 또한 레코드가 삭제됩니다.

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; 
    } 
}