[英]Java Language - java.sql.SQLException: ORA-06550
美好的一天!
我正在使用JSF 2.1
Primefaces 3.5
Glassfish 3.2.1
public class UserListProvider extends DBConnectionPool{
private List sortList;
private String whereClause;
private List fieldList;
private void getUserList() {
List userList = new ArrayList();
UserBean users = null;
ResultSetMetaData rsmd = null;
try {
super.initializeConnection();
conn.setAutoCommit(false);
String sortString = createSortStmt();
super.cs = super.conn.prepareCall("{call ROCWEB.USERLIST_DATAPROV(?,?,?)}");
super.cs.setString(1, whereClause);
super.cs.setString(2, sortString);
super.cs.registerOutParameter(3, OracleTypes.CURSOR);
super.cs.execute();
super.rs = (ResultSet) super.cs.getObject(3);
//getting the columns
rsmd = super.rs.getMetaData();
setFieldList(new ArrayList());
for (int i = 0; i < rsmd.getColumnCount(); i++) {
getFieldList().add(rsmd.getColumnLabel(i + 1));
}
while (super.rs.next()) {
users = new UserBean();
users.setFirstName(rs.getString("firstname"));
users.setLastName(rs.getString("lastname"));
users.setPassword(rs.getString("password"));
users.setEmail(rs.getString("email"));
users.setUsername(rs.getString("username"));
users.setUsername(rs.getString("username"));
users.setUserId(rs.getLong("user_id"));
userList.add(users);
users = null;
}
conn.commit();
} catch (Exception ex) {
ex.printStackTrace();
try {
if (conn != null) {
conn.rollback();
}
} catch (SQLException sqle) {
System.out.println(sqle.getMessage());
}
} finally {
super.closeAll();
}
if (userList.isEmpty()) {
userList.add(new UserBean());
}
this.setList(userList);
}
}
public class DBConnectionPool extends BasePageBean {
public Connection conn;
public ResultSet rs;
public PreparedStatement ps;
public CallableStatement cs;
private String whereClause = "";
private String sortClause = "";
public void initializeConnection() {
try {
Context jdbcContext = new InitialContext();
DataSource ds = ((DataSource) jdbcContext.lookup("jdbc/rocjndi"));
DataSource dsCOP = ((DataSource) jdbcContext.lookup("jdbc/COP"));
if(this.conn != null){
this.closeAll();
}
this.conn = null;
this.conn = ds.getConnection();
this.conn =dsCOP.getConnection();
this.conn.setAutoCommit(false);
} catch (Exception e) {
e.printStackTrace();
System.out.println(this.getClass() + " - " + e.toString());
}
}
}
當使用上述方法(initializeConnection)使用glassfish應用服務器連接數據庫時。 我在下面收到此錯誤。 如果我使用的是一個數據源,則可以使用,但是我需要兩個數據源。 當在initializeConnection方法中使用兩個DataSource時,UserListProvider類在下面產生錯誤。
堆棧跟蹤;
SEVERE: java.sql.SQLException: ORA-06550: line 1, column 7:
PLS-00201: identifier 'ROCWEB.USERLIST_DATAPROV' must be declared
ORA-06550: line 1, column 7:
PL/SQL: Statement ignored
at oracle.jdbc.driver.DatabaseError.throwSqlException(DatabaseError.java:112)
at oracle.jdbc.driver.T4CTTIoer.processError(T4CTTIoer.java:331)
at oracle.jdbc.driver.T4CTTIoer.processError(T4CTTIoer.java:288)
at oracle.jdbc.driver.T4C8Oall.receive(T4C8Oall.java:743)
at oracle.jdbc.driver.T4CCallableStatement.doOall8(T4CCallableStatement.java:215)
at oracle.jdbc.driver.T4CCallableStatement.executeForRows(T4CCallableStatement.java:954)
at oracle.jdbc.driver.OracleStatement.doExecuteWithTimeout(OracleStatement.java:1168)
at oracle.jdbc.driver.OraclePreparedStatement.executeInternal(OraclePreparedStatement.java:3285)
at oracle.jdbc.driver.OraclePreparedStatement.execute(OraclePreparedStatement.java:3390)
at oracle.jdbc.driver.OracleCallableStatement.execute(OracleCallableStatement.java:4223)
at com.sun.gjc.spi.base.PreparedStatementWrapper.execute(PreparedStatementWrapper.java:508)
at roc.dao.impl.UserListProvider.getUserList(UserListProvider.java:58)
at roc.dao.impl.UserListProvider.<init>(UserListProvider.java:33)
at roc.Login.<init>(Login.java:41)
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 java.lang.Class.newInstance0(Class.java:357)
at java.lang.Class.newInstance(Class.java:310)
at com.sun.faces.mgbean.BeanBuilder.newBeanInstance(BeanBuilder.java:188)
at com.sun.faces.mgbean.BeanBuilder.build(BeanBuilder.java:102)
at com.sun.faces.mgbean.BeanManager.createAndPush(BeanManager.java:409)
at com.sun.faces.mgbean.BeanManager.create(BeanManager.java:269)
at com.sun.faces.el.ManagedBeanELResolver.resolveBean(ManagedBeanELResolver.java:244)
at com.sun.faces.el.ManagedBeanELResolver.getValue(ManagedBeanELResolver.java:116)
at com.sun.faces.el.DemuxCompositeELResolver._getValue(DemuxCompositeELResolver.java:176)
at com.sun.faces.el.DemuxCompositeELResolver.getValue(DemuxCompositeELResolver.java:203)
at com.sun.el.parser.AstIdentifier.getValue(AstIdentifier.java:103)
at com.sun.el.parser.AstValue.getTarget(AstValue.java:149)
at com.sun.el.parser.AstValue.getType(AstValue.java:84)
at com.sun.el.ValueExpressionImpl.getType(ValueExpressionImpl.java:200)
at com.sun.faces.facelets.el.TagValueExpression.getType(TagValueExpression.java:98)
at org.primefaces.renderkit.InputRenderer.findImplicitConverter(InputRenderer.java:170)
at org.primefaces.renderkit.InputRenderer.findConverter(InputRenderer.java:190)
at org.primefaces.renderkit.InputRenderer.getConvertedValue(InputRenderer.java:196)
at javax.faces.component.UIInput.getConvertedValue(UIInput.java:1030)
at javax.faces.component.UIInput.validate(UIInput.java:960)
at javax.faces.component.UIInput.executeValidate(UIInput.java:1233)
at javax.faces.component.UIInput.processValidators(UIInput.java:698)
at javax.faces.component.UIForm.processValidators(UIForm.java:253)
at javax.faces.component.UIComponentBase.processValidators(UIComponentBase.java:1214)
at javax.faces.component.UIViewRoot.processValidators(UIViewRoot.java:1172)
at com.sun.faces.lifecycle.ProcessValidationsPhase.execute(ProcessValidationsPhase.java:76)
at com.sun.faces.lifecycle.Phase.doPhase(Phase.java:101)
at com.sun.faces.lifecycle.LifecycleImpl.execute(LifecycleImpl.java:118)
at javax.faces.webapp.FacesServlet.service(FacesServlet.java:593)
at org.apache.catalina.core.StandardWrapper.service(StandardWrapper.java:1550)
at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:343)
at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:217)
at org.primefaces.webapp.filter.FileUploadFilter.doFilter(FileUploadFilter.java:79)
at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:256)
at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:217)
at roc.tools.auth.MySecurityFilter.doFilter(MySecurityFilter.java:66)
at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:256)
at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:217)
at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:279)
at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:175)
at org.apache.catalina.core.StandardPipeline.doInvoke(StandardPipeline.java:655)
at org.apache.catalina.core.StandardPipeline.invoke(StandardPipeline.java:595)
at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:161)
at org.apache.catalina.connector.CoyoteAdapter.doService(CoyoteAdapter.java:331)
at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:231)
at com.sun.enterprise.v3.services.impl.ContainerMapper$AdapterCallable.call(ContainerMapper.java:317)
at com.sun.enterprise.v3.services.impl.ContainerMapper.service(ContainerMapper.java:195)
at com.sun.grizzly.http.ProcessorTask.invokeAdapter(ProcessorTask.java:860)
at com.sun.grizzly.http.ProcessorTask.doProcess(ProcessorTask.java:757)
at com.sun.grizzly.http.ProcessorTask.process(ProcessorTask.java:1056)
at com.sun.grizzly.http.DefaultProtocolFilter.execute(DefaultProtocolFilter.java:229)
at com.sun.grizzly.DefaultProtocolChain.executeProtocolFilter(DefaultProtocolChain.java:137)
at com.sun.grizzly.DefaultProtocolChain.execute(DefaultProtocolChain.java:104)
at com.sun.grizzly.DefaultProtocolChain.execute(DefaultProtocolChain.java:90)
at com.sun.grizzly.http.HttpProtocolChain.execute(HttpProtocolChain.java:79)
at com.sun.grizzly.ProtocolChainContextTask.doCall(ProtocolChainContextTask.java:54)
at com.sun.grizzly.SelectionKeyContextTask.call(SelectionKeyContextTask.java:59)
at com.sun.grizzly.ContextTask.run(ContextTask.java:71)
at com.sun.grizzly.util.AbstractThreadPool$Worker.doWork(AbstractThreadPool.java:532)
at com.sun.grizzly.util.AbstractThreadPool$Worker.run(AbstractThreadPool.java:513)
at java.lang.Thread.run(Thread.java:662)
Please help me to solve this.
Thank you and More Power!
我會說問題出在這里:
this.conn = ds.getConnection();
this.conn =dsCOP.getConnection();
在這兩行之后,字段this.conn
包含“ COP”數據庫連接。 ds.getConnection()
返回的與“ ROC”數據庫的連接已丟失。
我可以理解您要使用兩個數據源,但是不能將它們都分配給同一字段! 您將需要創建兩個單獨的字段,每個連接一個,並將連接分配給不同的字段。 例如:
this.connROC = ds.getConnection();
this.connCOP = dsCOP.getConnection();
從錯誤消息中可以明顯看出,您現在已經添加了您正在使用“ COP”連接對“ ROC”數據庫運行查詢。 毫不奇怪,這失敗了,因為“ COP”數據庫中不存在ROCWEB
軟件包。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.