|
 |
j2ee thread: servlet question
Message #1 by Edward <zhangsc@n...> on Sat, 01 Jun 2002 16:05:57 +0800
|
|
create a serializable object and put your info there - you cant send a
result set across rmi because it represents a live connection to the
database!!
chanoch
----- Original Message -----
From: "Edward" <zhangsc@n...>
To: "Java 2 Enterprise Edition" <j2ee@p...>
Sent: Saturday, June 01, 2002 9:05 AM
Subject: [j2ee] servlet question
> Hello:
>
> I want to get ResultSet by search data from Oracle DB,my steps are
follows:first I visit Servlet with IE,then call EJB from Servlet,at last
search data from Oracle through EJB.But I got many errors,
> //Servlet file which named "GetUserIdentity.java"
>
> public class GetUserIdentity extends HttpServlet
> {
> public void doPost(HttpServletRequest request,HttpServletResponse
response)
> throws ServletException,IOException
> {
> try
> {
> Properties prop=new Properties();
>
prop.put(Context.INITIAL_CONTEXT_FACTORY,"weblogic.jndi.WLInitialContextFact
ory");
> prop.put(Context.PROVIDER_URL,"t3://192.168.39.152:7001");
> Context ctx=new InitialContext(prop);
> Object objref=ctx.lookup("CheckPassword");
> CheckPasswordHome
home=(CheckPasswordHome)javax.rmi.PortableRemoteObject.narrow(
> objref,CheckPasswordHome.class);
> CheckPassword ss=home.create();
> ResultSet message;
> message=ss.TableInfo();
> ...
> }
> catch(Exception e)
> {
> e.printStackTrace();
> }
> }
> }
>
> //EJB file which named "CheckPassword.java"
> package loginEJB;
> import java.rmi.RemoteException;
> import java.sql.ResultSet;
> import java.util.Enumeration;
> import java.util.Properties;
>
> public interface CheckPassword extends javax.ejb.EJBObject
> {
> ResultSet TableInfo() throws java.rmi.RemoteException;
> }
>
> //The file "CheckPasswordEJB.java"
>
> import java.sql.Statement;
> import java.sql.ResultSet;
> import java.util.Enumeration;
> import java.util.Properties;
> public class CheckPasswordEJB implements javax.ejb.SessionBean
> {
> public void ejbCreate()
> {
> System.out.println("ejbCreate() called");
> }
> ...
> public ResultSet TableInfo() throws java.rmi.RemoteException
> {
> String driverClass="oracle.jdbc.driver.OracleDriver";
> String url="jdbc:oracle:thin:@as_server:1526:db817";
> Connection connection;
> try
> {
> // Oracle Client - Server Thin Driver
> Class.forName(driverClass);
> }
> catch(ClassNotFoundException e)
> {
> e.printStackTrace();
> }
> try
> {
> connection=DriverManager.getConnection(url,"eino","eino");
> Statement stmt=connection.createStatement();
> stmt.executeQuery("select * from table_info_tbl");
> ResultSet rs=stmt.getResultSet();
> return rs;
> }
> catch(SQLException e)
> {
> e.printStackTrace();
> return null;
> }
> }
> }
>
> When I visit EJB,I got errors:
> Starting service Tomcat-Standalone
> Apache Tomcat/4.0.1
> Starting service Tomcat-Apache
> Apache Tomcat/4.0.1
> java.rmi.MarshalException: error marshalling return; nested exception is:
> java.io.NotSerializableException:
oracle.jdbc.driver.OracleResultSetImpl
>
>
> Start server side stack trace:
> java.rmi.MarshalException: error marshalling return; nested exception is:
> java.io.NotSerializableException:
oracle.jdbc.driver.OracleResultSetImpl
>
> java.io.NotSerializableException: oracle.jdbc.driver.OracleResultSetImpl
> at
java.io.ObjectOutputStream.outputObject(ObjectOutputStream.java:1148)
>
> at
java.io.ObjectOutputStream.writeObject(ObjectOutputStream.java:366)
> at
weblogic.common.internal.ChunkedObjectOutputStream.writeObject(Chunke
> dObjectOutputStream.java:102)
> at
weblogic.common.internal.ChunkedObjectOutputStream.writeObject(Chunke
> dObjectOutputStream.java:108)
> at loginEJB.CheckPasswordEJB_28r6w3_EOImpl_WLSkel.invoke(Unknown
Source)
>
> at
weblogic.rmi.internal.BasicServerRef.invoke(BasicServerRef.java:296)
> at
weblogic.rmi.cluster.ReplicaAwareServerRef.invoke(ReplicaAwareServerR
> ef.java:93)
> at
weblogic.rmi.internal.BasicServerRef.handleRequest(BasicServerRef.jav
> a:265)
> at
weblogic.rmi.internal.BasicExecuteRequest.execute(BasicExecuteRequest
> .java:22)
> at weblogic.kernel.ExecuteThread.execute(ExecuteThread.java:139)
> at weblogic.kernel.ExecuteThread.run(ExecuteThread.java:120)
> End server side stack trace
> ; nested exception is:
> java.io.NotSerializableException:
oracle.jdbc.driver.OracleResultSetImpl
>
>
> Start server side stack trace:
> java.io.NotSerializableException: oracle.jdbc.driver.OracleResultSetImpl
> at
java.io.ObjectOutputStream.outputObject(ObjectOutputStream.java:1148)
>
> at
java.io.ObjectOutputStream.writeObject(ObjectOutputStream.java:366)
> at
weblogic.common.internal.ChunkedObjectOutputStream.writeObject(Chunke
> dObjectOutputStream.java:102)
> at
weblogic.common.internal.ChunkedObjectOutputStream.writeObject(Chunke
> dObjectOutputStream.java:108)
> at loginEJB.CheckPasswordEJB_28r6w3_EOImpl_WLSkel.invoke(Unknown
Source)
>
> at
weblogic.rmi.internal.BasicServerRef.invoke(BasicServerRef.java:296)
> at
weblogic.rmi.cluster.ReplicaAwareServerRef.invoke(ReplicaAwareServerR
> ef.java:93)
> at
weblogic.rmi.internal.BasicServerRef.handleRequest(BasicServerRef.jav
> a:265)
> at
weblogic.rmi.internal.BasicExecuteRequest.execute(BasicExecuteRequest
> .java:22)
> at weblogic.kernel.ExecuteThread.execute(ExecuteThread.java:139)
> at weblogic.kernel.ExecuteThread.run(ExecuteThread.java:120)
> End server side stack trace
>
> java.io.NotSerializableException: oracle.jdbc.driver.OracleResultSetImpl
>
> Start server side stack trace:
> java.io.NotSerializableException: oracle.jdbc.driver.OracleResultSetImpl
> at
java.io.ObjectOutputStream.outputObject(ObjectOutputStream.java:1148)
>
> at
java.io.ObjectOutputStream.writeObject(ObjectOutputStream.java:366)
> at
weblogic.common.internal.ChunkedObjectOutputStream.writeObject(Chunke
> dObjectOutputStream.java:102)
> at
weblogic.common.internal.ChunkedObjectOutputStream.writeObject(Chunke
> dObjectOutputStream.java:108)
> at loginEJB.CheckPasswordEJB_28r6w3_EOImpl_WLSkel.invoke(Unknown
Source)
>
> at
weblogic.rmi.internal.BasicServerRef.invoke(BasicServerRef.java:296)
> at
weblogic.rmi.cluster.ReplicaAwareServerRef.invoke(ReplicaAwareServerR
> ef.java:93)
> at
weblogic.rmi.internal.BasicServerRef.handleRequest(BasicServerRef.jav
> a:265)
> at
weblogic.rmi.internal.BasicExecuteRequest.execute(BasicExecuteRequest
> .java:22)
> at weblogic.kernel.ExecuteThread.execute(ExecuteThread.java:139)
> at weblogic.kernel.ExecuteThread.run(ExecuteThread.java:120)
> End server side stack trace
>
> <<no stack trace available>>
>
> I don't know why my program is error.
> Any idea will be appreciated! How to correct ?
> Edward
>
|
|
 |