Navigacija
Lista poslednjih: 16, 32, 64, 128 poruka.

gde gresim????EJB

[es] :: Java :: gde gresim????EJB

[ Pregleda: 3132 | Odgovora: 9 ] > FB > Twit

Postavi temu Odgovori

Autor

Pretraga teme: Traži
Markiranje Štampanje RSS

skyforever
bg

Član broj: 85533
Poruke: 72
*.ADSL.neobee.net.



Profil

icon gde gresim????EJB12.04.2006. u 09:59 - pre 219 meseci
Probao sam nekoliko nacina, ali nesto nece pa nece.... Treba samo da iz session bean-a pozovem entity bean. To nekako uradim i kada generisem web servis, sve metode se vide, ali svaka javi gresku kada se pozove.

U nastavku je kod za jednu jednostavnu metodu iz oba bean-a, kao i odgovarajuci deo deployment descriptor-a. Inace koristim WebSphere studio. Ako neko zna gde gresim neka mi javi sto pre.... pleaseeeeeeeeeeeeeeeeeeeeeeeee


//deo koda session bean-a
public String[] listUsers()
{
try
{
InitialContext jndiContext = new InitialContext();
Object ref = jndiContext.lookup("java:comp/env/ejb/PacijentEntity");
PacijentEntityLocal local =
(PacijentEntityLocal)PortableRemoteObject.narrow(ref, PacijentEntityLocal.class);

// PacijentEntityLocal local =
// (PacijentEntityLocal)jndiContext.lookup("java:comp/env/ejb/PacijentEntity");
try
{
return local.getUsers();
}
catch(FinderException fe)
{
fe.printStackTrace();
}
}
catch(NamingException ne)
{
ne.printStackTrace();
}
return null;
}


//deo koda entity bean-a

public String[] getUsers() throws FinderException
{
Connection conn = null;
PreparedStatement ps = null;
ResultSet rs = null;
String[] users = new String[50];

try
{
conn = this.getConnection();
ps = conn.prepareStatement("SELECT Ime FROM Pacijent");
rs = ps.executeQuery();
int i=0;

while(rs.next())
{
String user = rs.getString("Ime");
users = user;
i++;
System.out.println(user);
}
}
catch(SQLException se)
{
throw new EJBException(se);
}
finally
{
try
{
if(rs != null)rs.close();
if(ps != null)ps.close();
if(conn != null)conn.close();
}
catch(SQLException se)
{
se.printStackTrace();
}
}

return users;
}

inace getConnection je implementirana u daljem kodu

//i deployment desciptor

<session id="FacadeSession">
<ejb-name>FacadeSession</ejb-name>
<home>com.srecko.first.FacadeSessionHome</home>
<remote>com.srecko.first.FacadeSession</remote>
<ejb-class>com.srecko.first.FacadeSessionBean</ejb-class>
<session-type>Stateless</session-type>
<transaction-type>Container</transaction-type>
<ejb-local-ref id="EJBLocalRef_1144487476203">
<ejb-ref-name>ejb/PacijentEntity</ejb-ref-name>
<ejb-ref-type>Entity</ejb-ref-type>
<local-home>com.srecko.first.PacijentEntityLocalHome</local-home>
<local>com.srecko.first.PacijentEntityLocal</local>
<ejb-link>PacijentEntity</ejb-link>
</ejb-local-ref>
</session>

Unapred hvala!!!!!!

[Ovu poruku je menjao skyforever dana 12.04.2006. u 11:15 GMT+1]
 
Odgovor na temu

bgd2500

Član broj: 55912
Poruke: 226
82.117.193.*



+7 Profil

icon Re: gde gresim????EJB12.04.2006. u 17:52 - pre 219 meseci
A kakvu ti gresku javlja ?
 
Odgovor na temu

skyforever
bg

Član broj: 85533
Poruke: 72
*.ADSL.neobee.net.



Profil

icon Re: gde gresim????EJB12.04.2006. u 18:17 - pre 219 meseci
A da, to sam zaboravio da kazem. Javlja sledecu gresku

exception: java.rmi.ServerException: RemoteException occurred in server thread; nested exception is: java.rmi.RemoteException: ; nested exception is: java.lang.ClassCastException: com.srecko.first.EJSLocalBMPPacijentEntityHome_27261811
 
Odgovor na temu

zmau
Dragan Jovanović
programer
Šabac

Član broj: 80834
Poruke: 290
*.ptt.yu.



+80 Profil

