Avatar billede tmo Nybegynder
16. december 2004 - 12:17 Der er 5 kommentarer

com.caucho.http.session/Serializable

Hej,

Jeg arbejder med at persistente sessions på min resin 2.1.

Følgende er sat: web.xml(Gemmer sessions i databaden)
    <session-timeout id='120'/>
    <session-max id='4096'/>
      <always-save-session/>
      <always-load-session/>
      <jdbc-store>
        <table-name>resinsession</table-name>
        <data-source>jdbc/risk</data-source>
      </jdbc-store>
  </session-config>

Så tester jeg med følgende kode:

Servlet:
...
public void doPost(HttpServletRequest request,
  HttpServletResponse response)
  throws ServletException, IOException {

      HttpSession session = request.getSession();
        TestBean testbean = new TestBean();
    testbean.setTestID("test");
    session.setAttribute("testbean", session);
    }
...
og en bean:


package test;

public class TestBean implements java.io.Serializable{

    private String testID="3";

    public String getTestID() {
        return testID;
    }

    public void setTestID(String value) {
        testID = value;
    }
}

Mit problem opstår når jeg kalder session.setAttribute i min servlet. Der kastes en:

java.io.NotSerializableException: com.caucho.http.session.SessionImpl
        at java.io.ObjectOutputStream.writeObject0(ObjectOutputStream.java:1054)

        at java.io.ObjectOutputStream.defaultWriteFields(ObjectOutputStream.java
:1332)
        at java.io.ObjectOutputStream.writeSerialData(ObjectOutputStream.java:13
04)
        at java.io.ObjectOutputStream.writeOrdinaryObject(ObjectOutputStream.jav
a:1247)
        at java.io.ObjectOutputStream.writeObject0(ObjectOutputStream.java:1052)

        at java.io.ObjectOutputStream.writeObject(ObjectOutputStream.java:278)
        at com.caucho.http.session.SessionImpl.store(SessionImpl.java:822)
        at com.caucho.http.distribution.Store.store(Store.java:249)
        at com.caucho.http.distribution.JdbcStore.store(JdbcStore.java:296)
        at com.caucho.http.session.SessionImpl.finish(SessionImpl.java:760)
        at com.caucho.server.http.Request.finish(Request.java:502)
        at com.caucho.server.http.Response.finish(Response.java:1741)
        at com.caucho.server.http.HttpRequest.handleRequest(HttpRequest.java:264
)
        at com.caucho.server.http.HttpRequest.handleConnection(HttpRequest.java:
164)
        at com.caucho.server.TcpConnection.run(TcpConnection.java:139)
        at java.lang.Thread.run(Thread.java:534)

Er der noget ekstra man skal sætte op i Resin? Det ligner at resins  com.caucho.http.session.SessionImpl ikke implementerer
Serializable eller..?

/Thomas
Avatar billede arne_v Ekspert
16. december 2004 - 12:20 #1
Hvad med din TestBean ?
Avatar billede arne_v Ekspert
16. december 2004 - 12:21 #2
Når et container objekt skal serialiseres så skal både det og alle de indeholdte
objekter være seializable.
Avatar billede tmo Nybegynder
16. december 2004 - 12:45 #3
Hej Arne,

ok, så du mener mon servlet skal "implements java.io.Serializable". Mener dog at have læst at det gør den allerede.
Avatar billede arne_v Ekspert
16. december 2004 - 12:53 #4
Nej - servletten gemmes vel ikke i sessionen.

Men din bean ser godt nok meget serializable ud. Og String er også serializable.
Avatar billede tmo Nybegynder
16. december 2004 - 12:59 #5
hej Arne,

Her efter frokost har jeg startet mit lille eksempel op igen, uden problemer. Mit problem/opgave er at lave en større applikation om til at arbejde med persistente session. Så jeg må igang med se hvilke objekter som skal implementerer serializable. her har implementeret serializable til de fleste objekter, men må mangle nogle da jeg stadig får: java.io.NotSerializableException: com.caucho.http.session.SessionImpl.

Arbejder videre...
Avatar billede Ny bruger Nybegynder

Din løsning...

Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.

Loading billede Opret Preview
Kategori
Kurser inden for grundlæggende programmering

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester