看看xml部署文件的pool名字有没有错误?
还有服务器有没有建立Account连接池
还有服务器有没有建立Account连接池
解决方案 »
- java初学者的困惑,求高手帮助!
- 100分 !!! Sun App Server<Abnormal subprocess termination >
- 问一个比较有用的问题??
- fastjson的JSONObject的问题
- 刚看了一个JAVA的print方法,对立面的c&0xff00不怎么理解。
- 关于WebService的参数类型问题,请帮忙
- 请问哪里有这两本书的电子版本和源代码下?
- 文章分享到新浪微博怎么做?
- 求java大神帮忙,java使用MAVEN编译时提示找不到类,但是类是属于rt.jar的
- 关于阿里云OSS大图预览和批量下载的问题,求助各位大佬
- 我需要com和ejb之间通讯
- 哪位朋友有EJB的中文文档?
那么在DataSource ds = (DataSource) ic.lookup(dbName);
这一步就应该报告javax.naming.NameNotFoundException: ejb contacts; remaining name ’java:comp/env/jdbc/Account‘
jdbcDataSource.0.name=jdbc/Account
jdbcDataSource.0.url=jdbc:freetds:sqlserver://localhost:1433/EjbTest;TDS=7.0
jdbcDataSource.1.name=jdbc/Cloudscape
jdbcDataSource.1.url=jdbc:cloudscape:rmi:CloudscapeDB;create=true
jdbcDataSource.2.name=jdbc/DB1
jdbcDataSource.2.url=jdbc:cloudscape:rmi:CloudscapeDB;create=true
jdbcDataSource.3.name=jdbc/DB2
jdbcDataSource.3.url=jdbc:cloudscape:rmi:CloudscapeDB;create=true
jdbcDataSource.4.name=jdbc/EstoreDB
jdbcDataSource.4.url=jdbc:cloudscape:rmi:CloudscapeDB;create=true
jdbcDataSource.5.name=jdbc/InventoryDB
jdbcDataSource.5.url=jdbc:cloudscape:rmi:CloudscapeDB;create=true
jdbcDriver.0.name=COM.cloudscape.core.RmiJdbcDriver
jdbcDriver.1.name=com.internetcds.jdbc.tds.Driver
jdbcXADataSource.0.name=jdbc/XACloudscape
jdbcXADataSource.0.classname=COM.cloudscape.core.RemoteXaDataSource
jdbcXADataSource.0.dbpassword=
jdbcXADataSource.0.dbuser=
jdbcXADataSource.0.prop.createDatabase=create
jdbcXADataSource.0.prop.databaseName=CloudscapeDB
jmsCnxFactory.0.name=QueueConnectionFactory
jmsCnxFactory.0.isQueue=true
jmsCnxFactory.1.name=TopicConnectionFactory
jmsCnxFactory.1.isQueue=false
jmsCnxFactory.2.name=jms/QueueConnectionFactory
jmsCnxFactory.2.isQueue=true
jmsCnxFactory.3.name=jms/TopicConnectionFactory
jmsCnxFactory.3.isQueue=false
jmsDestination.0.name=jms/Queue
jmsDestination.0.isQueue=true
jmsDestination.1.name=jms/Topic
jmsDestination.1.isQueue=false我的xml部署文件如下:ejb-jar.xml<?xml version="1.0" encoding="GBK"?><!DOCTYPE ejb-jar PUBLIC '-//Sun Microsystems, Inc.//DTD Enterprise JavaBeans 2.0//EN' 'http://java.sun.com/dtd/ejb-jar_2_0.dtd'><ejb-jar>
<description>no description</description>
<display-name>accountEjb</display-name>
<enterprise-beans>
<session>
<description>no description</description>
<display-name>accountEjb</display-name>
<ejb-name>accountEjb</ejb-name>
<home>accountHome</home>
<remote>accountRemote</remote>
<ejb-class>accountEjb</ejb-class>
<session-type>Stateful</session-type>
<transaction-type>Bean</transaction-type>
<security-identity>
<description></description>
<use-caller-identity></use-caller-identity>
</security-identity>
<resource-ref>
<res-ref-name>jdbc/Account</res-ref-name>
<res-type>javax.sql.DataSource</res-type>
<res-auth>Container</res-auth>
<res-sharing-scope>Shareable</res-sharing-scope>
</resource-ref>
</session>
</enterprise-beans>
</ejb-jar>
sun-j2ee-ri.xml如下:
<?xml version="1.0" encoding="GBK"?><j2ee-ri-specific-information>
<server-name></server-name>
<rolemapping />
<web>
<module-name>war-ic.war</module-name>
<context-root>BisheTest</context-root>
<ejb-ref>
<ejb-ref-name>ejb/accountEjb</ejb-ref-name>
<jndi-name>ejb/accountEjb</jndi-name>
<use-ssl>false</use-ssl>
<principal>
<name></name>
</principal>
</ejb-ref>
</web>
<enterprise-beans>
<module-name>ejb-jar-ic.jar</module-name>
<unique-id>0</unique-id>
<ejb>
<ejb-name>accountEjb</ejb-name>
<jndi-name>ejb/accountEjb</jndi-name>
<ior-security-config>
<transport-config>
<integrity>supported</integrity>
<confidentiality>supported</confidentiality>
<establish-trust-in-target>supported</establish-trust-in-target>
<establish-trust-in-client>supported</establish-trust-in-client>
</transport-config>
<as-context>
<auth-method>username_password</auth-method>
<realm>default</realm>
<required>true</required>
</as-context>
<sas-context>
<caller-propagation>supported</caller-propagation>
</sas-context>
</ior-security-config>
<resource-ref>
<res-ref-name>jdbc/Account</res-ref-name>
<jndi-name>jdbc/Account</jndi-name>
<default-resource-principal>
<name>dbtest</name>
<password>mytest</password>
</default-resource-principal>
</resource-ref>
</ejb>
</enterprise-beans>
</j2ee-ri-specific-information>
at accountEjb.ejbCreate(accountEjb.java:77)
at accountHomeImpl.create(accountHomeImpl.java:19)
at _accountHomeImpl_Tie._invoke(Unknown Source)
at com.sun.corba.ee.internal.POA.GenericPOAServerSC.dispatchToServant(GenericPOAServerSC.java:512)
at com.sun.corba.ee.internal.POA.GenericPOAServerSC.internalDispatch(GenericPOAServerSC.java:177)
at com.sun.corba.ee.internal.POA.GenericPOAServerSC.dispatch(GenericPOAServerSC.java:106)
at com.sun.corba.ee.internal.iiop.ORB.process(ORB.java:264)
at com.sun.corba.ee.internal.iiop.LocalClientRequestImpl.invoke(LocalClientRequestImpl.java:99)
at com.sun.corba.ee.internal.POA.GenericPOAClientSC.invoke(GenericPOAClientSC.java:96)
at com.sun.corba.ee.internal.POA.GenericPOAClientSC.invoke(GenericPOAClientSC.java:135)
at org.omg.CORBA.portable.ObjectImpl._invoke(ObjectImpl.java:297)
at _accountHome_Stub.create(Unknown Source)
at Servlet.init(Servlet.java:31)
at javax.servlet.GenericServlet.init(GenericServlet.java:258)
at org.apache.catalina.core.StandardWrapper.load(StandardWrapper.java:755)
at org.apache.catalina.core.StandardWrapper.allocate(StandardWrapper.java:544)
at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:227)
at org.apache.catalina.core.ContainerBase.invoke(ContainerBase.java:977)
at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:196)
at org.apache.catalina.valves.ValveBase.invokeNext(ValveBase.java:242)
at org.apache.catalina.valves.CertificatesValve.invoke(CertificatesValve.java:242)
at org.apache.catalina.core.ContainerBase.invoke(ContainerBase.java:975)
at org.apache.catalina.core.StandardContext.invoke(StandardContext.java:2041)
at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:161)
at org.apache.catalina.valves.ValveBase.invokeNext(ValveBase.java:242)
at org.apache.catalina.authenticator.SingleSignOn.invoke(SingleSignOn.java:225)
at org.apache.catalina.core.ContainerBase.invoke(ContainerBase.java:975)
at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:159)
at org.apache.catalina.core.ContainerBase.invoke(ContainerBase.java:977)
at org.apache.catalina.connector.http.HttpProcessor.process(HttpProcessor.java:818)
at org.apache.catalina.connector.http.HttpProcessor.run(HttpProcessor.java:897)
at java.lang.Thread.run(Thread.java:484)
private void makeConnection() throws NamingException, SQLException
{
System.out.println("access database-makeConnection");
InitialContext ic = new InitialContext();
DataSource ds = (DataSource) ic.lookup(dbName);
System.out.println("look ok");
con = ds.getConnection();
}
重写一下试试看,比如:
private void makeConnection() throws NamingException, SQLException
{
System.out.println("access database-makeConnection");
Class.forName ("sun.jdbc.odbc.JdbcOdbcDriver");
con=DriverManager.getConnection (url,usr,pass);
}
当然forName中的参数是你用的JDBC驱动。
如果这样可以的话,我个人认为可能是调用连接池的时候出错,
因为第一次调用的时候连接池为空,所以 ds.getConnection()可能返回为空。
当连接池中有实例时,则ds.getConnection()给你返回一个连接!
1.set a ODBC Name as "MSDdata"
2.
String url="jdbc:odbc:MSData";
Class.forName ("sun.jdbc.odbc.JdbcOdbcDriver");
con=DriverManager.getConnection (url,usr,pass);
DataSource ds = (DataSource) ic.lookup(dbName);
System.out.println("look ok");
con = ds.getConnection();还有,你说的那种方法也不利于回头转换数据库?要是可以用你那种方法并能简单的转换数据库的话的,就好了!
可能是你的应用服务器有问题吧!
你在Apusic上试试看!通过JNDI调用肯定是可以的。
我们现在做的项目都是这样调用的,不过用的服务器是Apusic。
你到www.apusic.com的Java俱乐部上去问问看!那儿有很多EJB高手!
不管怎么说谢谢你了再看看吧--也许万一有一天发现了答案,别忘了告诉一声
[email protected]
DataSource ds = (DataSource) ic.lookup(dbName);
con = ds.getConnection();
我用的是freeTds
如果有别人碰到该问题---引以为柬