icon Re: gde gresim????EJB12.04.2006. u 20:58 - pre 219 meseci
Koliko si iskusan sa ejb-om ?

Ako nisi puno odmakao s projektom, možda će ti nešto značiti moje iskustvo. Pokušavao sam par meseci unazad da napravim nešto sa ejb-ovima i mnoogo sam se mučio. I to baš kod kačenja na bin (doduše sa klijenta na session bean, do entity bean-ova nisam ni stigao). Onda sam pročitao neke silne pogrdne tekstove o ejb2 tehnologiji i prešao na ejb3.0 koji je dosta jednostavniji (manje interface-a po bean-u, manje smaranja sa deskriptorima), udobnij za rad, i što je najbitnije - šljaka bez problema. (Koristim jboss app server.) Problem sa ejb3.0 je što je skroz nov, neistestiran, pa možda ne bi trebalo imati suviše poverenja u njega, ali mene za sad odlično sluša i toplo bih ti ga preporučio.
it works on my machine
 
Odgovor na temu

skyforever
bg

Član broj: 85533
Poruke: 72
*.ADSL.neobee.net.



Profil

icon Re: gde gresim????EJB12.04.2006. u 23:07 - pre 219 meseci
Nisam pretarano iskusan sa ejb, cim me muci nesto ovako...

Hvala na savetu, ali da li mozda imas primer na kome je to odradjeno (mislim na pozivanje entity bean-a iz session bean-a).
Mislim da nemam bas puno vremena da nesto preterano eksperimentisem sada. Treba da nateram ovo da radi sto pre, kako bih mogao da zavrsim ostatak posla. Mislim da ovo nije veliki problem, ali jednostavno nemam pojma sta vise da radim.
 
Odgovor na temu

zmau
Dragan Jovanović
programer
Šabac

Član broj: 80834
Poruke: 290
*.ptt.yu.



+80 Profil

icon Re: gde gresim????EJB13.04.2006. u 00:21 - pre 219 meseci
Ne bih da te plašim, ali imam nekoliko tutoriala, radio sam sa njima i dešavalo mi se (često!) da i primer iz tutoriala se uspem da nateram da proradi. Ne znam koliko je bio problem u samim binovima, a koliko u sun java studio alatu koji sam koristio.
Nego, sad gledam jedan od tih tutoriala (malo guglaj pa ćeš ih naći ako te zanima) i u primeru za BMP entity bean (a koliko kapiram ovaj tvoj je BMP), klijentska aplikacija se direkt kači na njega, bez session bean-a. A u drugom primeru session bean se kači na CMP entity bean i evo ti sorsa od session bean-a (LocalPlayerHome, LocalTeamHome i LocalLeagueHome su interfejsi entity bean-ova) :


/*
*
* Copyright 2001 Sun Microsystems, Inc. All Rights Reserved.
*
* This software is the proprietary information of Sun Microsystems, Inc.
* Use is subject to license terms.
*
*/

package roster;

import java.util.*;
import javax.ejb.*;
import javax.ejb.*;
import javax.naming.*;
import util.*;
import team.*;

