在本文中,我们将为您详细介绍如何访问Weblogic10.3.6中定义的JNDI数据源的相关知识,并且为您解答关于weblogic怎么访问的疑问,此外,我们还会提供一些关于hibernate连接web
在本文中,我们将为您详细介绍如何访问Weblogic 10.3.6中定义的JNDI数据源的相关知识,并且为您解答关于weblogic怎么访问的疑问,此外,我们还会提供一些关于hibernate 连接 weblogic JNDI 配置、java 使用tomcat的JNDI数据源、JBOSS的JNDI数据源配置、root启动WebLogic后,webLogic用户无法启动WebLogic的有用信息。
本文目录一览:- 如何访问Weblogic 10.3.6中定义的JNDI数据源(weblogic怎么访问)
- hibernate 连接 weblogic JNDI 配置
- java 使用tomcat的JNDI数据源
- JBOSS的JNDI数据源配置
- root启动WebLogic后,webLogic用户无法启动WebLogic
如何访问Weblogic 10.3.6中定义的JNDI数据源(weblogic怎么访问)
我已经使用Weblogic控制台创建了JNDI数据源,但无法从Web应用程序访问该对象。以下是详细信息
在weblogic 10.3.6中,我为数据源指定了JNDI名称: jdbc/mydb
为了从Web应用程序获得数据库连接,我已经在Web应用程序中编写了以下代码:
Context initContext = new InitialContext();DataSource ds = (DataSource)initContext.lookup("java:/comp/env/jdbc/mydb");jndiConnection = ds.getConnection();
之前我使用Tomcat作为服务器,当我在文件中配置资源详细信息时能够获得数据库连接tomcat/conf/server.xml,但是当我开始使用weblogic服务器时,出现以下错误:
Cannot establish DB connection to JNDI:java:/comp/env/jdbc/mydb While trying to look up /comp/env/jdbc/mydb in /app/webapp/sample.war/1811641702. caused by: javax.naming.NameNotFoundException: While trying to look up /comp/env/jdbc/mydb in /app/webapp/sample.war/1811641702.; remaining name ''/comp/env/jdbc/mydb''
我尝试了此链接中提到的选项:如何在WebLogic上查找JNDI资源?但我仍然面临问题。
请让我知道我在哪里做错了,访问JNDI对象的过程是什么。
答案1
小编典典引用该帖子后:Tomcat vs Weblogic JNDI查找我已经修改了我的代码。
在Web应用程序的Java程序中使用以下代码解决了我的问题:
Context initContext = new InitialContext();DataSource ds = (DataSource)initContext.lookup("jdbc/mydb");jndiConnection = ds.getConnection();
同样在weblogic控制台中,我已将JNDI对象添加到部署Web应用程序的管理服务器(在“服务器”选项下)。
hibernate 连接 weblogic JNDI 配置
hibernate 连接 weblogic JNDI 配置
1. 在 weblogic 服务器安装路径下找到两个客户端依赖包 wlfullclient.jar. wlfullclient.jar,并下载下来引入工程当中。
2. 配置 hibernate 配置文件 hibernate.cfg.xml
<hibernate-configuration>
<session-factory>
<!-- Database connection settings 数据库的配置 -->
<property name="connection.driver_class">oracle.jdbc.driver.OracleDriver</property>
<!--weblogic jndi 地址 -->
<property name="connection.datasource">jdbc/dev/dev</property>
<property name="connection.provider_class">org.hibernate.connection.DatasourceConnectionProvider</property>
<property name="jndi.class">weblogic.jndi.WLInitialContextFactory</property>
<property name="jndi.url">t3://10.2.19.4:7001</property> <!--weblogic 服务器地址 -->
<property name="connection.username">weblogic</property> <!-- 访问 weblogic 服务器用户名 -->
<property name="connection.password">welcome1</property> <!-- 访问 weblogic 服务器密码 -->
<!-- SQL dialect 数据库方言,这里我们才爱用 -->
<property name="dialect">org.hibernate.dialect.Oracle10gDialect</property>
<property name="hibernate.connection.autocommit">true</property>
<!-- Enable Hibernate''s automatic session context management 新功能,暂不使用 -->
<!-- <property name="current_session_context_class">thread</property> -->
<!-- Disable the second-level cache 二级缓存,放置不管 -->
<!-- <property name="cache.provider_class">org.hibernate.cache.NoCacheProvider</property> -->
<!-- Echo all executed SQL to stdout 设置 show_sql 为 true 表示让 hibernate 将生成 sql 语句在控制台打印出来 -->
<property name="show_sql">true</property>
<!-- 格式化 SQL -->
<property name="format_sql">true</property>
<!-- <property name="hibernate.query.factory_class">org.hibernate.hql.ast.ASTQueryTranslatorFactory</property> -->
<!-- Drop and re-create the database schema on startup 是否让 hibernate 自动为我们创建表 -->
<!-- <property name="hbm2ddl.auto">update</property> -->
<!-- 这里是将需要 mapping 的类文件进行再次声明 -->
<mapping/>
以上配置方式是单独用 hibernate 方式访问 weblogic JNDI ,运行成功并部署生产环境。
java 使用tomcat的JNDI数据源
终于有机会写一些比较基础的代码了,终于有机会在tomcat上配置jndi数据源了,但是这是一个费时间的过程。这里把这个过程记录如下。
目的:tomcat提供数据源,java代码中通过jdbc获取jndi,操作数据库。
步骤:
1、讲数据库的驱动jar放到tomcat的lib目录下,%TOMCAT_HOME%\lib
2、修改%TOMCAT_HOME%\conf目录下配置文件server.xml,增加如下内容:
<Context docBase="/securityProxyWeb" path="/securityProxyWeb" reloadable="true" debug="5" crossContext="true">
<Resource name="jdbc/exoa" auth="Container" type="javax.sql.DataSource" maxIdle="10" initialSize="10" maxWait="10000" maxActive="20"
driverClassName="oracle.jdbc.driver.OracleDriver" url="jdbc:oracle:thin:@127.0.0.1:1521:exoa" username="exoa" password="exoaexoa" />
</Context>
注意上面的代码放在Host节点下面,如果读者要用的话,请修改具体的参数,username\password\url
3、web功能里面要使用tomcat的数据源,需在web.xml里面增加引用:
<resource-ref id="ResourceRef_1401952150839">
<res-ref-name>jdbc/exoa</res-ref-name>
<res-type>javax.sql.DataSource</res-type>
<res-auth>Container</res-auth>
<res-sharing-scope>Shareable</res-sharing-scope>
</resource-ref>
4、获取Connection的代码如下:
/**
* 获取数据库连接
*
* @return
* @throws Exception
*/
public static Connection getConnection() throws Exception {
Context context = null;
DataSource dataSource = null;
try {
context = new InitialContext();
try{
//TOMCAT JDK1.6
dataSource = (DataSource) context.lookup("java:comp/env/jdbc/exoa");
}catch(Exception E){
E.printStackTrace();
}
if(dataSource == null){
//WAS JDK1.4
dataSource = (DataSource) context.lookup("jdbc/exoa");
}
if (dataSource == null) {
System.err.println("打开数据库连接出错!!!");
return null;
}
return dataSource.getConnection();
} catch (Exception e) {
e.printStackTrace();
return null;
}
}
JBOSS的JNDI数据源配置
1、mssql-ds.xml的配置
<datasources>
<local-tx-datasource>
<jndi-name>MSsqlDS</jndi-name>
<use-java-context>false</use-java-context>
<connection-url>jdbc:microsoft:sqlserver://localhost:1433;DatabaseName=CHDPSDB</connection-url>
<driver-class>com.microsoft.jdbc.sqlserver.sqlServerDriver</driver-class>
<user-name>sa</user-name>
<password>xiaoquan</password>
<Metadata>
<type-mapping>MS sqlSERVER2000</type-mapping>
</Metadata>
</local-tx-datasource>
</datasources>
2、实例调用
import javax.naming.Context;
import javax.naming.InitialContext;
import javax.naming.NamingException;
import javax.sql.DataSource;
import java.util.Properties;
import java.util.Hashtable;
import java.sql.*;
public class DBCon {
public static void main(String[] args) throws NamingException,sqlException {
Properties props = new Properties();
props.setProperty("java.naming.factory.initial",
"org.jnp.interfaces.NamingContextFactory");
props.setProperty("java.naming.provider.url","localhost:1099");
props.setProperty("java.naming.factory.url.pkgs","org.jboss.naming");
InitialContext ctx = new InitialContext(props);
DataSource ds = (DataSource) ctx.lookup("MSsqlDS");
Connection conn = ds.getConnection();
Statement stat = conn.createStatement();
String sql = "select * from chd_staff";
ResultSet rs = stat.executeQuery(sql);
while (rs.next()) {
System.out.println(rs.getString(1));
}
rs.close();
stat.close();
conn.close();
System.out.print("End");
}
}
3、异常处理
如出现以下异常:
Cannot instantiate class: org.jnp.interfaces.NamingContextFactory [Root exception is java.lang.classNotFoundException: org.jnp.interfaces.NamingContextFactory]
请查看是否将JBOSS_Home下client文件夹中的所有jar包都导入到了项目工程中。
实际上,在classpath內,加上%JBoss Home%clientjbossall-client.jar就可以了
root启动WebLogic后,webLogic用户无法启动WebLogic
在用root用户启动weblogic的时候会在所在域里产生root权限的文件,或者用root权限的文件覆盖了部分原来存在的weblogic用户所属 文件,当再次切换到weblogic用户后,启动的时候就会出现权限问题,所以报告上面的错误。这个错误就是因为EmbeddedLDAP.tran文件 的权限变成了root的。
解决方法:
用root用户登录,将EmbeddedLDAP.log赋权给weblogic用户。但是还有一系列的log文件需要赋权。索性把domains下的所有应用全部赋权。
[root@mnhj02 ~]# chown -R weblogic:weblogic domains_dir
前一个weblogic是用户,后一个weblogic是用户所属组,domains_dir是文件所在的路径。
今天关于如何访问Weblogic 10.3.6中定义的JNDI数据源和weblogic怎么访问的介绍到此结束,谢谢您的阅读,有关hibernate 连接 weblogic JNDI 配置、java 使用tomcat的JNDI数据源、JBOSS的JNDI数据源配置、root启动WebLogic后,webLogic用户无法启动WebLogic等更多相关知识的信息可以在本站进行查询。
本文标签: