[EJB] Deployment

Pagina: 1
Acties:
  • 47 views sinds 30-01-2008

  • ari3
  • Registratie: Augustus 2002
  • Niet online
Ik heb een probleem deployment van een bean op JBoss 3.2.4. Ik krijg een DeploymentException met de melding "Parameter class not found: Long". Ik heb alle beans en deployment descriptors nagekegen nagekeken en ik heb wel degelijk "java.lang.Long" gebruikt.

Ik vermoed dat de container niet weet naar welk JDBC-type de klasse Long gemapt moet worden. Google leverde niets op. Mischien staar ik me gewoon blind op iets wat heel simpel is.... Alle suggesties zeer gewaardeerd!

Onderstaande code is de code voor de entity bean. Ik gebruik XDoclet om CMP-klasse, interfaces en deployment descriptors te genereren.

Java:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
package rip.ejb.beans;

import javax.ejb.EntityBean;

/**
 * @ejb.bean
 *      name="Media"
 *      description="Represents a media type in the collection"
 *      display-name="Media"
 *      type="CMP"
 *      cmp-version="2.x"
 *      view-type="local"
 *      local-jndi-name="gamecol/Media"
 *      schema="media"
 *      primkey-field="ID"
 *  
 * @ejb.pk
 *      class="java.lang.Long"
 * 
 * @ejb.transaction
 *      type="Required"
 * 
 * @ejb.finder
 *      signature="MediaLocal findByPrimaryKey(java.lang.Long id)"
 *      query="SELECT OBJECT(m) FROM media WHERE m.ID=?1"
 * 
 * @ejb.finder
 *      signature="java.util.Collection findAll()"
 *      query="SELECT OBJECT(m) FROM media AS m"
 *
 * @ejb.finder
 *      signature="java.util.Collection findAllByLanguage(java.lang.String language)"
 *      query="SELECT OBJECT(m) FROM media WHERE m.LANG=?1"
 * 
 * @ejb.persistence
 *      table-name="MEDIA"
 * 
 * @jboss.persistence
 *      datasource="java:/gamecolDS"
 *      datasource-mapping="mySQL"
 *      create-table="false"
 *      remove-table="false"
 *      table-name="MEDIA"
 *
 * @jboss.entity-command
 *      name="mysql-get-generated-keys"
 */
public abstract class MediaBean implements EntityBean {

    /**
     * Gets the row id of the media
     * 
     * @ejb.pk-field
     * @ejb.persistence
     *      column-name="ID"
     * @ejb.value-object
     *      match="*"
     * @return the id
     */
    public abstract Long getID();

    /**
     * @ejb.interface-method
     */
    public abstract void setID(Long id);
    
    /**
     * @ejb.interface-method
     * @ejb.persistence
     *      column-name="LANG"
     * @return the language
     */
    public abstract String getLanguage(); 
    
    /**
     * @ejb.interface-method
     * @ejb.persistence
     *      column-name="LANG"
     * @param language the language 
     */    
    public abstract void setLanguage(String language);
    
    /**
     * @ejb.interface-method
     * @ejb.persistence
     *      column-name="TEXT"
     * @return the media
     */
    public abstract String getMedia();
    
    /**
     * @ejb.interface-method
     * @ejb.persistence
     *      column-name="TEXT"
     * @param media the media
     */
    public abstract void setMedia(String media);

    /**
     * @ejb.interface-method
     * @ejb.persistence
     *      column-name="COUNT" 
     * @return the count
     */
    public abstract Long getCount();
    
    /**
     * @ejb.interface-method
     * @ejb.persistence
     *      column-name="COUNT"
     * @param count
     */
    public abstract void setCount(Long count);
    
    /**
     * @ejb.interface-method
     * @ejb.persistence
     *      column-name="SIZE"
     * @return the size
     */
    public abstract String getSize();
    
    /**
     * @ejb.interface-method
     * @ejb.persistence
     *      column-name="SIZE"
     * @param size the size
     */
    public abstract void setSize(String size);
}


ejb-jar.xml deployement descriptor
XML:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE ejb-jar PUBLIC "-//Sun Microsystems, Inc.//DTD Enterprise JavaBeans 2.0//EN" "http://java.sun.com/dtd/ejb-jar_2_0.dtd">

