Avatar billede aslan Nybegynder
30. januar 2004 - 15:27 Der er 33 kommentarer og
1 løsning

Points til arne

Hvor kan du se de forskellige metoder som remotehome interface kan indeholde. Har ikke kunne finde doc. på det?

Noget andet jeg forsøgte var at oprette min egen metode i CMP bean, men uden held. I ejb-jar.xml filen lagde jeg dette ind:

            <query>
                <query-method>
                  <method-name>findByDescription</method-name>
                  <method-params>
                      <method-param>java.lang.String</method-param>
                  </method-params>
                </query-method>
                <ejb-ql>
                  <![CDATA[SELECT OBJECT(obj) FROM mp3 obj WHERE genre=?1]]>     
                </ejb-ql>
              </query> 

Denne implementerede jeg så i remotehome på denne måde:

public MP3_Remote findByDescription(String genre) throws FinderException, RemoteException;


Men når jeg deployer får jeg denne fejl:

[ObjectName: jboss.j2ee:jndiName=ejb/MP3,service=EJB
state: FAILED
I Depend On:
Depends On Me: org.jboss.deployment.DeploymentException: Error compiling EJB-QL
statement 'SELECT OBJECT(obj) FROM mp3 obj WHERE genre=?1'; - nested throwable:
(org.jboss.ejb.plugins.cmp.ejbql.ParseException: Encountered "mp3" at line 1, c
olumn 25.
Was expecting one of:
    "IN" ...
    <ABSTRACT_SCHEMA> ...
    )]

Jeg vil også takke dig for din støtte arne, du er en stor hjælp i vores projekt.
Avatar billede arne_v Ekspert
30. januar 2004 - 15:44 #1
Avatar billede arne_v Ekspert
30. januar 2004 - 15:57 #2
Prøv evt. med AS - det skulel være optional men ... :

SELECT OBJECT(obj) FROM mp3 AS obj WHERE genre=?1
Avatar billede arne_v Ekspert
30. januar 2004 - 15:58 #3
Er mp3 navnet på din entity bean ?

Jeg mener at det skal være navnet på entity beanen det skal angives der.
Avatar billede aslan Nybegynder
30. januar 2004 - 17:42 #4
Min bean hedder MP3 og tabellen i db hedder mp3. Nu får jeg denne fejl:

[ObjectName: jboss.j2ee:jndiName=ejb/MP3,service=EJB
state: FAILED
I Depend On:
Depends On Me: org.jboss.deployment.DeploymentException: Error compiling EJB-Q
statement 'SELECT OBJECT(obj) FROM MP3 AS obj WHERE genre=?1'; - nested throwa
le: (org.jboss.ejb.plugins.cmp.ejbql.ParseException: Encountered "genre" at lin
1, column 42.
Was expecting one of:
    "NOT" ...
    "(" ...
    <COLLECTION_VALUED_PATH> ...
    <STRING_VALUED_PATH> ...
    "CONCAT" ...
    "SUBSTRING" ...
    <BOOLEAN_VALUED_PATH> ...
    <DATETIME_VALUED_PATH> ...
    <ENTITY_VALUED_PATH> ...
    <IDENTIFICATION_VARIABLE> ...
    <NUMERIC_VALUED_PATH> ...
    "LENGTH" ...
    "LOCATE" ...
    "ABS" ...
    "SQRT" ...
    "+" ...
    "-" ...
    <INTEGER_LITERAL> ...
    <FLOATING_POINT_LITERAL> ...
    <NUMERIC_VALUED_PARAMETER> ...
    )]


Jeg kan heller ikke få remove metoden til at virke, den siger at jeg skal implementere remove metoden i bean klassen? Jeg ved bare ikke lige hvordan.
Avatar billede arne_v Ekspert
30. januar 2004 - 17:49 #5
Er "genre" felt navnet i databasen eller attribut navnet i entity beanen ?

Jeg tror at det skal være det sidste.
Avatar billede arne_v Ekspert
30. januar 2004 - 17:50 #6
Du har tilføjet remove til RemoteHome og ikke til Remote ?
Avatar billede aslan Nybegynder
30. januar 2004 - 17:55 #7
Jeg har tilføjet remove metoden i remotehome interface på denne måde:

