Toon posts:

[JAVA] variabelen met JSP uit session bean halen

Pagina: 1
Acties:

Verwijderd

Topicstarter
Ik heb het volgende probleem:
ik wil vanuit een JSP pagina een methode aanroepen in een sessionbean, dat gebeurt alsvolgt:
code:
1
2
3
4
5
6
<jsp:useBean id="vSessionBean" class="ejb.vSessionBean" scope="session">
<%
      String result=vSessionBean.reserveringen();
%>                          
<TR><TD><%=  result %></TD><TD><%= id %></TD></TR>
</jsp:useBean>


en in de session bean:
code:
1
2
3
4
 public String reserveringen() throws RemoteException
    {
        return resvluchten;
    }


Hier van is het resultaat altijd null,

echter als je vanaf een servlet deze methode aanroept, dan krijg ik wel resultaat.
Het lijkt er dus op dat als je in de JSP deze methode oproept, dat los van de bean wordt gezien en daarom resvluchten als leeg wordt beschouwd.
is hier iets aan te doen of moet ik met een servlet gaan werken ipv JSP?

  • Standeman
  • Registratie: November 2000
  • Laatst online: 23:08

Standeman

Prutser 1e klasse

Heb je de bean wel in de session gezet en werk je met dezelfde session. Aan de hand van het PageContext object kan je deze info even bekijken..

p.s. een jsp wordt gewoon omgezet in een servlet, dus wat dat betreft is er weinig verschil tussen een servlet en een jsp..

[ Voor 31% gewijzigd door Standeman op 11-05-2005 17:19 ]

The ships hung in the sky in much the same way that bricks don’t.


Verwijderd

Topicstarter
misschien heel domme vraag... maar hoe zet je een bean in een session?
en als die anders zou zijn waarom zou een bij een servlet wel werken?

  • Standeman
  • Registratie: November 2000
  • Laatst online: 23:08

Standeman

Prutser 1e klasse

haal je session object uit je request object en dan
code:
1
session.setAttribute("bean", bean);


In je jsp kan je weer de bean uit je session object halen :)

Maar hoe doe je het in je servlet dan, dat het daar wel werkt?

The ships hung in the sky in much the same way that bricks don’t.


Verwijderd

Topicstarter
code:
1
2
3
4
5
6
7
8
9
10
try
                {
                    Context initial = new InitialContext( );
                    ejb.vSessionRemote zoek = ((ejb.vSessionRemoteHome) initial.lookup
("java:comp/env/ejb/vSessionBean")).create();
                    out.println(zoek.reserveringen());
                }
                catch(Exception e)
                {
                }

  • Janoz
  • Registratie: Oktober 2000
  • Laatst online: 04-05 14:55

Janoz

Moderator Devschuur®

!litemod

Die code die je hierboven geeft zet helemaal niks in de session. Waarschijnlijk ben je iets als wat standeman aangeeft vergeten. Echter vermoed ik dat je dit misschien nog wel beter in het request op kunt slaan.

Ken Thompson's famous line from V6 UNIX is equaly applicable to this post:
'You are not expected to understand this'


  • -FoX-
  • Registratie: Januari 2002
  • Niet online

-FoX-

Carpe Diem!

Je kan een EJB Session Bean onmogelijk rechstreeks in een jsp gebruiken met gebruik van jsp:useBean. Dit dient enkel om simpele java objecten te gebruiken die je in je request/session gestopt hebt.

Wat je wel kan doen, is gewoon de code vanuit je servlet in je JSP plaatsen:
Java:
1
2
3
4
5
6
7
8
9
<%
ejb.vSessionRemote zoek;
try {
     Context initial = new InitialContext( );
     zoek = ((ejb.vSessionRemoteHome) initial.lookup ("java:comp/env/ejb/vSessionBean")).create();                   
  } catch(Exception e) { }
%>
...html code...
<%=zoek.reserveringen()%>

Dit zou wel moeten werken.. al is het zelf een quick-n-dirty oplossing.

Verwijderd

Topicstarter
dank je, dat werkt...

is er een minder 'dirty' oplossing?
en buiten dat, is er iemand die mij kan overtuigen wat het nut is van al die session en entitty beans?

dit is nl een opdracht voor mijn studie...
maar alles wat ik hier toe heb moeten doen kost bergen met tijd terwijl in php alles in 3 minuten klaar kan zijn....

  • Jrz
  • Registratie: Mei 2000
  • Laatst online: 07-05 00:35

Jrz

––––––––––––

session.setAttribute("vSessionBean", zoek) doet wat je aan het begin wilde...

Maar ik vind het een beetje vreemd om een sessionbean in je httpsession te zetten...

[ Voor 18% gewijzigd door Jrz op 12-05-2005 06:16 ]

Ennnnnnnnnn laat losssssssss.... https://github.com/jrz/container-shell (instant container met chroot op current directory)


  • Standeman
  • Registratie: November 2000
  • Laatst online: 23:08

Standeman

Prutser 1e klasse

Verwijderd schreef op donderdag 12 mei 2005 @ 03:41:
dank je, dat werkt...

is er een minder 'dirty' oplossing?
en buiten dat, is er iemand die mij kan overtuigen wat het nut is van al die session en entitty beans?

dit is nl een opdracht voor mijn studie...
maar alles wat ik hier toe heb moeten doen kost bergen met tijd terwijl in php alles in 3 minuten klaar kan zijn....
Totdat je een omvangrijk distributed systeem moet gaan bouwen in een nogal dynamische omgeving en de kosten van onderhoud in de hand gehouden dient te worden. :)

The ships hung in the sky in much the same way that bricks don’t.


  • -FoX-
  • Registratie: Januari 2002
  • Niet online

-FoX-

Carpe Diem!

Jrz schreef op donderdag 12 mei 2005 @ 06:15:
session.setAttribute("vSessionBean", zoek) doet wat je aan het begin wilde...

Maar ik vind het een beetje vreemd om een sessionbean in je httpsession te zetten...
Neen, toch niet.. je kan onmogelijk een EJB in je HttpSession plaatsen.
Een EJB moet in een EJB container draaien, remember?

[ Voor 3% gewijzigd door -FoX- op 12-05-2005 12:45 ]


Verwijderd

-FoX- schreef op donderdag 12 mei 2005 @ 12:45:
[...]

Neen, toch niet.. je kan onmogelijk een EJB in je HttpSession plaatsen.
Een EJB moet in een EJB container draaien, remember?
maar je kan wel je 'StateFullSessionRemoteInterface' in je sessie gooien... of hoe ga jij andersom met statefull session beans. Je slaat dan dus je proxy richting EJB container op in je session....

(even vermelden, ik werk altijd met stateless SB's en vind dat code die session beans aanroept in een backend class (strutsaction, whatever) zou horen en NIET in de JSP (presentation logic))

  • KurtDB
  • Registratie: Juni 2004
  • Laatst online: 09-02 20:28
Verwijderd schreef op donderdag 12 mei 2005 @ 14:47:
[...]


maar je kan wel je 'StateFullSessionRemoteInterface' in je sessie gooien... of hoe ga jij andersom met statefull session beans. Je slaat dan dus je proxy richting EJB container op in je session....

(even vermelden, ik werk altijd met stateless SB's en vind dat code die session beans aanroept in een backend class (strutsaction, whatever) zou horen en NIET in de JSP (presentation logic))
De service locator voor een session bean hoort in een business delegate of een aanverwante layer. Je gaat die dus NIET in een structs action zetten omdat je je code dan afhankelijk maakt van struts. (wat dus een heel bad practice is)
Pagina: 1