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.WLInitialContextFactory");
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 ?
Thanks in advance!!!
Edward
ResultSet is not serializable - i.e. it cannot be moved across the network.
You need to copy the result set into a value object, and return that from
the EJB instead.
"Edward Edward" <dizh...@sina.com> wrote in message
news:7e83536a.02060...@posting.google.com...