蒋德的JAVA备忘录

JAVA备忘录

  BlogJava :: 首页 :: 新随笔 :: 联系 :: 聚合  :: 管理 ::
  14 随笔 :: 4 文章 :: 5 评论 :: 0 Trackbacks

2008年12月17日 #

weblogic10.3 这个应用服务器是oracle 收购Bean 公司后新出的版本.今天试用下,发现不错.将JNDI的配置过程一一记录,
1: 启动weblogic 10.3 采用默认密码进入
2:在JDBC-DATASOURCE 中假建一个应用数据源.
3:在 Configuration-->Connection Pool-->Advanced 中的  一定要沟上,不然会测试通不过
4:填写测试的表名    等信息

5:编写测试的JSP文件

<!doctype html public "-//w3c//dtd html 4.0 transitional//en"   "http://www.w3.org/TR/REC-html40/strict.dtd">
<%@ page import="java.sql.*"%>
<%@ page import="javax.sql.*"%>
<%@ page import="javax.naming.*"%>
<%@ page session="false"%>
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=gb2312">
<title>Test JNDI</title>
</head>
<body>
    
<%
    out.print(
"  Test Jndi Begin !!    ");
    DataSource ds 
= null;
    
try {
        InitialContext ctx 
= new InitialContext();
        ds 
= (DataSource) ctx.lookup("jdbc/mysql");
        Connection conn 
= ds.getConnection();
        Statement stmt 
= conn.createStatement();
        String strSql 
= " select * from tb_adminuser";
        ResultSet rs 
= stmt.executeQuery(strSql);
        
while (rs.next()) {
            out.println(rs.getString(
4));
        }

        out.print(
"Test is over");
    }
catch (Exception ex) {
        out.print(
"ERROR:" + ex.getMessage());
        ex.printStackTrace();
    }

%>
</body>

</html>

6:编写 JUNIT
package com.XXXXXX.framework.datasource;

import java.sql.Connection;
import java.sql.ResultSet;
import java.sql.Statement;
import java.util.Hashtable;

import javax.naming.Context;
import javax.naming.InitialContext;
import javax.sql.DataSource;

import junit.framework.TestCase;

public class TestJndi extends  TestCase{

    
    
public void testJndi() throws Exception{
        Hashtable ht 
= new Hashtable();          
        ht.put(Context.INITIAL_CONTEXT_FACTORY,
"weblogic.jndi.WLInitialContextFactory");
        ht.put(Context.PROVIDER_URL, 
"t3://localhost:7001");
        Context initial 
= new InitialContext(ht);
        DataSource ds 
= (DataSource) initial.lookup("jdbc/mysql");
        Connection connect 
= ds.getConnection();

        Statement stmt 
= connect.createStatement();   
        String strSql 
= " select * from tb_adminuser";   
       
        ResultSet rs 
= stmt.executeQuery(strSql);   
        
while(rs.next()){   
            System.out.println(rs.getString(
2));
          }
  

    }



}

其中在编写JUNIT 的时候,有一个插曲.我在网上看到别人的代码是用t3://localhost:7007

我也照COPY,结果出现错误如下:
javax.naming.CommunicationException [Root exception is java.net.ConnectException: t3://localhost:7007: Destination unreachable; nested exception is: 
    java.net.ConnectException: Connection refused: connect; No available router to destination]
    at weblogic.jndi.internal.ExceptionTranslator.toNamingException(ExceptionTranslator.java:
40)
    at weblogic.jndi.WLInitialContextFactoryDelegate.toNamingException(WLInitialContextFactoryDelegate.java:
783)
    at weblogic.jndi.WLInitialContextFactoryDelegate.getInitialContext(WLInitialContextFactoryDelegate.java:
367)
    at weblogic.jndi.Environment.getContext(Environment.java:
315)
    at weblogic.jndi.Environment.getContext(Environment.java:
285)
    at weblogic.jndi.WLInitialContextFactory.getInitialContext(WLInitialContextFactory.java:
117)
    at javax.naming.spi.NamingManager.getInitialContext(NamingManager.java:
667)
    at javax.naming.InitialContext.getDefaultInitCtx(InitialContext.java:
288)
    at javax.naming.InitialContext.init(InitialContext.java:
223)
    at javax.naming.InitialContext.