public void remove(Integer id) throws FinderException, RemoteException;


Jeg har både genre som felt i db og attribut i bean?
Avatar billede arne_v Ekspert
30. januar 2004 - 17:59 #8
Jeg forstår bare ikke hvorfor den så vil have dig til at lave den i bean klassen !?
Avatar billede arne_v Ekspert
30. januar 2004 - 18:02 #9
Kan vi få den præcise fejl besked ?
Avatar billede simonvalter Praktikant
30. januar 2004 - 18:02 #10
undskyld jeg blander mig men har du prøvet dette:

SELECT OBJECT(obj) FROM MP3 obj WHERE obj.genre=?1
Avatar billede arne_v Ekspert
30. januar 2004 - 18:03 #11
Prøv evt. at prefixe med:

... WHERE obj.genre=?1'
Avatar billede arne_v Ekspert
30. januar 2004 - 18:04 #12
Det var der vist enighed om.
Avatar billede aslan Nybegynder
30. januar 2004 - 18:07 #13
Fejlmeddelse for remove:

18:04:45,296 INFO  [MainDeployer] Starting deployment of package: file:/D:/Udvik
ling/JBoss/jboss-3.2.3/jboss-3.2.3/server/default/deploy/BroadOpen_0.1_EJB.jar
18:04:45,937 WARN  [verifier] EJB spec violation:
Bean  : MP3
Method : public abstract void remove(Integer) throws FinderException, RemoteExce
ption
Section: 12.2.9
Warning: Each home method must match a method defined in the entity bean class.

18:04:45,937 ERROR [MainDeployer] could not create deployment: file:/D:/Udviklin
g/JBoss/jboss-3.2.3/jboss-3.2.3/server/default/deploy/BroadOpen_0.1_EJB.jar
org.jboss.deployment.DeploymentException: Verification of Enterprise Beans faile
d, see above for error messages.
        at org.jboss.ejb.EJBDeployer.create(EJBDeployer.java:491)
        at org.jboss.deployment.MainDeployer.create(MainDeployer.java:786)
        at org.jboss.deployment.MainDeployer.deploy(MainDeployer.java:641)
        at org.jboss.deployment.MainDeployer.deploy(MainDeployer.java:605)
        at sun.reflect.GeneratedMethodAccessor22.invoke(Unknown Source)
        at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAcces
sorImpl.java:25)
        at java.lang.reflect.Method.invoke(Method.java:324)
        at org.jboss.mx.capability.ReflectedMBeanDispatcher.invoke(ReflectedMBea
nDispatcher.java:284)
        at org.jboss.mx.server.MBeanServerImpl.invoke(MBeanServerImpl.java:546)
        at org.jboss.mx.util.MBeanProxyExt.invoke(MBeanProxyExt.java:177)
        at $Proxy6.deploy(Unknown Source)
        at org.jboss.deployment.scanner.URLDeploymentScanner.deploy(URLDeploymen
tScanner.java:302)
        at org.jboss.deployment.scanner.URLDeploymentScanner.scan(URLDeploymentS
canner.java:458)
        at org.jboss.deployment.scanner.AbstractDeploymentScanner$ScannerThread.
doScan(AbstractDeploymentScanner.java:201)
        at org.jboss.deployment.scanner.AbstractDeploymentScanner$ScannerThread.
loop(AbstractDeploymentScanner.java:212)
        at org.jboss.deployment.scanner.AbstractDeploymentScanner$ScannerThread.
run(AbstractDeploymentScanner.java:191)
Avatar billede aslan Nybegynder
30. januar 2004 - 18:09 #14
Nice fik findByDescription metode til at virke ud fra WHERE obj.genre=?1'
Avatar billede arne_v Ekspert
30. januar 2004 - 18:30 #15
Har du en ejbRemove i din bean klasse ?
Avatar billede arne_v Ekspert
30. januar 2004 - 18:31 #16
vrøvl - det har ikke noget med det at gøre.
Avatar billede arne_v Ekspert
30. januar 2004 - 18:43 #17
Hvor kommer FinderException iøvrigt fra ? Jeg mener ikke at remove smider den !