<ejb-jar >

   <description><![CDATA[No Description.]]></description>
   <display-name>Generated by XDoclet</display-name>

   <enterprise-beans>

      <!-- Entity Beans -->
      <entity >
         <description><![CDATA[Represents a media type in the game collection]]></description>
         <display-name>Media</display-name>

         <ejb-name>Media</ejb-name>

         <local-home>rip.ejb.beans.MediaLocalHome</local-home>
         <local>rip.ejb.beans.MediaLocal</local>

         <ejb-class>rip.ejb.beans.MediaCMP</ejb-class>
         <persistence-type>Container</persistence-type>
         <prim-key-class>java.lang.Long</prim-key-class>
         <reentrant>False</reentrant>
         <cmp-version>2.x</cmp-version>
         <abstract-schema-name>media</abstract-schema-name>
         <cmp-field >
            <description><![CDATA[Gets the row id of the media]]></description>
            <field-name>ID</field-name>
         </cmp-field>
         <cmp-field >
            <description><![CDATA[]]></description>
            <field-name>language</field-name>
         </cmp-field>
         <cmp-field >
            <description><![CDATA[]]></description>
            <field-name>media</field-name>
         </cmp-field>
         <cmp-field >
            <description><![CDATA[]]></description>
            <field-name>count</field-name>
         </cmp-field>
         <cmp-field >
            <description><![CDATA[]]></description>
            <field-name>size</field-name>
         </cmp-field>
          <primkey-field>ID</primkey-field>

         <query>
            <query-method>
               <method-name>findByPrimaryKey</method-name>
               <method-params>
                  <method-param>java.lang.Long</method-param>
               </method-params>
            </query-method>
            <ejb-ql><![CDATA[SELECT OBJECT(m) FROM media WHERE m.ID=?1]]></ejb-ql>
         </query>
         <query>
            <query-method>
               <method-name>findAll</method-name>
               <method-params>
               </method-params>
            </query-method>
            <ejb-ql><![CDATA[SELECT OBJECT(m) FROM media AS m]]></ejb-ql>
         </query>
         <query>
            <query-method>
               <method-name>findAllByLanguage</method-name>
               <method-params>
                  <method-param>java.lang.String</method-param>
               </method-params>
            </query-method>
            <ejb-ql><![CDATA[SELECT OBJECT(m) FROM media WHERE m.LANG=?1]]></ejb-ql>
         </query>
      <!-- Write a file named ejb-finders-MediaBean.xml if you want to define extra finders. -->
      </entity>
   </enterprise-beans>

   <!-- Assembly Descriptor -->
   <assembly-descriptor >
   <container-transaction >
      <method >
         <ejb-name>Media</ejb-name>
          <method-name>*</method-name>
       </method>
       <trans-attribute>Required</trans-attribute>
   </container-transaction>

   </assembly-descriptor>

</ejb-jar>


jboss.xml deployement descriptor
XML:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE jboss PUBLIC "-//JBoss//DTD JBOSS 3.0//EN" "http://www.jboss.org/j2ee/dtd/jboss_3_0.dtd">

<jboss>

   <enterprise-beans>

     <!--
       To add beans that you have deployment descriptor info for, add
       a file to your XDoclet merge directory called jboss-beans.xml that contains
       the <session></session>, <entity></entity> and <message-driven></message-driven>
       markup for those beans.
     -->

      <entity>
         <ejb-name>Media</ejb-name>
         <local-jndi-name>gamecol/Media</local-jndi-name>

      </entity>
 
   <resource-managers>
   </resource-managers>

</jboss>


jbosscmp-jdbc.xml deployment descriptor
XML:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE jbosscmp-jdbc PUBLIC "-//JBoss//DTD JBOSSCMP-JDBC 3.0//EN" "http://www.jboss.org/j2ee/dtd/jbosscmp-jdbc_3_0.dtd">

<jbosscmp-jdbc>
   <defaults>
     <datasource>java:/gamecolDS</datasource>
     <datasource-mapping>mySQL</datasource-mapping>
     <preferred-relation-mapping>relation-table</preferred-relation-mapping>
   </defaults>

   <enterprise-beans>

       <entity>
         <ejb-name>Media</ejb-name>
         <datasource>java:/gamecolDS</datasource>
         <datasource-mapping>mySQL</datasource-mapping>
         <create-table>false</create-table>
         <remove-table>false</remove-table>

         <table-name>MEDIA</table-name>

         <cmp-field>
            <field-name>ID</field-name>
            <column-name>ID</column-name>

        </cmp-field>
         <cmp-field>
            <field-name>language</field-name>
            <column-name>LANG</column-name>

        </cmp-field>
         <cmp-field>
            <field-name>media</field-name>
            <column-name>TEXT</column-name>

        </cmp-field>
         <cmp-field>
            <field-name>count</field-name>
            <column-name>COUNT</column-name>

        </cmp-field>
         <cmp-field>
            <field-name>size</field-name>
            <column-name>SIZE</column-name>

        </cmp-field>

      </entity>
   </enterprise-beans>