public class RosterBean implements SessionBean {

private LocalPlayerHome playerHome = null;
private LocalTeamHome teamHome = null;
private LocalLeagueHome leagueHome = null;



// Player business methods

public ArrayList testFinder(String parm1, String parm2,
String parm3) {

Debug.print("RosterBean testFinder");
Collection players = null;

try {
players = playerHome.findByTest(parm1, parm2, parm3);
} catch (Exception ex) {
throw new EJBException(ex.getMessage());
}

return copyPlayersToDetails(players);
}

public void createPlayer(PlayerDetails details) {

Debug.print("RosterBean createPlayer");
try {
LocalPlayer player = playerHome.create(details.getId(),
details.getName(), details.getPosition(), details.getSalary());
} catch (Exception ex) {
throw new EJBException(ex.getMessage());
}
}

public void addPlayer(String playerId, String teamId) {

Debug.print("RosterBean addPlayer");
try {
LocalTeam team = teamHome.findByPrimaryKey(teamId);
LocalPlayer player = playerHome.findByPrimaryKey(playerId);
team.addPlayer(player);
} catch (Exception ex) {
throw new EJBException(ex.getMessage());
}
}

public void removePlayer(String playerId) {

Debug.print("RosterBean removePlayer");
try {
LocalPlayer player = playerHome.findByPrimaryKey(playerId);
player.remove();
} catch (Exception ex) {
throw new EJBException(ex.getMessage());
}
}

public void dropPlayer(String playerId, String teamId) {

Debug.print("RosterBean dropPlayer");
try {
LocalPlayer player = playerHome.findByPrimaryKey(playerId);
LocalTeam team = teamHome.findByPrimaryKey(teamId);
team.dropPlayer(player);
} catch (Exception ex) {
throw new EJBException(ex.getMessage());
}
}

public PlayerDetails getPlayer(String playerId) {

Debug.print("RosterBean getPlayer");
PlayerDetails playerDetails = null;
try {
LocalPlayer player = playerHome.findByPrimaryKey(playerId);
playerDetails = new PlayerDetails(playerId,
player.getName(), player.getPosition(), player.getSalary());
} catch (Exception ex) {
throw new EJBException(ex.getMessage());
}
return playerDetails;
} // getPlayer


public ArrayList getPlayersOfTeam(String teamId) {

Debug.print("RosterBean getPlayersOfTeam");
Collection players = null;

try {
LocalTeam team = teamHome.findByPrimaryKey(teamId);
players = team.getPlayers();
} catch (Exception ex) {
throw new EJBException(ex.getMessage());
}

return copyPlayersToDetails(players);
} // getPlayersOfTeam


public ArrayList getPlayersOfTeamCopy(String teamId) {

Debug.print("RosterBean getPlayersOfTeamCopy");
ArrayList playersList = null;

try {
LocalTeam team = teamHome.findByPrimaryKey(teamId);
playersList = team.getCopyOfPlayers();
} catch (Exception ex) {
throw new EJBException(ex.getMessage());
}

return playersList;

} // getPlayersOfTeamCopy


public ArrayList getTeamsOfLeague(String leagueId) {

Debug.print("RosterBean getTeamsOfLeague");

ArrayList detailsList = new ArrayList();
Collection teams = null;

try {
LocalLeague league = leagueHome.findByPrimaryKey(leagueId);
teams = league.getTeams();
} catch (Exception ex) {
throw new EJBException(ex.getMessage());
}

Iterator i = teams.iterator();
while (i.hasNext()) {
LocalTeam team = (LocalTeam) i.next();
TeamDetails details = new TeamDetails(team.getTeamId(),
team.getName(), team.getCity());
detailsList.add(details);
}

return detailsList;
} // getTeamsOfLeague


public ArrayList getPlayersByPosition(String position) {

Debug.print("RosterBean getPlayersByPosition");
Collection players = null;

try {
players = playerHome.findByPosition(position);
} catch (Exception ex) {
throw new EJBException(ex.getMessage());
}

return copyPlayersToDetails(players);
} // getPlayersByPosition


public ArrayList getPlayersByHigherSalary(String name) {

Debug.print("RosterBean getPlayersByByHigherSalary");
Collection players = null;

try {
players = playerHome.findByHigherSalary(name);
} catch (Exception ex) {
throw new EJBException(ex.getMessage());
}

return copyPlayersToDetails(players);
} // getPlayersByHigherSalary

public ArrayList getPlayersBySalaryRange(double low, double high) {

Debug.print("RosterBean getPlayersBySalaryRange");
Collection players = null;

try {
players = playerHome.findBySalaryRange(low, high);
} catch (Exception ex) {
throw new EJBException(ex.getMessage());
}

return copyPlayersToDetails(players);
} // getPlayersBySalaryRange

public ArrayList getPlayersByLeagueId(String leagueId) {

Debug.print("RosterBean getPlayersByLeagueId");
Collection players = null;

try {
LocalLeague league = leagueHome.findByPrimaryKey(leagueId);
players = playerHome.findByLeague(league);
} catch (Exception ex) {
throw new EJBException(ex.getMessage());
}

return copyPlayersToDetails(players);
} // getPlayersByLeagueId

public ArrayList getPlayersBySport(String sport) {

Debug.print("RosterBean getPlayersBySport");
Collection players = null;

try {
players = playerHome.findBySport(sport);
} catch (Exception ex) {
throw new EJBException(ex.getMessage());
}

return copyPlayersToDetails(players);
} // getPlayersBySport

public ArrayList getPlayersByCity(String city) {

Debug.print("RosterBean getPlayersByCity");
Collection players = null;

try {
players = playerHome.findByCity(city);
} catch (Exception ex) {
throw new EJBException(ex.getMessage());
}

return copyPlayersToDetails(players);
} // getPlayersByCity

public ArrayList getAllPlayers() {

Debug.print("RosterBean getAllPlayers");
Collection players = null;

try {
players = playerHome.findAll();
} catch (Exception ex) {
throw new EJBException(ex.getMessage());
}

return copyPlayersToDetails(players);
} // getAllPlayers

public ArrayList getPlayersNotOnTeam() {

Debug.print("RosterBean getPlayersNotOnTeam");
Collection players = null;

try {
players = playerHome.findNotOnTeam();
} catch (Exception ex) {
throw new EJBException(ex.getMessage());
}

return copyPlayersToDetails(players);
} // getPlayersNotOnTeam

public ArrayList getPlayersByPositionAndName(String position,
String name) {

Debug.print("RosterBean getPlayersByPositionAndName");
Collection players = null;

try {
players = playerHome.findByPositionAndName(position, name);
} catch (Exception ex) {
throw new EJBException(ex.getMessage());
}

return copyPlayersToDetails(players);
} // getPlayersByPositionAndName

public ArrayList getLeaguesOfPlayer(String playerId) {

Debug.print("RosterBean getLeaguesOfPlayer");
ArrayList detailsList = new ArrayList();
Collection leagues = null;

try {
LocalPlayer player = playerHome.findByPrimaryKey(playerId);
leagues = player.getLeagues();
} catch (Exception ex) {
throw new EJBException(ex.getMessage());
}

Iterator i = leagues.iterator();
while (i.hasNext()) {
LocalLeague league = (LocalLeague) i.next();
LeagueDetails details = new LeagueDetails(league.getLeagueId(),
league.getName(), league.getSport());
detailsList.add(details);
}
return detailsList;
} // getLeaguesOfPlayer

public ArrayList getSportsOfPlayer(String playerId) {

Debug.print("RosterBean getSportsOfPlayer");
ArrayList sportsList = new ArrayList();
Collection sports = null;

try {
LocalPlayer player = playerHome.findByPrimaryKey(playerId);
sports = player.getSports();
} catch (Exception ex) {
throw new EJBException(ex.getMessage());
}

Iterator i = sports.iterator();
while (i.hasNext()) {
String sport = (String) i.next();
sportsList.add(sport);
}
return sportsList;
} // getSportsOfPlayer

// Team business methods

public void createTeamInLeague(TeamDetails details, String leagueId) {

Debug.print("RosterBean createTeamInLeague");
try {
LocalLeague league = leagueHome.findByPrimaryKey(leagueId);
LocalTeam team = teamHome.create(details.getId(),
details.getName(), details.getCity());
league.addTeam(team);
} catch (Exception ex) {
throw new EJBException(ex.getMessage());
}
}

public void removeTeam(String teamId) {

Debug.print("RosterBean removeTeam");
try {
LocalTeam team = teamHome.findByPrimaryKey(teamId);
team.remove();
} catch (Exception ex) {
throw new EJBException(ex.getMessage());
}
}

public TeamDetails getTeam(String teamId) {

Debug.print("RosterBean getTeam");
TeamDetails teamDetails = null;
try {
LocalTeam team = teamHome.findByPrimaryKey(teamId);
teamDetails = new TeamDetails(teamId,
team.getName(), team.getCity());
} catch (Exception ex) {
throw new EJBException(ex.getMessage());
}
return teamDetails;
}


// League business methods

public void createLeague(LeagueDetails details) {

Debug.print("RosterBean createLeague");
try {
LocalLeague league = leagueHome.create(details.getId(),
details.getName(), details.getSport());
} catch (Exception ex) {
throw new EJBException(ex.getMessage());
}
}

public void removeLeague(String leagueId) {

Debug.print("RosterBean removeLeague");
try {
LocalLeague league = leagueHome.findByPrimaryKey(leagueId);
league.remove();
} catch (Exception ex) {
throw new EJBException(ex.getMessage());
}
}

public LeagueDetails getLeague(String leagueId) {

Debug.print("RosterBean getLeague");
LeagueDetails leagueDetails = null;
try {
LocalLeague league = leagueHome.findByPrimaryKey(leagueId);
leagueDetails = new LeagueDetails(leagueId,
league.getName(), league.getSport());
} catch (Exception ex) {
throw new EJBException(ex.getMessage());
}
return leagueDetails;
}

// SessionBean methods

public void ejbCreate() throws CreateException {

Debug.print("RosterBean ejbCreate");
try {
playerHome = lookupPlayer();
teamHome = lookupTeam();
leagueHome = lookupLeague();
} catch (NamingException ex) {
throw new CreateException(ex.getMessage());
}
}

public void ejbActivate() {

Debug.print("RosterBean ejbActivate");
try {
playerHome = lookupPlayer();
teamHome = lookupTeam();
leagueHome = lookupLeague();
} catch (NamingException ex) {
throw new EJBException(ex.getMessage());
}
}

public void ejbPassivate() {

playerHome = null;
teamHome = null;
leagueHome = null;
}

public RosterBean() {}
public void ejbRemove() {}
public void setSessionContext(SessionContext sc) {}

// Private methods

private LocalPlayerHome lookupPlayer() throws NamingException {

Context initial = new InitialContext();
Object objref = initial.lookup("java:comp/env/ejb/SimplePlayer");
return (LocalPlayerHome) objref;
}

private LocalTeamHome lookupTeam() throws NamingException {

Context initial = new InitialContext();
Object objref = initial.lookup("java:comp/env/ejb/SimpleTeam");
return (LocalTeamHome) objref;
}

private LocalLeagueHome lookupLeague() throws NamingException {

Context initial = new InitialContext();
Object objref = initial.lookup("java:comp/env/ejb/SimpleLeague");
return (LocalLeagueHome) objref;
}

private ArrayList copyPlayersToDetails(Collection players) {

ArrayList detailsList = new ArrayList();
Iterator i = players.iterator();

while (i.hasNext()) {
LocalPlayer player = (LocalPlayer) i.next();
PlayerDetails details = new PlayerDetails(player.getPlayerId(),
player.getName(), player.getPosition(), player.getSalary());
detailsList.add(details);
}

return detailsList;
} // copyPlayersToDetails

} // RosterBean