Men det er nok svært at komme videre uden at se lidt kode.
Avatar billede arne_v Ekspert
30. januar 2004 - 18:43 #18
Alternativt kan du erstatte:

homeobj.remove(pk);

med:

homeobj.findByPrimaryKey(pk).remove();
Avatar billede aslan Nybegynder
30. januar 2004 - 18:49 #19
Nej nej :-) findByDescription er den metode jeg selv fandt på :

            <query>
                <query-method>
                  <method-name>findByDescription</method-name>
                  <method-params>
                      <method-param>java.lang.String</method-param>
                  </method-params>
                </query-method>
                <ejb-ql>
                  <![CDATA[SELECT OBJECT(obj) FROM mp3 obj WHERE genre=?1]]>     
                </ejb-ql>
              </query> 

Men remove burde virke ligesom create,findByPrimaryKey og findAll og det gør den ikke. Men jeg kan jo bare selv implementer den ligesom findByDescription.

Den doc. du brugte til at se at remove fandtes er det noget jeg kan få fingre i arne?
Avatar billede aslan Nybegynder
30. januar 2004 - 18:55 #20
Hvis du er interesseret i at se koden kan jeg godt lægge det ud arne? Ellers bare læg et svar så for du points...
Avatar billede arne_v Ekspert
30. januar 2004 - 18:57 #21
Avatar billede arne_v Ekspert
30. januar 2004 - 18:58 #22
Jeg vil meget gerne se koden.

Men jeg har et møde den næste times tid.
Avatar billede aslan Nybegynder
30. januar 2004 - 19:28 #23
Fint ... du kan downloade koden herfra :

http://www.aslani.dk/Faem.rar
Avatar billede arne_v Ekspert
30. januar 2004 - 21:14 #24
got it
Avatar billede arne_v Ekspert
30. januar 2004 - 21:17 #25
Remove er jo allerede i MP3_RemoteHome fordi den extender EJBHome.

Kan du ikke bare deploye uden erklæringen i den kode og så kalde den
i client ?
Avatar billede aslan Nybegynder
31. januar 2004 - 12:52 #26
Jeg får fejl når jeg forsøger at compile uden at erklære remove i remotehome:

RemoteHome home = (MP3_RemoteHome) PortableRemoteObject.narrow(temp, MP3_RemoteHome.class);
home.remove(1);
Avatar billede arne_v Ekspert
31. januar 2004 - 16:15 #27
1 er en int ikke en Integer.

Prøv med:

home.remove(new Integer(1));
Avatar billede arne_v Ekspert
31. januar 2004 - 17:07 #28
Iøvrigt bør man nok undgå winrar .rar filer i J2EE sammenhæng, man vil ofte
tro at det er en JCA .rar fil.
Avatar billede aslan Nybegynder
31. januar 2004 - 22:07 #29
Ja det virker nu skal lige vænne mig til at det er Integers man arbejder med og ikke int :-) en flov fejl...

Bare læg et svar arne så får du points
Avatar billede arne_v Ekspert
31. januar 2004 - 22:12 #30
ok
Avatar billede arne_v Ekspert
31. januar 2004 - 22:14 #31
Iøvrigt med hensyn til findByDescription.

Jeg har aldrig prøvet med CMP 2.0, men med CMP 1.1 kunne du bare have lavet en
findByGenre uden at angive SQL og containeren havde så gættet hvad du ville
(fordi der er en attribut/felt ved navn genre).
Avatar billede aslan Nybegynder
31. januar 2004 - 23:10 #32
Ok det vil jeg teste arne :-)

Bare lige en sidste ting, vi regner med at bruge denne arkitektur:

applikation ---- session bean----entity bean----database

Vi kan ikke rigtig se hva vi skulle bruge servlet laget til?
Avatar billede arne_v Ekspert
31. januar 2004 - 23:25 #33
Hvis det er:

fat client----(LAN)----app server

så har I ikke noget at bruge JSP/Servlet til.

Men:

browser----(LAN eller WAN)----app server

kræver selvfølgelig JSP/Servlet.

Og:

fat client----(WAN)----app server

ville jeg også lave med servlet lag (web service kald til Axis servlet !)
Avatar billede aslan Nybegynder
31. januar 2004 - 23:29 #34
ok tak..
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