<init>(InitialContext.java:197)
    at com.etong.framework.datasource.TestJndi.testJndi(TestJndi.java:
21)
    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 junit.framework.TestCase.runTest(TestCase.java:
168)
    at junit.framework.TestCase.runBare(TestCase.java:
134)
    at junit.framework.TestResult$
1.protect(TestResult.java:110)
    at junit.framework.TestResult.runProtected(TestResult.java:
128)
    at junit.framework.TestResult.run(TestResult.java:
113)
    at junit.framework.TestCase.run(TestCase.java:
124)
    at junit.framework.TestSuite.runTest(TestSuite.java:
232)
    at junit.framework.TestSuite.run(TestSuite.java:
227)
    at org.junit.internal.runners.OldTestClassRunner.run(OldTestClassRunner.java:
76)
    at org.eclipse.jdt.internal.junit4.runner.JUnit4TestReference.run(JUnit4TestReference.java:
38)
    at org.eclipse.jdt.internal.junit.runner.TestExecution.run(TestExecution.java:
38)
    at org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.runTests(RemoteTestRunner.java:
460)
    at org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.runTests(RemoteTestRunner.java:
673)
    at org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.run(RemoteTestRunner.java:
386)
    at org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.main(RemoteTestRunner.java:
196)
Caused by: java.net.ConnectException: t3:
//localhost:7007: Destination unreachable; nested exception is: 
    java.net.ConnectException: Connection refused: connect; No available router to destination
    at weblogic.rjvm.RJVMFinder.findOrCreate(RJVMFinder.java:
203)
    at weblogic.rjvm.ServerURL.findOrCreateRJVM(ServerURL.java:
153)
    at weblogic.jndi.WLInitialContextFactoryDelegate.getInitialContext(WLInitialContextFactoryDelegate.java:
352)
     
27 more
Caused by: java.rmi.ConnectException: Destination unreachable; nested exception is: 
    java.net.ConnectException: Connection refused: connect; No available router to destination
    at weblogic.rjvm.ConnectionManager.bootstrap(ConnectionManager.java:
464)
    at weblogic.rjvm.ConnectionManager.bootstrap(ConnectionManager.java:
315)
    at weblogic.rjvm.RJVMManager.findOrCreateRemoteInternal(RJVMManager.java:
251)
    at weblogic.rjvm.RJVMManager.findOrCreate(RJVMManager.java:
194)
    at weblogic.rjvm.RJVMFinder.findOrCreateRemoteServer(RJVMFinder.java:
225)
    at weblogic.rjvm.RJVMFinder.findOrCreate(RJVMFinder.java:
188)
     
29 more


换成 t3://localhost:7001
测试成功.看来不懂就到网上乱COPY代码,还是不行的

 

我已经在配置文件里配置了context.java.naming.factory.initial,而在这里还提示这个错误
关键看这里

Error initializing JtaTransactionConfig while looking up UserTransaction (javax.transaction.UserTransaction). Cause: javax.naming.NoInitialContextException: Need to specify class name in environment or system property, or as an applet parameter, or in an application resource file: java.naming.factory.initial


jvm里加上一个参数,测试一下

-Djava.naming.factory.initial=weblogic.jndi.WLInitialContextFactory


运行通过

这个参数在:右键项目--Run as --Open Run Dialog--ArgumentsVM arguments中添加即可


posted @ 2009-08-23 10:41 蒋德 阅读(5176) | 评论 (1)编辑 收藏

一直用Xdoclet 来管理项目的配置文件,今天用Myeclipse 建新了一个工程,使用Myeclipse 的Strtus1.2的相关包,发现生成相关的配置文件中<action-mappings> 部分竟然是空白的,百思不得其解,反复测试后,发现取消Myeclipse 的Strtus1.2的相关包,使用以前的Struts .jar又可以生成.
 记录下,日后再找到原因

到google 里一找,发现自己几年前还记录了这个,2009年我又遇到了这个问题
发现,在xdoclet 里生成struts的配置文件时,一定要在lib下面存在
struts.jar
commons-collections-3.0.jar
commons-digester.jar
commons-logging-1.0.4.jar
否则就可能不生成,也不出错.

莫名其妙的.

posted @ 2008-12-17 20:54 蒋德 阅读(142) | 评论 (0)编辑 收藏