A ako hoćeš brzo rešenje, mogao bi recimo da batališ entity bean-ove, koliko ja vidim ti iz entity bean-a suvim SQLom pristupaš bazi. To isto možeš da uradiš i iz session bean-a (ja u ejb3 upravo tako radim, a ako se dobro sećam ni ejb2 ne brani da iz session bean-a pristupiš bazi). A ako ti je ružno da svašta trpaš u istu klasu (a jeste), napravi helper klasu (najobičnija java klasa) koja pristupa bazi, a session bean joj pristupa bukvalno tako što je instancira operatorom new.
it works on my machine
 
Odgovor na temu

skyforever
bg

Član broj: 85533
Poruke: 72
*.ADSL.neobee.net.



Profil

icon Re: gde gresim????EJB13.04.2006. u 09:38 - pre 219 meseci
Hvala puno! Videcu sta mogu da uradim. A sto se tice primera iz tutorijala, imao sam i ja tih problema.... I ne znam u cemu je bio problem, ali kod njih kao sve radi, ja to ponovim i nista....

Hvala jos jednom za ovaj primer, mislim da ce mi pomoci.
 
Odgovor na temu

bgd2500

Član broj: 55912
Poruke: 226
82.117.193.*



+7 Profil

icon Re: gde gresim????EJB13.04.2006. u 10:29 - pre 219 meseci
Glede poruke koju ti javlja i koda kojeg si poslao. Imas gresku u getUsers metodu.