</jbosscmp-jdbc>


stacktrace
code:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
2004-08-28 13:11:27,765 ERROR [org.jboss.ejb.EntityContainer] Starting failed jboss.j2ee:jndiName=gamecol/Media,service=EJB
org.jboss.deployment.DeploymentException: Parameter class not found: Long
    at org.jboss.ejb.plugins.cmp.jdbc.metadata.JDBCQueryMetaDataFactory.getQueryMethods(JDBCQueryMetaDataFactory.java:265)
    at org.jboss.ejb.plugins.cmp.jdbc.metadata.JDBCQueryMetaDataFactory.createJDBCQueryMetaData(JDBCQueryMetaDataFactory.java:47)
    at org.jboss.ejb.plugins.cmp.jdbc.metadata.JDBCEntityMetaData.<init>(JDBCEntityMetaData.java:400)
    at org.jboss.ejb.plugins.cmp.jdbc.metadata.JDBCApplicationMetaData.<init>(JDBCApplicationMetaData.java:140)
    at org.jboss.ejb.plugins.cmp.jdbc.metadata.JDBCXmlFileLoader.load(JDBCXmlFileLoader.java:52)
    at org.jboss.ejb.plugins.cmp.jdbc.JDBCStoreManager.loadJDBCEntityMetaData(JDBCStoreManager.java:705)
    at org.jboss.ejb.plugins.cmp.jdbc.JDBCStoreManager.initStoreManager(JDBCStoreManager.java:417)
    at org.jboss.ejb.plugins.cmp.jdbc.JDBCStoreManager.start(JDBCStoreManager.java:365)
    at org.jboss.ejb.plugins.CMPPersistenceManager.start(CMPPersistenceManager.java:147)
    at org.jboss.ejb.EntityContainer.startService(EntityContainer.java:337)
    at org.jboss.system.ServiceMBeanSupport.jbossInternalStart(ServiceMBeanSupport.java:271)
    at org.jboss.system.ServiceMBeanSupport.jbossInternalLifecycle(ServiceMBeanSupport.java:221)
    at sun.reflect.GeneratedMethodAccessor15.invoke(Unknown Source)
    at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
    at java.lang.reflect.Method.invoke(Method.java:324)
    at org.jboss.mx.server.ReflectedDispatcher.dispatch(ReflectedDispatcher.java:60)
    at org.jboss.mx.server.Invocation.dispatch(Invocation.java:61)
    at org.jboss.mx.server.Invocation.dispatch(Invocation.java:53)
    at org.jboss.mx.server.Invocation.invoke(Invocation.java:86)
    at org.jboss.mx.server.AbstractMBeanInvoker.invoke(AbstractMBeanInvoker.java:185)
    at org.jboss.mx.server.MBeanServerImpl.invoke(MBeanServerImpl.java:473)
    at org.jboss.system.ServiceController$ServiceProxy.invoke(ServiceController.java:837)
    at $Proxy17.start(Unknown Source)
    at org.jboss.system.ServiceController.start(ServiceController.java:367)
    at sun.reflect.GeneratedMethodAccessor6.invoke(Unknown Source)
    at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
    at java.lang.reflect.Method.invoke(Method.java:324)
    at org.jboss.mx.server.ReflectedDispatcher.dispatch(ReflectedDispatcher.java:60)
    at org.jboss.mx.server.Invocation.dispatch(Invocation.java:61)
    at org.jboss.mx.server.Invocation.dispatch(Invocation.java:53)
    at org.jboss.mx.server.Invocation.invoke(Invocation.java:86)
    at org.jboss.mx.server.AbstractMBeanInvoker.invoke(AbstractMBeanInvoker.java:185)
    at org.jboss.mx.server.MBeanServerImpl.invoke(MBeanServerImpl.java:473)
    at org.jboss.mx.util.MBeanProxyExt.invoke(MBeanProxyExt.java:176)
    at $Proxy37.start(Unknown Source)
    at org.jboss.ejb.EjbModule.startService(EjbModule.java:367)
    at org.jboss.system.ServiceMBeanSupport.jbossInternalStart(ServiceMBeanSupport.java:271)
    at org.jboss.system.ServiceMBeanSupport.jbossInternalLifecycle(ServiceMBeanSupport.java:221)
    at sun.reflect.GeneratedMethodAccessor15.invoke(Unknown Source)
    at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
    at java.lang.reflect.Method.invoke(Method.java:324)
    at org.jboss.mx.server.ReflectedDispatcher.dispatch(ReflectedDispatcher.java:60)
    at org.jboss.mx.server.Invocation.dispatch(Invocation.java:61)
    at org.jboss.mx.server.Invocation.dispatch(Invocation.java:53)
    at org.jboss.mx.server.Invocation.invoke(Invocation.java:86)
    at org.jboss.mx.server.AbstractMBeanInvoker.invoke(AbstractMBeanInvoker.java:185)
    at org.jboss.mx.server.MBeanServerImpl.invoke(MBeanServerImpl.java:473)
    at org.jboss.system.ServiceController$ServiceProxy.invoke(ServiceController.java:837)
    at $Proxy17.start(Unknown Source)
    at org.jboss.system.ServiceController.start(ServiceController.java:367)
    at sun.reflect.GeneratedMethodAccessor6.invoke(Unknown Source)
    at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
    at java.lang.reflect.Method.invoke(Method.java:324)
    at org.jboss.mx.server.ReflectedDispatcher.dispatch(ReflectedDispatcher.java:60)
    at org.jboss.mx.server.Invocation.dispatch(Invocation.java:61)
    at org.jboss.mx.server.Invocation.dispatch(Invocation.java:53)
    at org.jboss.mx.server.Invocation.invoke(Invocation.java:86)
    at org.jboss.mx.server.AbstractMBeanInvoker.invoke(AbstractMBeanInvoker.java:185)
    at org.jboss.mx.server.MBeanServerImpl.invoke(MBeanServerImpl.java:473)
    at org.jboss.mx.util.MBeanProxyExt.invoke(MBeanProxyExt.java:176)
    at $Proxy14.start(Unknown Source)
    at org.jboss.ejb.EJBDeployer.start(EJBDeployer.java:570)
    at org.jboss.deployment.MainDeployer.start(MainDeployer.java:836)
    at org.jboss.deployment.MainDeployer.deploy(MainDeployer.java:645)
    at org.jboss.deployment.MainDeployer.deploy(MainDeployer.java:608)
    at sun.reflect.GeneratedMethodAccessor17.invoke(Unknown Source)
    at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
    at java.lang.reflect.Method.invoke(Method.java:324)
    at org.jboss.mx.server.ReflectedDispatcher.dispatch(ReflectedDispatcher.java:60)
    at org.jboss.mx.server.Invocation.dispatch(Invocation.java:61)
    at org.jboss.mx.server.Invocation.dispatch(Invocation.java:53)
    at org.jboss.mx.server.Invocation.invoke(Invocation.java:86)
    at org.jboss.mx.server.AbstractMBeanInvoker.invoke(AbstractMBeanInvoker.java:185)
    at org.jboss.mx.server.MBeanServerImpl.invoke(MBeanServerImpl.java:473)
    at org.jboss.mx.util.MBeanProxyExt.invoke(MBeanProxyExt.java:176)
    at $Proxy7.deploy(Unknown Source)
    at org.jboss.deployment.scanner.URLDeploymentScanner.deploy(URLDeploymentScanner.java:304)
    at org.jboss.deployment.scanner.URLDeploymentScanner.scan(URLDeploymentScanner.java:478)
    at org.jboss.deployment.scanner.AbstractDeploymentScanner$ScannerThread.doScan(AbstractDeploymentScanner.java:201)
    at org.jboss.deployment.scanner.AbstractDeploymentScanner.startService(AbstractDeploymentScanner.java:274)
    at org.jboss.system.ServiceMBeanSupport.jbossInternalStart(ServiceMBeanSupport.java:271)
    at org.jboss.system.ServiceMBeanSupport.jbossInternalLifecycle(ServiceMBeanSupport.java:221)
    at sun.reflect.GeneratedMethodAccessor2.invoke(Unknown Source)
    at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
    at java.lang.reflect.Method.invoke(Method.java:324)
    at org.jboss.mx.server.ReflectedDispatcher.dispatch(ReflectedDispatcher.java:60)
    at org.jboss.mx.server.Invocation.dispatch(Invocation.java:61)
    at org.jboss.mx.server.Invocation.dispatch(Invocation.java:53)
    at org.jboss.mx.server.Invocation.invoke(Invocation.java:86)
    at org.jboss.mx.server.AbstractMBeanInvoker.invoke(AbstractMBeanInvoker.java:185)
    at org.jboss.mx.server.MBeanServerImpl.invoke(MBeanServerImpl.java:473)
    at org.jboss.system.ServiceController$ServiceProxy.invoke(ServiceController.java:837)
    at $Proxy0.start(Unknown Source)
    at org.jboss.system.ServiceController.start(ServiceController.java:367)
    at sun.reflect.GeneratedMethodAccessor6.invoke(Unknown Source)
    at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
    at java.lang.reflect.Method.invoke(Method.java:324)
    at org.jboss.mx.server.ReflectedDispatcher.dispatch(ReflectedDispatcher.java:60)
    at org.jboss.mx.server.Invocation.dispatch(Invocation.java:61)
    at org.jboss.mx.server.Invocation.dispatch(Invocation.java:53)
    at org.jboss.mx.server.Invocation.invoke(Invocation.java:86)
    at org.jboss.mx.server.AbstractMBeanInvoker.invoke(AbstractMBeanInvoker.java:185)
    at org.jboss.mx.server.MBeanServerImpl.invoke(MBeanServerImpl.java:473)
    at org.jboss.mx.util.MBeanProxyExt.invoke(MBeanProxyExt.java:176)
    at $Proxy4.start(Unknown Source)
    at org.jboss.deployment.SARDeployer.start(SARDeployer.java:251)
    at org.jboss.deployment.MainDeployer.start(MainDeployer.java:836)
    at org.jboss.deployment.MainDeployer.deploy(MainDeployer.java:645)
    at org.jboss.deployment.MainDeployer.deploy(MainDeployer.java:608)
    at org.jboss.deployment.MainDeployer.deploy(MainDeployer.java:592)
    at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
    at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39)
    at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
    at java.lang.reflect.Method.invoke(Method.java:324)
    at org.jboss.mx.server.ReflectedDispatcher.dispatch(ReflectedDispatcher.java:60)
    at org.jboss.mx.server.Invocation.dispatch(Invocation.java:61)
    at org.jboss.mx.server.Invocation.dispatch(Invocation.java:53)
    at org.jboss.mx.server.Invocation.invoke(Invocation.java:86)
    at org.jboss.mx.server.AbstractMBeanInvoker.invoke(AbstractMBeanInvoker.java:185)
    at org.jboss.mx.server.MBeanServerImpl.invoke(MBeanServerImpl.java:473)
    at org.jboss.mx.util.MBeanProxyExt.invoke(MBeanProxyExt.java:176)
    at $Proxy5.deploy(Unknown Source)
    at org.jboss.system.server.ServerImpl.doStart(ServerImpl.java:407)
    at org.jboss.system.server.ServerImpl.start(ServerImpl.java:311)
    at org.jboss.Main.boot(Main.java:144)
    at org.jboss.Main$1.run(Main.java:389)
    at java.lang.Thread.run(Thread.java:534)

