`
35687638
  • 浏览: 9955 次
  • 性别: Icon_minigender_1
  • 来自: 上海
最近访客 更多访客>>
社区版块
存档分类
最新评论

非WEB应用程序访问WebLogic获得数据库连接时遇到的问题及解决方法

阅读更多
近日得到一项任务,因连接数据库的用户密码是明文放在配置文件中的,领导要求改安全一点。这个项目不是WEB项目,是直接从main函数里启动的。
初步分析后,领导建议了2种解决方案:
1,将密码加密。每次使用密码时,先判断有没有加密,如果没有加密,则加密,然后将加密后的密码保存到配置文件中。否则直接使用。
2,能不能将非WEB程序部署到WebLogic(领导觉得这个方法最方便)


第1方案随便试了下,感觉稍显麻烦。因为不想往项目里加jar包。不加的话,则需要生成一个密钥。反正感觉不爽。所以,开始研究第2方案。

第2方案经研究得出结论,非WEB应用程序无法直接部署到WebLogic中去。

在郁闷的搜索了一会以后,偶然在网上发现有这样一种写法:
Hashtable ht = new Hashtable();
ht.put(Context.INITIAL_CONTEXT_FACTORY,”weblogic.jndi.WLInitialContextFactory”);
ht.put(Context.PROVIDER_URL, “t3://localhost:7007″);
Context initial = new InitialContext(ht);
DataSource ds = (DataSource) initial.lookup(“JNDI”);

拿去一试,果然DataSource不为空,仿佛看到了希望。但是-------
调用:ds.getConnection();时,报了错,如下:
java.lang.reflect.InvocationTargetException
	at sun.reflect.NativeConstructorAccessorImpl.newInstance0(Native Method)
	at sun.reflect.NativeConstructorAccessorImpl.newInstance(NativeConstructorAccessorImpl.java:39)
	at sun.reflect.DelegatingConstructorAccessorImpl.newInstance(DelegatingConstructorAccessorImpl.java:27)
	at java.lang.reflect.Constructor.newInstance(Constructor.java:513)
	at weblogic.rmi.internal.StubGenerator.generateStub(StubGenerator.java:805)
	at weblogic.rmi.internal.StubGenerator.generateStub(StubGenerator.java:790)
	at weblogic.rmi.extensions.StubFactory.getStub(StubFactory.java:79)
	at weblogic.rmi.utils.io.RemoteObjectReplacer.resolveObject(RemoteObjectReplacer.java:222)
	at weblogic.rmi.internal.StubInfo.readResolve(StubInfo.java:142)
	at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
	at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39)
	at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
	at java.lang.reflect.Method.invoke(Method.java:597)
	at java.io.ObjectStreamClass.invokeReadResolve(ObjectStreamClass.java:1061)
	at java.io.ObjectInputStream.readOrdinaryObject(ObjectInputStream.java:1762)
	at java.io.ObjectInputStream.readObject0(ObjectInputStream.java:1329)
	at java.io.ObjectInputStream.defaultReadFields(ObjectInputStream.java:1947)
	at java.io.ObjectInputStream.readSerialData(ObjectInputStream.java:1871)
	at java.io.ObjectInputStream.readOrdinaryObject(ObjectInputStream.java:1753)
	at java.io.ObjectInputStream.readObject0(ObjectInputStream.java:1329)
	at java.io.ObjectInputStream.readObject(ObjectInputStream.java:351)
	at weblogic.common.internal.ChunkedObjectInputStream.readObject(ChunkedObjectInputStream.java:114)
	at weblogic.rjvm.MsgAbbrevInputStream.readObject(MsgAbbrevInputStream.java:111)
	at weblogic.rmi.internal.ObjectIO.readObject(ObjectIO.java:56)
	at weblogic.rjvm.ResponseImpl.unmarshalReturn(ResponseImpl.java:159)
	at weblogic.rmi.cluster.ReplicaAwareRemoteRef.invoke(ReplicaAwareRemoteRef.java:285)
	at weblogic.rmi.cluster.ReplicaAwareRemoteRef.invoke(ReplicaAwareRemoteRef.java:244)
	at weblogic.jdbc.common.internal.RmiDataSource_814_WLStub.getConnection(Unknown Source)
	at com.xjf.test.TestMain.main(TestMain.java:82)
Caused by: java.lang.IllegalAccessError: tried to access method weblogic.rmi.internal.StubInfo.getInterfaces(Ljava/lang/ClassLoader;)[Ljava/lang/Class; from class weblogic.jdbc.rmi.internal.ConnectionImpl_weblogic_jdbc_wrapper_PoolConnection_com_informix_jdbc_IfxSqliConnect_814_WLStub
	at weblogic.jdbc.rmi.internal.ConnectionImpl_weblogic_jdbc_wrapper_PoolConnection_com_informix_jdbc_IfxSqliConnect_814_WLStub.ensureInitialized(Unknown Source)
	at weblogic.jdbc.rmi.internal.ConnectionImpl_weblogic_jdbc_wrapper_PoolConnection_com_informix_jdbc_IfxSqliConnect_814_WLStub.<init>(Unknown Source)
	... 29 more
--------------- nested within: ------------------
weblogic.utils.AssertionError: ***** ASSERTION FAILED *****[ Failed to generate class for weblogic.jdbc.rmi.internal.ConnectionImpl_weblogic_jdbc_wrapper_PoolConnection_com_informix_jdbc_IfxSqliConnect_814_WLStub ] - with nested exception:
[java.lang.reflect.InvocationTargetException - with target exception:
[java.lang.IllegalAccessError: tried to access method weblogic.rmi.internal.StubInfo.getInterfaces(Ljava/lang/ClassLoader;)[Ljava/lang/Class; from class weblogic.jdbc.rmi.internal.ConnectionImpl_weblogic_jdbc_wrapper_PoolConnection_com_informix_jdbc_IfxSqliConnect_814_WLStub]]
	at weblogic.rmi.internal.StubGenerator.generateStub(StubGenerator.java:807)
	at weblogic.rmi.internal.StubGenerator.generateStub(StubGenerator.java:790)
	at weblogic.rmi.extensions.StubFactory.getStub(StubFactory.java:79)
	at weblogic.rmi.utils.io.RemoteObjectReplacer.resolveObject(RemoteObjectReplacer.java:222)
	at weblogic.rmi.internal.StubInfo.readResolve(StubInfo.java:142)
	at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
	at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39)
	at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
	at java.lang.reflect.Method.invoke(Method.java:597)
	at java.io.ObjectStreamClass.invokeReadResolve(ObjectStreamClass.java:1061)
	at java.io.ObjectInputStream.readOrdinaryObject(ObjectInputStream.java:1762)
	at java.io.ObjectInputStream.readObject0(ObjectInputStream.java:1329)
	at java.io.ObjectInputStream.defaultReadFields(ObjectInputStream.java:1947)
	at java.io.ObjectInputStream.readSerialData(ObjectInputStream.java:1871)
	at java.io.ObjectInputStream.readOrdinaryObject(ObjectInputStream.java:1753)
	at java.io.ObjectInputStream.readObject0(ObjectInputStream.java:1329)
	at java.io.ObjectInputStream.readObject(ObjectInputStream.java:351)
	at weblogic.common.internal.ChunkedObjectInputStream.readObject(ChunkedObjectInputStream.java:114)
	at weblogic.rjvm.MsgAbbrevInputStream.readObject(MsgAbbrevInputStream.java:111)
	at weblogic.rmi.internal.ObjectIO.readObject(ObjectIO.java:56)
	at weblogic.rjvm.ResponseImpl.unmarshalReturn(ResponseImpl.java:159)
	at weblogic.rmi.cluster.ReplicaAwareRemoteRef.invoke(ReplicaAwareRemoteRef.java:285)
	at weblogic.rmi.cluster.ReplicaAwareRemoteRef.invoke(ReplicaAwareRemoteRef.java:244)
	at weblogic.jdbc.common.internal.RmiDataSource_814_WLStub.getConnection(Unknown Source)
	at com.xjf.test.TestMain.main(TestMain.java:82)
Exception in thread "main" java.lang.reflect.InvocationTargetException
	at sun.reflect.NativeConstructorAccessorImpl.newInstance0(Native Method)
	at sun.reflect.NativeConstructorAccessorImpl.newInstance(NativeConstructorAccessorImpl.java:39)
	at sun.reflect.DelegatingConstructorAccessorImpl.newInstance(DelegatingConstructorAccessorImpl.java:27)
	at java.lang.reflect.Constructor.newInstance(Constructor.java:513)
	at weblogic.rmi.internal.StubGenerator.generateStub(StubGenerator.java:805)
	at weblogic.rmi.internal.StubGenerator.generateStub(StubGenerator.java:790)
	at weblogic.rmi.extensions.StubFactory.getStub(StubFactory.java:79)
	at weblogic.rmi.utils.io.RemoteObjectReplacer.resolveObject(RemoteObjectReplacer.java:222)
	at weblogic.rmi.internal.StubInfo.readResolve(StubInfo.java:142)
	at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
	at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39)
	at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
	at java.lang.reflect.Method.invoke(Method.java:597)
	at java.io.ObjectStreamClass.invokeReadResolve(ObjectStreamClass.java:1061)
	at java.io.ObjectInputStream.readOrdinaryObject(ObjectInputStream.java:1762)
	at java.io.ObjectInputStream.readObject0(ObjectInputStream.java:1329)
	at java.io.ObjectInputStream.defaultReadFields(ObjectInputStream.java:1947)
	at java.io.ObjectInputStream.readSerialData(ObjectInputStream.java:1871)
	at java.io.ObjectInputStream.readOrdinaryObject(ObjectInputStream.java:1753)
	at java.io.ObjectInputStream.readObject0(ObjectInputStream.java:1329)
	at java.io.ObjectInputStream.readObject(ObjectInputStream.java:351)
	at weblogic.common.internal.ChunkedObjectInputStream.readObject(ChunkedObjectInputStream.java:114)
	at weblogic.rjvm.MsgAbbrevInputStream.readObject(MsgAbbrevInputStream.java:111)
	at weblogic.rmi.internal.ObjectIO.readObject(ObjectIO.java:56)
	at weblogic.rjvm.ResponseImpl.unmarshalReturn(ResponseImpl.java:159)
	at weblogic.rmi.cluster.ReplicaAwareRemoteRef.invoke(ReplicaAwareRemoteRef.java:285)
	at weblogic.rmi.cluster.ReplicaAwareRemoteRef.invoke(ReplicaAwareRemoteRef.java:244)
	at weblogic.jdbc.common.internal.RmiDataSource_814_WLStub.getConnection(Unknown Source)
	at com.xjf.test.TestMain.main(TestMain.java:82)
Caused by: java.lang.IllegalAccessError: tried to access method weblogic.rmi.internal.StubInfo.getInterfaces(Ljava/lang/ClassLoader;)[Ljava/lang/Class; from class weblogic.jdbc.rmi.internal.ConnectionImpl_weblogic_jdbc_wrapper_PoolConnection_com_informix_jdbc_IfxSqliConnect_814_WLStub
	at weblogic.jdbc.rmi.internal.ConnectionImpl_weblogic_jdbc_wrapper_PoolConnection_com_informix_jdbc_IfxSqliConnect_814_WLStub.ensureInitialized(Unknown Source)
	at weblogic.jdbc.rmi.internal.ConnectionImpl_weblogic_jdbc_wrapper_PoolConnection_com_informix_jdbc_IfxSqliConnect_814_WLStub.<init>(Unknown Source)
	... 29 more
--------------- nested within: ------------------
weblogic.utils.AssertionError: ***** ASSERTION FAILED *****[ Failed to generate class for weblogic.jdbc.rmi.internal.ConnectionImpl_weblogic_jdbc_wrapper_PoolConnection_com_informix_jdbc_IfxSqliConnect_814_WLStub ] - with nested exception:
[java.lang.reflect.InvocationTargetException - with target exception:
[java.lang.IllegalAccessError: tried to access method weblogic.rmi.internal.StubInfo.getInterfaces(Ljava/lang/ClassLoader;)[Ljava/lang/Class; from class weblogic.jdbc.rmi.internal.ConnectionImpl_weblogic_jdbc_wrapper_PoolConnection_com_informix_jdbc_IfxSqliConnect_814_WLStub]]
	at weblogic.rmi.internal.StubGenerator.generateStub(StubGenerator.java:807)
	at weblogic.rmi.internal.StubGenerator.generateStub(StubGenerator.java:790)
	at weblogic.rmi.extensions.StubFactory.getStub(StubFactory.java:79)
	at weblogic.rmi.utils.io.RemoteObjectReplacer.resolveObject(RemoteObjectReplacer.java:222)
	at weblogic.rmi.internal.StubInfo.readResolve(StubInfo.java:142)
	at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
	at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39)
	at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
	at java.lang.reflect.Method.invoke(Method.java:597)
	at java.io.ObjectStreamClass.invokeReadResolve(ObjectStreamClass.java:1061)
	at java.io.ObjectInputStream.readOrdinaryObject(ObjectInputStream.java:1762)
	at java.io.ObjectInputStream.readObject0(ObjectInputStream.java:1329)
	at java.io.ObjectInputStream.defaultReadFields(ObjectInputStream.java:1947)
	at java.io.ObjectInputStream.readSerialData(ObjectInputStream.java:1871)
	at java.io.ObjectInputStream.readOrdinaryObject(ObjectInputStream.java:1753)
	at java.io.ObjectInputStream.readObject0(ObjectInputStream.java:1329)
	at java.io.ObjectInputStream.readObject(ObjectInputStream.java:351)
	at weblogic.common.internal.ChunkedObjectInputStream.readObject(ChunkedObjectInputStream.java:114)
	at weblogic.rjvm.MsgAbbrevInputStream.readObject(MsgAbbrevInputStream.java:111)
	at weblogic.rmi.internal.ObjectIO.readObject(ObjectIO.java:56)
	at weblogic.rjvm.ResponseImpl.unmarshalReturn(ResponseImpl.java:159)
	at weblogic.rmi.cluster.ReplicaAwareRemoteRef.invoke(ReplicaAwareRemoteRef.java:285)
	at weblogic.rmi.cluster.ReplicaAwareRemoteRef.invoke(ReplicaAwareRemoteRef.java:244)
	at weblogic.jdbc.common.internal.RmiDataSource_814_WLStub.getConnection(Unknown Source)
	at com.xjf.test.TestMain.main(TestMain.java:82)



傻眼了,从来没见过这种错误。网上搜这个错误都是得到跟这不沾什么边的结果。
结果在试了N个关键字后,搜到一个跟:java.lang.IllegalAccessError有关的页面,但不是我这种错误。说是在使用ant时遇到这个问题,是由于jar包的版本不对,更换了版本后就正常了。
抱着试一试的心态,我从本机WebLogic中把weblogic.jar复制出来,加入到工程中,结果果然就是这个包的问题。换个包就没事了。这个问题浪费了我不少时间,所以在这里把解决方法记录在此,希望可以帮到后面遇到这个问题的人。
分享到:
评论
1 楼 zw1502071 2011-08-16  
请问上面的java代码写到哪里啊?在第二个解决方案中指的非web工程指的是普通的java project吗?具体怎么才能部署到WebLogic上啊,多谢啊

相关推荐

    weblogic8.1应用部署.docx

    数据源是连接数据库的关键组件之一,对于Web应用程序来说至关重要。在Weblogic中配置数据源分为两个步骤: 1. **配置数据源连接池**: - 登录Weblogic控制台,定位至【Connection Pools】页面。 - 点击...

    weblogic数据源配置与使用方法[参照].pdf

    WebLogic数据源配置与使用是管理应用程序与数据库交互的关键步骤,特别是在企业级Java应用中。WebLogic Server是Oracle公司提供的一个强大的Java EE应用服务器,它提供了对JDBC(Java Database Connectivity)数据源...

    weblogic9.2的配置及部署

    数据源是 Web 应用程序访问数据库的关键组件。在 WebLogic 9.2 中配置数据源通常涉及以下几个步骤: - **创建 JNDI 名称**:为数据源定义一个 JNDI 名称,以便应用程序可以引用它。 - **选择数据库驱动**:根据所...

    WebLogic应用部署

    WebLogic Server(简称WLS)提供了丰富的功能,包括应用部署、集群管理、安全管理、性能监控等,使得开发者能够轻松地运行和管理复杂的分布式应用程序。 在WebLogic上部署Web应用的详细步骤如下: 1. **环境准备**...

    Weblogic使用手册.

    ### WebLogic 使用手册知识点详解 #### 一、WebLogic服务器...这些知识点覆盖了WebLogic服务器的管理、配置、监控、安全以及应用程序部署等多个方面,旨在帮助用户全面理解和掌握WebLogic服务器的使用方法和技术要点。

    weblogic部署图解.rar

    5. **Data Source**:数据源是连接到数据库的桥梁,WebLogic Server管理这些数据源,确保应用程序能安全高效地访问数据库。 6. **JMS(Java Message Service)**:WebLogic支持JMS,允许应用进行异步通信和消息传递...

    在weblogic 部署出现的 错误

    在WebLogic服务器上部署应用程序时,可能会遇到各种错误,这些错误可能是由于配置问题、环境问题或是应用程序本身的问题导致的。本篇文章将针对“在WebLogic部署出现的错误”这一主题,详细探讨可能遇到的问题及解决...

    1.1、WebLogic jdk1.8 weblogic(12)的下载与安装1

    WebLogic完全由Java语言编写,支持最新的Java EE标准,如JSP、Servlet、EJB等,为开发、集成、部署和管理大型分布式Web应用、网络应用和数据库应用提供了全面的解决方案。 WebLogic的强大之处在于它是一个完整的...

    weblogic搭建

    如果在Linux系统下使用Firefox浏览器访问WebLogic控制台时遇到问题,比如找不到Java Applet插件的情况,需要检查Java环境是否正确安装,并且确保浏览器已正确配置。 #### 总结 本文详细介绍了WebLogic的安装、域的...

    Weblogic使用手册大全详解_中文_.pdf 带目录,可复制

    - 在启动WebLogic服务器时可能会遇到错误消息,需要根据错误提示排查问题。 - **启动WEBLOGIC管理服务器** - 有多种方式启动管理服务器,包括从开始菜单、作为Windows服务、命令行等方式。 - **WebLogic服务器...

    weblogic9.1下配置JNDI数据源

    1. **404错误**:当应用程序无法被访问时,首先检查应用程序是否已被正确部署到指定的`autodeploy`目录下;其次,确保WebLogic控制台中显示的应用状态为“运行”。 - 解决方法:检查`autodeploy`目录下的文件是否...

    WebLogic的安装与使用

    - 当使用基于 Hibernate 的项目时,可能会遇到与 WebLogic 集成时的问题。 - 例如:在解释 HQL 时出现 `ClassNotFoundException` 异常。 - 解决方案包括: - 将 `antlr-2.7.6.jar` 文件拷贝到 `WL_HOME/server/...

    WebLogic下安装部署ETP应用

    对于本示例中的 ETP 应用而言,由于它使用的是自带的数据库连接池,因此无需额外配置 WebLogic 数据源。 #### 五、部署 Web 应用 部署 Web 应用主要分为两种方式:使用 WAR 包部署和使用项目文件部署。 ##### 5.1...

    Linux下weblogic安装手册

    这包括获取WebLogic Server的安装包,通常是一个zip或tar.gz格式的文件,以及可能需要的其他依赖软件,如Apache Ant(用于构建和自动化任务),Apache HTTPD(作为Web服务器),Oracle客户端(用于数据库连接),...

    Weblogic管理指南

    Web应用与集群的关系是指如何在集群环境中部署和管理Web应用程序。 - **指定缺省的Web应用** 缺省的Web应用是指在没有明确指定应用的情况下,WebLogic服务器默认加载的应用程序。 - **配置虚拟主机** 虚拟...

    Weblogic使用手册大全详解(中文).pdf

    - **监控JDBC连接池**:JDBC连接池管理数据库连接,确保高效地复用数据库连接资源。 #### 二十一、管理控制台的MONITORING页面一览表 - **管理控制台的MONITORING页面一览表**:提供了丰富的监控指标,帮助管理员...

    方正中间件FIX ES2007快速开发平台配置问题解决方案

    - **访问表单权限问题**: 当访问Web应用并尝试打开表单时,可能会遇到权限被拒绝的问题。这通常是因为Web程序的`Form`文件夹目录权限不足。解决方法是赋予`Form`文件夹给`Everyone`或`Users`账户完全控制权限。 - **...

    weblogic 的安装与配置及使用适合初学的人

    WebLogic Server是由Oracle公司提供的一个企业级Java应用服务器,它为构建、部署和管理Java EE(Enterprise Edition)应用程序提供了全面的平台。对于初学者来说,理解WebLogic的安装、配置和使用是进入Java EE开发...

Global site tag (gtag.js) - Google Analytics