Code:

...
while(rs.next())

   String user = rs.getString("Ime");
   users = user;
   i++;
   System.out.println(user);

...


bi trebalo da bude

Code:

...
while(rs.next())

   String user = rs.getString("Ime");
   users[i] = user;
   i++;
   System.out.println(user);

...


uzgred, bolje da si umesto niza stringova koristio neku dinamicku strukturu (Vector, ArrayList)
 
Odgovor na temu

skyforever
bg

Član broj: 85533
Poruke: 72
*.ADSL.neobee.net.



Profil

icon Re: gde gresim????EJB13.04.2006. u 10:38 - pre 219 meseci
Da, to sam kasnije i ja video, pa sam probao da vratim obican string, samo da nesto ispisem, ali javlja istu gresku...

Hvala, na trudu...
 
Odgovor na temu

Toxter
NS

Član broj: 39393
Poruke: 317
*.rcub.bg.ac.yu.



+6 Profil

icon Re: gde gresim????EJB13.04.2006. u 21:20 - pre 219 meseci
Biznis metoda session bean-a mora da baca RemoteException.
Znaci treba da izgleda ovako:
Code:
public String[] listUsers()  throws java.rmi.RemoteException{
...
}


Pozdrav!
Sad mu nije nista, ubio si ga k'o zeca...
 
Odgovor na temu

[es] :: Java :: gde gresim????EJB

[ Pregleda: 3132 | Odgovora: 9 ] > FB > Twit

Postavi temu Odgovori

Navigacija
Lista poslednjih: 16, 32, 64, 128 poruka.