[ Voor 9% gewijzigd door ari3 op 28-08-2004 14:22 ]

"Kill one man, and you are a murderer. Kill millions of men, and you are a conqueror. Kill them all, and you are a god." -- Jean Rostand


  • zneek
  • Registratie: Augustus 2001
  • Laatst online: 08-02-2025
Volgens mij neem je die mapping op in een apart document, ik weet alleen zo niet meer welke. Maandag kan ik het voor je opzoeken als ik weer op kantoor ben.

[edit] ik weet dat wij ook die mapping vastgelegd hebben voor elke DBMS wat we gebruiken.

[ Voor 23% gewijzigd door zneek op 28-08-2004 14:40 ]


  • gorgi_19
  • Registratie: Mei 2002
  • Laatst online: 06:53

gorgi_19

Kruimeltjes zijn weer op :9

Erhm.. Ik zie in totaal 500 regels code, waarvan 130 regels foutmelding. Ik gok dat er weinig mensen echt zinnen hebben om deze lap door te gaan werken. P&W FAQ - De "quickstart" spreekt immers ook over relevante code. Ik kan me niet voorstellen dat je geisoleerde probleem 370 regels lang is.

Daarom doe ik hem dicht. :)

Digitaal onderwijsmateriaal, leermateriaal voor hbo


Dit topic is gesloten.