我正在使用Eclipse Luna并正在开发maven项目.当我在pom.xml中添加ojdbc jar的条目时,它在xml中给出了错误.由于groupId,artifactId和version都是正确的,我找不到任何问题的原因.
我该如何解决这个问题?
我正在尝试开发一个Oracle
从eb服务类连接到数据库的Java EE应用程序,但我遇到了一个
SQLException: No suitable driver found for jdbc:oracle:thin:@//localhost:1521/orcl
Run Code Online (Sandbox Code Playgroud)
我有ojdbc6.jar
类路径,我也在JBoss
部署文件夹中验证了这一点.
我的申请EAR
是由一个WAR
.这有什么问题(根本原因)?请帮忙.
persistence.xml中的连接URL:
> "jdbc:oracle:thin:@//localhost:1521/orcl"
Run Code Online (Sandbox Code Playgroud)
堆栈跟踪:
16:06:32,687 WARN [com.arjuna.ats.arjuna] (default-workqueue-1) ARJUNA012125: TwoPhaseCoordinator.beforeCompletion - failed for SynchronizationImple< 0:ffffc0a80106:-3e8b2d6f:5037338f:15, org.hibernate.engine.transaction.synchronization.internal.RegisteredSynchronization@4d1082 >: javax.persistence.PersistenceException: org.hibernate.exception.JDBCConnectionException: Could not open connection
at org.hibernate.ejb.AbstractEntityManagerImpl.convert(AbstractEntityManagerImpl.java:1361) [hibernate-entitymanager-4.0.1.Final.jar:4.0.1.Final]
at
Caused by: java.sql.SQLException: No suitable driver found for jdbc:oracle:thin:@//localhost:1521/orcl
at java.sql.DriverManager.getConnection(DriverManager.java:602) [rt.jar:1.6.0_26]
at java.sql.DriverManager.getConnection(DriverManager.java:154) [rt.jar:1.6.0_26]
at org.hibernate.service.jdbc.connections.internal.DriverManagerConnectionProviderImpl.getConnection(DriverManagerConnectionProviderImpl.java:173) [hibernate-core-4.0.1.Final.jar:4.0.1.Final]
at org.hibernate.internal.AbstractSessionImpl$NonContextualJdbcConnectionAccess.obtainConnection(AbstractSessionImpl.java:276) [hibernate-core-4.0.1.Final.jar:4.0.1.Final]
at org.hibernate.engine.jdbc.internal.LogicalConnectionImpl.obtainConnection(LogicalConnectionImpl.java:297) [hibernate-core-4.0.1.Final.jar:4.0.1.Final]
... 70 more
16:06:32,796 ERROR [org.jboss.ejb3.invocation] (default-workqueue-1) JBAS014134: …
Run Code Online (Sandbox Code Playgroud) ojdbc6.jar是否适用于JDK 1.7和Oracle 12c?我应该使用ojdbc7.jar吗?
先感谢您.
我是Gradle项目的新手,我有一个问题.我在互联网上搜索但我找不到我需要的东西,或者我不知道如何搜索它.首先,我要告诉你我的情况.我有一个Gradle项目,我希望将来使用jenkins执行几个自动化测试,但现在我想尝试Eclipse.我在/ lib目录中有oracle jdbc驱动程序,这是我的build.gradle
apply plugin: 'java'
// In this section you declare where to find the dependencies of your project
repositories {
jcenter()
//mavenCentral()
}
// In this section you declare the dependencies for your production and test code
dependencies {
compile 'org.slf4j:slf4j-api:1.7.21'
compile 'org.seleniumhq.selenium:selenium-java:2.+'
compile 'org.testng:testng:6.+'
//compile 'com.oracle:ojdbc14:10.2.0.4.0'
//testCompile 'net.sourceforge.jexcelapi:jxl:2.6.12'
testCompile 'info.cukes:cucumber-core:1.+'
testCompile 'info.cukes:cucumber-java:1.+'
testCompile 'info.cukes:cucumber-junit:1.+'
testCompile 'junit:junit:4.12'
}
repositories {
flatDir(dir: 'libs')//, name: 'Local libs'
}
dependencies {
compile name: 'ojdbc7'
}
Run Code Online (Sandbox Code Playgroud)
我想在一个类中使用这个jdbc驱动程序,但我不知道如何使用它.当我尝试使用Maven时,我使用了这种方式"import oracle.jdbc.driver.OracleDriver;" 但我想这对Gradle项目无效.你能帮我吗?提前致谢
我们遇到的问题是文本以某种不同的方式编码,但保存在表格的单个列中.很长的故事.在MySQL上,我可以"从表中选择十六进制(str)",然后我看到字符串的字节与我设置它们完全相同.
在Oracle上,我有一个以土耳其字符İ开头的字符串,它是Unicode字符0x0130"带有上面点的拉丁文大写字母".这是我的Unicode 2.0版书的印刷版.在UTF-8中,该字符为0xc4b0.
我们需要支持非常旧的客户端应用程序.他们会在"windows-1254"中将此文本发送给我们.我们过去只是闭上眼睛,存放它,然后再将其交还.现在我们需要Unicode,或者被赋予Unicode.
所以我有:
SQL> select id, name from table where that thing;
ID NAME
------ ------------------------
746 Ý
Run Code Online (Sandbox Code Playgroud)
这是有道理的,因为"İ"在Windows-1254中是0xdd而wondows-1252中的0xdd是"Ý".我的终端大概设置为通常的windows-1252.
但:
SQL> select id, rawtohex(name) from table where that thing;
ID RAWTOHEX(NAME)
------ ------------------------
746 C39D
Run Code Online (Sandbox Code Playgroud)
似乎没有相当于MySQL中的hex(name)函数.但我必须遗漏一些东西.我在这里错过了什么?
我的java代码必须使用我提供的utf8并保存utf8副本和windows-1252副本.java代码给了我:
bytes (utf8): c4 b0
bytes (1254): dd
Run Code Online (Sandbox Code Playgroud)
然而,当我保存它时,客户端没有得到正确的字符.当我试图查看Oracle实际存储的内容时,我会看到上面看到的垃圾.我不知道C39D的来源.有什么建议?
我们在所有应用程序中都内置了ojdbc14.jar,并且我们正在连接到一个数据库,该数据库表示它是"Oracle Database 11g企业版版本11.2.0.2.0 - 64位生产".
我一直在尝试从Oracle OCI驱动程序切换到瘦驱动程序,我tnsnames.ora
通过添加-Doracle.net.tns_admin=/path
到命令行获得了瘦驱动程序来拾取我的驱动程序.
但是,我们tnsnames.ora
包含一次定义多个服务的行.它们看起来像这样:
NEWS2,NEWS,NEWSFX = (DESCRIPTION_LIST=...)
Run Code Online (Sandbox Code Playgroud)
OCI驱动程序似乎对这种格式感到满意,但瘦驱动程序并不了解那些是3个单独的服务NEWS2
,NEWS
并且NEWSFX
.一些痛苦的调试会话显示,它认为这是一个名为的单一服务NEWS2,NEWS,NEWSFX
.
可以理解,我们的DBA不太热衷于左右复制粘贴服务描述符,并且坚持认为我们找到了一种方法,可以在从OCI切换到精简之前为没有复制粘贴的同一服务描述符声明不同的名称.
使用oracle瘦驱动程序是否有正确支持的方法来实现这一目标?
PS:这是一个使用相同功能的人的帖子,并且还提到它显然没有文档:https://dbamarco.wordpress.com/2015/12/02/tnsnames-ora-secrets/
我刚刚完成了将我的oracle jar安装到glassfish库并ping
使用正确的属性值成功连接和JDBC Pool到我的数据库.然后我选择它作为我的JDBC资源,之后我再次ping池,错误就是java.lang.RuntimeException
在白色屏幕上打印这个类.
2015-04-22T16:54:41.824+0800|SEVERE: java.lang.RuntimeException: java.lang.reflect.InvocationTargetException while attempting to process a 'beforeCreate' event for 'event132'.
at com.sun.jsftemplating.layout.descriptors.LayoutElementBase.dispatchHandlers(LayoutElementBase.java:422)
at com.sun.jsftemplating.layout.descriptors.LayoutElementBase.dispatchHandlers(LayoutElementBase.java:394)
at com.sun.jsftemplating.layout.descriptors.LayoutComponent.beforeCreate(LayoutComponent.java:348)
at com.sun.jsftemplating.layout.descriptors.LayoutComponent.getChild(LayoutComponent.java:288)
at com.sun.jsftemplating.layout.LayoutViewHandler.buildUIComponentTree(LayoutViewHandler.java:556)
at com.sun.jsftemplating.layout.LayoutViewHandler.buildUIComponentTree(LayoutViewHandler.java:551)
at com.sun.jsftemplating.layout.LayoutViewHandler.buildUIComponentTree(LayoutViewHandler.java:507)
at com.sun.jsftemplating.layout.LayoutViewHandler.buildUIComponentTree(LayoutViewHandler.java:507)
at com.sun.jsftemplating.layout.LayoutViewHandler.createView(LayoutViewHandler.java:255)
at com.sun.faces.lifecycle.RestoreViewPhase.execute(RestoreViewPhase.java:205)
at com.sun.faces.lifecycle.Phase.doPhase(Phase.java:101)
at com.sun.faces.lifecycle.RestoreViewPhase.doPhase(RestoreViewPhase.java:121)
at com.sun.faces.lifecycle.LifecycleImpl.execute(LifecycleImpl.java:198)
at javax.faces.webapp.FacesServlet.service(FacesServlet.java:646)
at org.apache.catalina.core.StandardWrapper.service(StandardWrapper.java:1682)
at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:344)
at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:214)
at com.sun.webui.jsf.util.UploadFilter.doFilter(UploadFilter.java:233)
at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:256)
at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:214)
at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:316)
at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:160)
at org.apache.catalina.core.StandardPipeline.doInvoke(StandardPipeline.java:734)
at org.apache.catalina.core.StandardPipeline.doChainInvoke(StandardPipeline.java:678)
at com.sun.enterprise.web.WebPipeline.invoke(WebPipeline.java:97)
at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:174)
at org.apache.catalina.connector.CoyoteAdapter.doService(CoyoteAdapter.java:415)
at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:282)
at com.sun.enterprise.v3.services.impl.ContainerMapper$HttpHandlerCallable.call(ContainerMapper.java:459)
at com.sun.enterprise.v3.services.impl.ContainerMapper.service(ContainerMapper.java:167) …
Run Code Online (Sandbox Code Playgroud) 我最近将应用程序从java 1.7升级到1.8.其余的库版本保持不变.升级后我收到以下错误:
DEBUG 2015-11-12 09:55:12 BasicResourcePool An exception occurred while acquiring a poolable resource. Will retry.
java.lang.NullPointerException
at oracle.net.jndi.JndiAttrs.getAttrs(JndiAttrs.java:207)
at oracle.net.resolver.AddrResolution.<init>(AddrResolution.java:198)
at oracle.net.ns.NSProtocol.connect(NSProtocol.java:219)
at oracle.jdbc.driver.T4CConnection.connect(T4CConnection.java:1102)
at oracle.jdbc.driver.T4CConnection.logon(T4CConnection.java:320)
at oracle.jdbc.driver.PhysicalConnection.<init>(PhysicalConnection.java:546)
at oracle.jdbc.driver.T4CConnection.<init>(T4CConnection.java:236)
at oracle.jdbc.driver.T4CDriverExtension.getConnection(T4CDriverExtension.java:32)
at oracle.jdbc.driver.OracleDriver.connect(OracleDriver.java:521)
at com.mchange.v2.c3p0.DriverManagerDataSource.getConnection(DriverManagerDataSource.java:134)
at com.mchange.v2.c3p0.WrapperConnectionPoolDataSource.getPooledConnection(WrapperConnectionPoolDataSource.java:182)
at com.mchange.v2.c3p0.WrapperConnectionPoolDataSource.getPooledConnection(WrapperConnectionPoolDataSource.java:171)
at com.mchange.v2.c3p0.impl.C3P0PooledConnectionPool$1PooledConnectionResourcePoolManager.acquireResource(C3P0PooledConnectionPool.java:137)
at com.mchange.v2.resourcepool.BasicResourcePool.doAcquire(BasicResourcePool.java:1014)
at com.mchange.v2.resourcepool.BasicResourcePool.access$800(BasicResourcePool.java:32)
at com.mchange.v2.resourcepool.BasicResourcePool$AcquireTask.run(BasicResourcePool.java:1810)
at com.mchange.v2.async.ThreadPoolAsynchronousRunner$PoolThread.run(ThreadPoolAsynchronousRunner.java:547)
Run Code Online (Sandbox Code Playgroud)
Hibernate配置:
<hibernate-configuration>
<session-factory>
<property name="hibernate.connection.driver_class">oracle.jdbc.driver.OracleDriver</property>
<property name="hibernate.connection.url">jdbc:oracle:thin:@ldaps://XXXX,cn=OOOO,dc=WWW</property>
<property name="hibernate.connection.username">YYYY</property>
<property name="hibernate.statement_cache.size">0</property>
<property name="hibernate.connection.password">ZZZZZ</property>
<property name="hibernate.c3p0.min_size">5</property>
<property name="hibernate.c3p0.max_size">20</property>
<property name="hibernate.c3p0.timeout">1800</property>
<property name="hibernate.c3p0.max_statements">0</property>
<property name="hibernate.default_schema">YYYY</property>
<property name="hibernate.dialect">org.hibernate.dialect.OracleDialect</property>
<property name="hibernate.show_sql">true</property>
</session-factory>
</hibernate-configuration> …
Run Code Online (Sandbox Code Playgroud) 我需要设置一些特定的Oracle JDBC连接属性,以加快批处理INSERT
s(defaultBatchValue
)和质量SELECT
s(defaultRowPrefetch
).我得到了如何用DBCP实现这一目标的建议(感谢M. Deinum),但我想:
我正在考虑spring.datasource.custom_connection_properties
将来支持或类似的功能请求,并且由于这种尝试,这已经成为可能.我这样做是通过在创建DataSource时传递相关信息并操纵DataSource的创建,如下所示:
@Bean
public DataSource dataSource() {
DataSource ds = null;
try {
Field props = DataSourceBuilder.class.getDeclaredField("properties");
props.setAccessible(true);
DataSourceBuilder builder = DataSourceBuilder.create();
Map<String, String> properties = (Map<String, String>) props.get(builder);
properties.put("defaultRowPrefetch", "1000");
properties.put("defaultBatchValue", "1000");
ds = builder.url( "jdbc:oracle:thin:@xyz:1521:abc" ).username( "ihave" ).password( "wonttell" ).build();
properties = (Map<String, String>) props.get(builder);
log.debug("properties after: {}", properties);
} ... leaving out the catches ...
}
log.debug("We are using this …
Run Code Online (Sandbox Code Playgroud) connection-pooling jdbctemplate ojdbc spring-boot tomcat-jdbc
在从Java 1.6升级到Java 1.8之前,我们能够登录Web应用程序.升级后,我们无法登录其中一个Web应用程序,但我可以登录到另一个.他们使用相同的Spring-Security,OJDBC和Hibernate版本.
但是,如果我们从类路径中删除了以下jar,只要您不需要使用钱包登录,登录就会再次起作用:
在上层环境中删除它们不是一种选择,因为我们使用oracle钱包登录.
当我将日志级别设置为DEBUG时,我看到登录被拒绝作为anonomys用户,但在loggs之前它成功验证了登录名/密码.
认证成功:
DEBUG [org.springframework.security.web.authentication.UsernamePasswordAuthenticationFilter][http-bio-8080-exec-10] - Authentication success. Updating SecurityContextHolder to contain: org.springframework.security.authentication.UsernamePasswordAuthenticationToken@85ca488a: Principal: org.springframework.security.core.userdetails.User@f75cc3bd: Username: admin; Password: [PROTECTED]; Enabled: true; AccountNonExpired: true; credentialsNonExpired: true; AccountNonLocked: true; Granted Authorities: ADMIN,READ_ONLY; Credentials: [PROTECTED]; Authenticated: true; Details: org.springframework.security.web.authentication.WebAuthenticationDetails@2cd90: RemoteIpAddress: 0:0:0:0:0:0:0:1; SessionId: 383A7E52904236DDEA18E00864C0B94C; Granted Authorities: ADMIN, READ_ONLY
DEBUG [org.springframework.security.web.context.HttpSessionSecurityContextRepository][http-bio-8080-exec-10] - SecurityContext stored to HttpSession: 'org.springframework.security.core.context.SecurityContextImpl@85ca488a: Authentication: org.springframework.security.authentication.UsernamePasswordAuthenticationToken@85ca488a: Principal: org.springframework.security.core.userdetails.User@f75cc3bd: Username: admin; Password: [PROTECTED]; Enabled: true; AccountNonExpired: true; credentialsNonExpired: true; AccountNonLocked: …
Run Code Online (Sandbox Code Playgroud) ojdbc ×10
java ×6
jdbc ×4
oracle ×3
artifact ×1
build.gradle ×1
glassfish ×1
gradle ×1
hibernate ×1
jboss ×1
jdbctemplate ×1
jdk1.7 ×1
maven ×1
pom.xml ×1
spring-boot ×1
tomcat-jdbc ×1
turkish ×1
unicode ×1
utf-8 ×1