Avatar billede drevi Nybegynder
29. september 2003 - 13:12 Der er 83 kommentarer og
1 løsning

Relations fejl cmp

Jojo det fortsætter.

Jeg sidder fast i en mapping som jeg har bygget ud fra JBossCMP dokumentation desvære har jeg kun opnået at få en lang række fejlmeldelser.

Generalt kan JBoss ikke genkende nogen af Bean'sne efter mappingen er kommet på?

relationerne:
<ejb-jar>
  <relationships>
  <ejb-relation>
    <ejb-relation-name>Container-Hejselad</ejb-relation-name>
    <ejb-relationship-role>
      <ejb-relation-role-name>Container-has-Hejselad</ejb-relation-role-name>
    <multiplicity>Many</multiplicity>
    <relationship-role-source>
      <ejb-name>Container</ejb-name>
    </relationship-role-source>
    <cmr-field>
      <cmr-field-name>Hejselad_ID</cmr-field-name>
      <cmr-field-type>java.util.Collection</cmr-field-type>
    </cmr-field>
    </ejb-relationship-role>
    <ejb-relationship-role>
      <ejb-relation-role-name>Hejselad-has-Container</ejb-relation-role-name>
      <multiplicity>Many</multiplicity>
      <relationship-role-source>
          <ejb-name>Hejselad</ejb-name>
          </relationship-role-source>
          <cmr-field>
          <cmr-field-name>Container_ID</cmr-field-name>
          <cmr-field-type>java.util.Collection</cmr-field-type>
        </cmr-field>
      </ejb-relationship-role>
    </ejb-relation>

  </relationships>
</ejb-jar>

<jbosscmp-jdbc>
<relationships>
    <ejb-relation>
      <ejb-relation-name>Container-Hejselad</ejb-relation-name>
     
      <relation-table-mapping>
        <table-name>HL_CON</table-name>
      </relation-table-mapping>     

      <ejb-relationship-role>
          <ejb-relation-role-name>container-has-hejselad</ejb-relation-role-name>
        <key-fields>
          <key-field>   
            <field-name>Container_ID</field-name>
           
          </key-field>
        </key-fields>
      </ejb-relationship-role>
      <ejb-relationship-role>
          <ejb-relation-role-name>hejselad-has-container</ejb-relation-role-name>
        <key-fields>
                    <key-field>
                    <field-name>Hejselad_ID</field-name>
       
                  </key-field>
                </key-fields>
      </ejb-relationship-role>
    </ejb-relation>

  </relationships>
</jbosscmp-jdbc>

Der er lavet abstrate metoder til denne mapping.

Hvis jeg "piller" disse kode stykker ud af min .xml filer så virker det upåklageligt dog uden den relation jeg ønsker. hvad gør jeg forkert? jeg har søgt i JBoss's hjemmeside forum uden at finde noget der har hjulpet mig tætter på målet.
Avatar billede arne_v Ekspert
29. september 2003 - 20:55 #1
Hvilke fejlmeddelelser får du ?
Avatar billede drevi Nybegynder
30. september 2003 - 09:35 #2
nå ja det vil jo nok hjælpe.

09:20:13,878 ERROR [XmlFileLoader] XmlFileLoader: File jar:file:/C:/j2eesdk1.4_beta2/jboss-3.2.1/server/default/tmp/deploy/server/default/deploy/Diplas.jar/29.Diplas.jar!/META-INF/jbosscmp-jdbc.xml process error. Line: 336. Error message: Element type "ejb-relation-role-name" must be declared.
09:20:13,888 ERROR [XmlFileLoader] XmlFileLoader: File jar:file:/C:/j2eesdk1.4_beta2/jboss-3.2.1/server/default/tmp/deploy/server/default/deploy/Diplas.jar/29.Diplas.jar!/META-INF/jbosscmp-jdbc.xml process error. Line: 343. Error message: The content of element type "ejb-relationship-role"
must match "(ejb-relationship-role-name,fk-constraint?,key-fields?,read-ahead?)".
09:20:13,888 ERROR [XmlFileLoader] XmlFileLoader: File jar:file:/C:/j2eesdk1.4_beta2/jboss-3.2.1/server/default/tmp/deploy/server/default/deploy/Diplas.jar/29.Diplas.jar!/META-INF/jbosscmp-jdbc.xml process error. Line: 345. Error message: Element type "ejb-relation-role-name" must be declared.
09:20:13,898 ERROR [XmlFileLoader] XmlFileLoader: File jar:file:/C:/j2eesdk1.4_beta2/jboss-3.2.1/server/default/tmp/deploy/server/default/deploy/Diplas.jar/29.Diplas.jar!/META-INF/jbosscmp-jdbc.xml process error. Line: 352. Error message: The content of element type "ejb-relationship-role"
must match "(ejb-relationship-role-name,fk-constraint?,key-fields?,read-ahead?)".
09:20:13,908 ERROR [EntityContainer] Starting failed
org.jboss.deployment.DeploymentException: Invalid XML: file=jar:file:/C:/j2eesdk1.4_beta2/jboss-3.2.1/server/default/tmp/deploy/server/default/deploy/Diplas.jar/29.Diplas.jar!/META-INF/jbosscmp-jdbc.xml
        at org.jboss.metadata.XmlFileLoader.getDocument(XmlFileLoader.java:296)

det er så efterfulgt af en JBoss stack trace på nogle 100 linier
Avatar billede arne_v Ekspert
30. september 2003 - 22:04 #3
Prøv og erstat ejb-relation-role-name med ejb-relationship-role-name !
Avatar billede drevi Nybegynder
01. oktober 2003 - 12:50 #4
Sådan det hjalp jo ustyrligt, nu kan den deployes.
Jeg kan statig ikke hente fra min relation, så jeg sætter lige points op(hjælp skal jo ikke gå overset forbi).

jeg får to fejl.
JBoss:
:14:17,159 WARN  [TxConnectionManager$LocalXAResource] Prepare called on a local tx. Use of local transactions on a jta transaction with more than one branch may result in inconsistent data in some cases of failure.

Klienten:
java.lang.reflect.UndeclaredThrowableException
    at $Proxy3.getHejselad_ID(Unknown Source)
Caused by: java.io.NotSerializableException: org.jboss.ejb.plugins.cmp.jdbc.bridge.RelationSet
    at java.io.ObjectOutputStream.writeObject0(ObjectOutputStream.java:1054)
    at java.io.ObjectOutputStream.writeObject(ObjectOutputStream.java:278)
    at java.rmi.MarshalledObject.<init>(MarshalledObject.java:92)

jeg har ikke haft tid til at søge rundt endnu, men ellers finder vi nok ud af det også, nogen ideer?
Avatar billede arne_v Ekspert
01. oktober 2003 - 12:56 #5
Gæt:

din datasource er ikke erklæret til at være XA compliant
Avatar billede drevi Nybegynder
01. oktober 2003 - 13:03 #6
ok hvordan sikker jeg så den er det?
Avatar billede drevi Nybegynder
01. oktober 2003 - 13:11 #7
min datascource ser således ud:
<datasources>
  <local-tx-datasource>
    <jndi-name>HolmJensen</jndi-name>
    <connection-url>jdbc:microsoft:sqlserver://localhost:1433;DatabaseName=HolmJensen</connection-url>
    <driver-class>com.microsoft.jdbc.sqlserver.SQLServerDriver</driver-class>
    <user-name>dbuser</user-name>
    <password>access</password>
  </local-tx-datasource>

</datasources>

kan man blot definere en ny eller ændre tx til xa?
Avatar billede arne_v Ekspert
01. oktober 2003 - 13:16 #8
Det er en local-tx-datasource og det tror jeg ikke er godt nok.
Avatar billede arne_v Ekspert
01. oktober 2003 - 13:18 #9
Her er et eksempel:

<?xml version="1.0" encoding="UTF-8"?>

<server>

  <mbean code="org.jboss.resource.connectionmanager.LocalTxConnectionManager" name="jboss.jca:service=LocalTxCM,name=TestDB">

    <depends optional-attribute-name="ManagedConnectionFactoryName">
      <mbean code="org.jboss.resource.connectionmanager.RARDeployment" name="jboss.jca:service=LocalTxDS,name=TestDB">

        <attribute name="JndiName">TestDB</attribute>
        <attribute name="ManagedConnectionFactoryProperties">
          <properties>
            <config-property name="ConnectionURL" type="java.lang.String">jdbc:odbc:TestDB</config-property>
            <config-property name="DriverClass" type="java.lang.String">sun.jdbc.odbc.JdbcOdbcDriver</config-property>
            <config-property name="UserName" type="java.lang.String"></config-property>
            <config-property name="Password" type="java.lang.String"></config-property>
          </properties>
        </attribute>

        <depends optional-attribute-name="OldRarDeployment">jboss.jca:service=RARDeployment,name=JBoss LocalTransaction JDBC Wrapper</depends>

      </mbean>
    </depends>
    <depends optional-attribute-name="ManagedConnectionPool">
      <mbean code="org.jboss.resource.connectionmanager.JBossManagedConnectionPool" name="jboss.jca:service=LocalTxPool,name=TestDB">

        <attribute name="MinSize">0</attribute>
        <attribute name="MaxSize">50</attribute>
        <attribute name="BlockingTimeoutMillis">5000</attribute>
        <attribute name="IdleTimeoutMinutes">15</attribute>
        <attribute name="Criteria">ByContainer</attribute>
      </mbean>
    </depends>
    <depends optional-attribute-name="CachedConnectionManager">jboss.jca:service=CachedConnectionManager</depends>

    <depends optional-attribute-name="JaasSecurityManagerService">jboss.security:service=JaasSecurityManager</depends>

    <attribute name="TransactionManager">java:/TransactionManager</attribute>

    <depends>jboss.jca:service=RARDeployer</depends>

  </mbean>

</server>
Avatar billede arne_v Ekspert
01. oktober 2003 - 13:21 #10
TestDB skal rettes til det rigtige navn.

Og url/driver/username/password skal også rettes til.
Avatar billede arne_v Ekspert
01. oktober 2003 - 13:22 #11
Men det er iøvrigt stadig en local-tx, så jeg vil ikke garantere at det er nok.

Men det er værd at prøve.
Avatar billede drevi Nybegynder
01. oktober 2003 - 13:24 #12
jeg har fundet en datascource der køre med XA :
<datasources>
  <xa-datasource>
    <jndi-name>MSSQLXADS</jndi-name>
    <xa-datasource-class>com.microsoft.jdbcx.sqlserver.SQLServerDataSource</xa-datasource-class>
    <xa-datasource-property name="ServerName">myserver</xa-datasource-property>
    <xa-datasource-property name="DatabaseName">mydatabase</xa-datasource-property>
    <xa-datasource-property name="SelectMethod">cursor</xa-datasource-property>
<!-- not sure if these should be here-->
    <user-name>x</user-name>
    <password>y</password>
  </xa-datasource>

men kan jeg bruge den istedet for elelr er <server> nødvendigt alligevel?
Avatar billede arne_v Ekspert
01. oktober 2003 - 13:30 #13
Prøv med den !
Avatar billede drevi Nybegynder
01. oktober 2003 - 14:20 #14
hmm Arne kan du forklare den her linie

<xa-datasource-property name="ServerName">myserver</xa-datasource-property>

jeg har ikke kunne finde nogen kommentar til den og JBoss melder den her fejl:

Depends On Me: org.jboss.deployment.DeploymentException: Error while fixing table name; - nested throwable: (org.jboss.util.NestedSQLException: Could not create connection; - nested throwable: (java.sql.SQLException: [Microsoft][SQLServer 2000 Driver for JDBC]Error establishing socket.); -
nested throwable: (org.jboss.resource.JBossResourceException: Could not create connection; - nested throwable: (java.sql.SQLException: [Microsoft][SQLServer 2000 Driver for JDBC]Error establishing socket.)))]

og hvilke andre String's kan man sætte ind her istedet for "cursor"
<xa-datasource-property name="SelectMethod">cursor</xa-datasource-property>
Avatar billede arne_v Ekspert
01. oktober 2003 - 23:17 #15
Avatar billede arne_v Ekspert
01. oktober 2003 - 23:28 #16
http://p2p.wrox.com/topic.asp?TOPIC_ID=4506

Har et eksempel for Oracle med din måde.

Til syneladende kan du undlade:

<xa-datasource-property name="ServerName">myserver</xa-datasource-property>

og i.s.f. lave en:

<xa-datasource-property name="URL">jdbc:microsoft:sqlserver://localhost:1433;DatabaseName=HolmJensen</xa-datasource-property>
Avatar billede drevi Nybegynder
02. oktober 2003 - 10:26 #17
ok jeg har prøvet med "min måde" det giver denne fejl:

Depends On Me: org.jboss.deployment.DeploymentException: Error while fixing table name; - nested throwable: (org.jboss.util.NestedSQLException: Could not create connection; - nested throwable: (java.sql.SQLException: [Microsoft][SQLServer 2000 Driver for JDBC][SQLServer]Could not find stor
ed procedure 'master..xp_jdbc_open'.); - nested throwable: (org.jboss.resource.JBossResourceException: Could not create connection; - nested throwable: (java.sql.SQLException: [Microsoft][SQLServer 2000 Driver for JDBC][SQLServer]Could not find stored procedure 'master..xp_jdbc_open'.)))]

hvad betyder master..xp_jdbs_open?
nå jeg prøver lige på den anden måde også
Avatar billede arne_v Ekspert
02. oktober 2003 - 10:58 #18
Hvad version af SQLServer kører du ?

(xp_jdbc_open må jo være en stored procedure)
Avatar billede arne_v Ekspert
02. oktober 2003 - 11:00 #19
Avatar billede drevi Nybegynder
02. oktober 2003 - 11:00 #20
MS SQLSERVER 2000
Avatar billede arne_v Ekspert
02. oktober 2003 - 11:00 #21
Avatar billede drevi Nybegynder
02. oktober 2003 - 11:03 #22
ok jeg har testet den anden løsning giver samme fejl så...
Avatar billede arne_v Ekspert
02. oktober 2003 - 11:11 #23
Så prøv lige og installer xp_jdbc_open per vejledning i:
http://www.geocrawler.com/archives/3/10767/2002/8/1150/9240269/
Avatar billede drevi Nybegynder
02. oktober 2003 - 11:24 #24
ja det har jeg fik bare svaret inden jeg trykkede opdate, min path er ikke rigtig da den ikke kan finde min sqljdbc.dll,

jeg har sat SystemVariablen path op med URL'en til den mappe det er måske ikke den path der menes??
Avatar billede arne_v Ekspert
02. oktober 2003 - 11:28 #25
Har du også genstartet SQLServer ?
Avatar billede drevi Nybegynder
02. oktober 2003 - 11:39 #26
Ja jeg har genstartet hele serveren men den siger stadig det samme....

JBoss deloy fejl:
Depends On Me: org.jboss.deployment.DeploymentException: Error while fixing table name; - nested throwable: (org.jboss.util.NestedSQLException: Could not create connection; - nested throwable: (java.sql.SQLException: [Microsoft][SQLServer 2000 Driver for JDBC][SQLServer]Cannot load the DLL
sqljdbc.dll, or one of the DLLs it references. Reason: 126(The specified module could not be found.).); - nested throwable: (org.jboss.resource.JBossResourceException: Could not create connection; - nested throwable: (java.sql.SQLException: [Microsoft][SQLServer 2000 Driver for JDBC][SQLSe
ver]Cannot load the DLL sqljdbc.dll, or one of the DLLs it references. Reason: 126(The specified module could not be found.).)))]

Det må da betyde at min path ikke virker efter hensigten
Avatar billede arne_v Ekspert
02. oktober 2003 - 11:51 #27
Ja. Prøv evt. at kopiere den til SQLServer directory og genstart.

Det må dæleme da være til at løse.
Avatar billede drevi Nybegynder
02. oktober 2003 - 12:05 #28
yes nu kan den deploys uden fejl man skulle kopier sqljdbc.dll til MS SQLserver/Binn/

men desvære køre det ikke jeg får en fejl i klienten, fejlen er en java fejl der hedder:
java.lang.reflect.UndeclaredThrowableException
    at $Proxy3.getHejselad_ID(Unknown Source)
    at TestDiplas.main(TestDiplas.java:50)
Caused by: java.io.NotSerializableException: org.jboss.ejb.plugins.cmp.jdbc.bridge.RelationSet
    at java.io.ObjectOutputStream.writeObject0(ObjectOutputStream.java:1054)

det pokkers opslidende det her
Avatar billede arne_v Ekspert
02. oktober 2003 - 12:21 #29
Der er et af de objekter der bruges som ikke implementerer java.io.Serializable !
Avatar billede drevi Nybegynder
02. oktober 2003 - 12:34 #30
jeg bruger java.util.Collection; ??
Avatar billede drevi Nybegynder
02. oktober 2003 - 12:37 #31
og elementerne i en Collection er java.lang.Integer
Avatar billede arne_v Ekspert
02. oktober 2003 - 12:42 #32
Der er ikke andre klasser involveret omkring getHejselad_ID ?
Avatar billede drevi Nybegynder
02. oktober 2003 - 12:45 #33
jo bean'en Container som indeholder den abstracte metode getHejselad_ID som den jo får fra relationen til bean'en Hejselad

begge beans deployes fint og man kan hente individuelt fra begge
Avatar billede arne_v Ekspert
02. oktober 2003 - 12:47 #34
Hm.

Den skal jeg vist tygge lidt på.
Avatar billede drevi Nybegynder
02. oktober 2003 - 14:04 #35
kan det have noget at gøre med mit kald??

vb = session.showContainer();
System.out.println(vb);
           
Iterator ic = vb.iterator();
System.out.println(((Container) ic.next()).getHejselad_ID());

det foregår nemlig på min test klient og ikke i sessionen kan det have noget at sige?
Avatar billede arne_v Ekspert
02. oktober 2003 - 19:25 #36
Bingo !

Ja.

CMR getXxxx metoder må ikke exposes i Remote interface men kun i local interface.

Citat fra EJB 2.0 spec:

The accessor methods for the container-managed relationship fields must not be exposed in the
remote interface of an entity bean.

Sæt en session bean facade på !
Avatar billede arne_v Ekspert
02. oktober 2003 - 19:25 #37
Det er også en god ide af andre årsager.

Se f.eks.:
  http://www.eksperten.dk/spm/408644
Avatar billede drevi Nybegynder
03. oktober 2003 - 10:10 #38
ok så burde det jo virke nu....
Avatar billede drevi Nybegynder
03. oktober 2003 - 10:14 #39
lige en ting mere nu har jeg pillet en del under forsøgsd fasen jo. hvilket selvfølgelig er resulteret i at nu er jeg tilbage til HolmJensen not bound det er da meningen at server.xml og mssql_ds.xml ikke skal forekomme begge i jar filen den ene er jo TX og den anden XA?
Avatar billede arne_v Ekspert
03. oktober 2003 - 10:26 #40
Kun en af dem.

Men det er vel bare at slette den ene service.

Og evt. genstarte.
Avatar billede drevi Nybegynder
03. oktober 2003 - 10:35 #41
jamen den har stået slukket hele natten så den er vel genstartet..

fejlen ser sådan ud i JBoss:
Depends On Me: org.jboss.deployment.DeploymentException: Error while fixing table name; - nested throwable: (org.jboss.util.NestedSQLException: Could not find accessor on XADataSource: ; - nested throwable: (java.lang.NoSuchMethodException: com.microsoft.jdbcx.sqlserver.SQLServerDataSource
.setURL(java.lang.String)); - nested throwable: (org.jboss.resource.JBossResourceException: Could not find accessor on XADataSource: ; - nested throwable: (java.lang.NoSuchMethodException: com.microsoft.jdbcx.sqlserver.SQLServerDataSource.setURL(java.lang.String)))), ObjectName: jboss.j2ee:
jndiName=Container,service=EJB
Avatar billede drevi Nybegynder
03. oktober 2003 - 10:40 #42
må heller tilføje at det er med mssql_xa_ds med server.xml får jeg denne fejl

I Depend On:
Depends On Me: org.jboss.deployment.DeploymentException: Error: can't find data source: java:/HolmJensen; - nested throwable: (javax.naming.NameNotFoundException: HolmJensen not bound), ObjectName: jboss.j2ee:jndiName=Container,service=EJB

er det DB'en der hænger?
Avatar billede arne_v Ekspert
03. oktober 2003 - 12:07 #43
Prøv og slet den også.

Så genstarter du og redeployer og ser om der kommer fejl ved
det (uden at EJB er deployet).
Avatar billede drevi Nybegynder
03. oktober 2003 - 12:24 #44
he jep, uden nogen af de to xml filer får jeg den samme fejl :(

hvad gør man så??
Avatar billede drevi Nybegynder
03. oktober 2003 - 12:34 #45
ja databasen køre fint hvis det var den du mente
Avatar billede arne_v Ekspert
03. oktober 2003 - 13:15 #46
Prøv så og redeploy den rigte service XML (XA) og se om det giver nogen fejl.

Og sp prøver du at redeploye EJB bagefter.
Avatar billede drevi Nybegynder
03. oktober 2003 - 13:25 #47
den rigtige?
jeg har bare pakket det hele i min jar.
hvis jeg deployer med min Mssql_ds.xml(TX) fil er der ingen fejl, men så har jeg igen ingen relation jo
Avatar billede arne_v Ekspert
03. oktober 2003 - 22:58 #48
Øh.

Jeg deployer da altid service XML filerne separat af applikationerne.
Avatar billede drevi Nybegynder
03. oktober 2003 - 23:45 #49
aha det kan jo måske gøre en forskel..

hvordan deployer du uden for applikationen?
jeg har bare puttet den i .jar fordi jeg ikke har fundet noget der sagde andreledes i JBoss står der man skal lave dem men ikke helt hvor jeg gør af dem, så jeg antog at de skulle ligge med resten af .xml i META-INF
Avatar billede arne_v Ekspert
03. oktober 2003 - 23:52 #50
Jeg kopierer bare xxxx-service.xml til deploy directoriet.


En af fiduserne er at så kan flere applikationer bruge samme
datasource.

[jeg har dog altid brugt den "lange" form aldrig den "korte", så
jeg ved ikke om det gør en forskel]
Avatar billede drevi Nybegynder
04. oktober 2003 - 00:23 #51
ok det skal jeg da lige prøve imorgen når jeg har testmiljøet i hænderne igen
men du siger din "lange" løsning hedder mssql-service.xml(f.eks.) eller er navnet egentlig ligegyldigt?
Avatar billede arne_v Ekspert
04. oktober 2003 - 00:34 #52
Navnet er ligegyldigt. Traditionelt er der xxxxx-service.xml, hvor
xxxxx er noget relevant.
Avatar billede drevi Nybegynder
04. oktober 2003 - 00:48 #53
hvis jeg deployer xxxx-service.xml filen ved siden af så skal min META.INF kun indeholde ejb-jar.xml , JBoss.xml, JBosscmp-jbdc.xml og en MF fil?
Avatar billede arne_v Ekspert
04. oktober 2003 - 00:49 #54
Ja.
Avatar billede drevi Nybegynder
04. oktober 2003 - 13:51 #55
min MSSQL-service.xml :
<?xml version="1.0" encoding="UTF-8"?>

<server>

  <mbean code="org.jboss.resource.connectionmanager.XATxConnectionManager" name="jboss.jca:service=XATxCM,name=HolmJensen">
    <depends>jboss.jca:service=RARDeployer</depends>
    <depends optional-attribute-name="ManagedConnectionFactoryName">
      <mbean code="org.jboss.resource.connectionmanager.RARDeployment" name="jboss.jca:service=XATxDS,name=HolmJensen">

        <attribute name="JndiName">HolmJensen</attribute>
        <attribute name="ManagedConnectionFactoryProperties">
          <properties>
            <config-property name="ConnectionURL" type="java.lang.String">jdbc:odbc:HolmJensen</config-property>
            <config-property name="DriverClass" type="java.lang.String">com.microsoft.jdbc.sqlserver.SQLServerDriver</config-property>
            <config-property name="UserName" type="java.lang.String">dbuser</config-property>
            <config-property name="Password" type="java.lang.String">access</config-property>
          </properties>
        </attribute>

        <depends optional-attribute-name="OldRarDeployment">jboss.jca:service=RARDeployment,name=JBoss LocalTransaction JDBC Wrapper</depends>

      </mbean>
    </depends>
    <depends optional-attribute-name="ManagedConnectionPool">
      <mbean code="org.jboss.resource.connectionmanager.JBossManagedConnectionPool" name="jboss.jca:service=LocalTxPool,name=HolmJensen">

        <attribute name="MinSize">0</attribute>
        <attribute name="MaxSize">50</attribute>
        <attribute name="BlockingTimeoutMillis">5000</attribute>
        <attribute name="IdleTimeoutMinutes">15</attribute>
        <attribute name="Criteria">ByContainer</attribute>
      </mbean>
    </depends>
    <depends optional-attribute-name="CachedConnectionManager">jboss.jca:service=CachedConnectionManager</depends>

    <depends optional-attribute-name="JaasSecurityManagerService">jboss.security:service=JaasSecurityManager</depends>

    <attribute name="TransactionManager">java:/TransactionManager</attribute>

    <depends>jboss.jca:service=RARDeployer</depends>

  </mbean>

</server>

JBoss fejl:
13:46:55,891 ERROR [URLDeploymentScanner] MBeanException: Exception in MBean operation 'checkIncompleteDeployments()'
Cause: Incomplete Deployment listing:
Packages waiting for a deployer:
[org.jboss.deployment.DeploymentInfo@a21e5f1e { url=file:/C:/j2eesdk1.4_beta2/jboss-3.2.1/server/default/deploy/MSSQL-service.xml }
  deployer: null
  status: null
  state: INIT_WAITING_DEPLOYER
  watch: file:/C:/j2eesdk1.4_beta2/jboss-3.2.1/server/default/deploy/MSSQL-service.xml
  lastDeployed: 1065265328918
  lastModified: 1065265328918
  mbeans:
Avatar billede drevi Nybegynder
04. oktober 2003 - 13:51 #56
det var vidst den fejl du spurgte om før hen ik?
Avatar billede drevi Nybegynder
04. oktober 2003 - 14:18 #57
tilgengæld kan den korte løsning godt deployes

<datasources>
  <xa-datasource>
    <jndi-name>HolmJensen</jndi-name>
    <xa-datasource-class>com.microsoft.jdbcx.sqlserver.SQLServerDataSource</xa-datasource-class>
    <xa-datasource-property name="URL">jdbc:microsoft:sqlserver://localhost:1433;DatabaseName=HolmJensen</xa-datasource-property>
    <xa-datasource-property name="DatabaseName">HolmJensen</xa-datasource-property>
    <xa-datasource-property name="SelectMethod">cursor</xa-datasource-property>   
<!-- not sure if these should be here-->
    <user-name>dbuser</user-name>
    <password>access</password>
  </xa-datasource>

</datasources>

men jeg får så den her fejl på selve applikation deployment:

14:17:33,423 ERROR [EntityContainer] Starting failed
org.jboss.deployment.DeploymentException: Error while fixing table name; - nested throwable: (org.jboss.util.NestedSQLException: Could not find accessor on XADataSource: ; - nested throwable: (java.lang.NoSuchMethodException: com.microsoft.jdbcx.sqlserver.SQLServerDataSource.setURL(java.lan
g.String)); - nested throwable: (org.jboss.resource.JBossResourceException: Could not find accessor on XADataSource: ; - nested throwable: (java.lang.NoSuchMethodException: com.microsoft.jdbcx.sqlserver.SQLServerDataSource.setURL(java.lang.String))))
        at org.jboss.ejb.plugins.cmp.jdbc.SQLUtil.fixTableName(SQLUtil.java:68)

så den kan så ikke få kontakt til min XA forbindelse?
Avatar billede arne_v Ekspert
05. oktober 2003 - 21:40 #58
Jeg er helt blank hvorfor den vil fixe et table name.
Avatar billede drevi Nybegynder
06. oktober 2003 - 01:08 #59
Aner det ikke, det her første gang jeg benytter JBoss og det er første gang jeg rodder med CMP, har før brugt BMP på Suns app server.

Jeg bliver nok nød til at benytte løsningen med de 2 bønner istedet for den mapping, for ikke at bryde tidsplanen, hvis ikke der er nogen løsning på det her problem. Bare pokkers efter som en del af CMP jo er mappingen.
hvordan gør jeg så helt præcis det for jeg har jo tablen i DB'en??
Avatar billede arne_v Ekspert
06. oktober 2003 - 09:30 #60
Uden CMR var det nok nemmest med 3 tabeller (altså inkl. M:M tabellen).

Men skulle jeg prøve at se om jeg kan få et CMR eksempel til at virke
hos mig ?
Avatar billede drevi Nybegynder
06. oktober 2003 - 10:23 #61
Hvis du har tid så må du meget gerne.
Avatar billede drevi Nybegynder
07. oktober 2003 - 14:37 #62
Hvis du vil låne noget af min kode til at teste med er du også velkommen(skal ikke forståes som "lav det for mig", for det bliver nok ikke sidste gang jeg får brug for at kunne arbejde med JBoss CMR).
Avatar billede arne_v Ekspert
07. oktober 2003 - 23:38 #63
Jeg har min test kode klar.

Men nu sidder jeg og kæmper med min db-service.xml - suk ....
Avatar billede arne_v Ekspert
08. oktober 2003 - 22:33 #64
Trut trut - lad fanfarerne lyde.

Jeg har et fungerende eksempel nu !!!!!!!!!!!!!!!!!!!!!!!
Avatar billede arne_v Ekspert
08. oktober 2003 - 22:35 #65
Avatar billede drevi Nybegynder
09. oktober 2003 - 00:16 #66
OK SÅDAN DER dvs. selv om du bruger en TX datasource så skulle det virke når bare man angiver:
<relation-table-mapping>

så må jeg bare håbe det virker på min MS SQL server databse imorgen
Avatar billede arne_v Ekspert
09. oktober 2003 - 07:44 #67
Ja - jeg fik ikke nogen fejl på local-tx så det brugte jeg bare.

Det var noget af en drøj omgang at få det til at virke (bl.a. fordi
jeg startede med at opgradere fra 3.0.7 til 3.2.1 og det varede lang tid
inden jeg forstod at den detectede gammel/ny datasource format
udfra fil-navnet -service=gammel -ds=ny).

Der burde ikke være nogen MS SQL versus MySQL forskelle.
Avatar billede drevi Nybegynder
09. oktober 2003 - 14:01 #68
Hmm, Ok jeg har bygget min relation om efter din nu.
De abstrate metoder er der, deployeren finder tablen.
min hent relations metode:

Collection id = null;
Collection res = null;

try
{
  Context context = new InitialContext();
  ContainerHome finder = (ContainerHome) PortableRemoteObject.narrow(context.lookup("Container"), ContainerHome.class);
  dataobject.Container tempContainer = finder.findByPrimaryKey(tal);
           
  id = (Collection) tempContainer.getHejselad_ID();
           
  Iterator stuff = id.iterator();
                       
  while (stuff.hasNext())
  {
      Hejselad hjl = (Hejselad)stuff.next();
      res.add(hjl);
  }
}
catch (NamingException ex)
{
  ex.printStackTrace();
}
catch (FinderException ex)
{
  ex.printStackTrace();
}
return res;

jeg får null tilbage og databasen er ikke tom, nogen ideer?
Avatar billede arne_v Ekspert
09. oktober 2003 - 19:40 #69
Hvor allokerer du et objekt til res ?
Avatar billede drevi Nybegynder
10. oktober 2003 - 00:38 #70
ah det er test slam kode, jeg prøvede først bare at returner id som jo er en Collection af hvad jeg vil finde, det virkede ikke, så kørte jeg den gamle System.out.println() kom så i tanke om det foregik på serveren og dovnen skab længeleve, rettede jeg det ikke lige tilbage igen med det samme. Men i teorien skulle id og res være ens jo.
Avatar billede drevi Nybegynder
12. oktober 2003 - 18:06 #71
Ok jeg har i næsten desperration bygget min metode op som din i min sessionbean facade, den returnere staidg null..... nu poster jeg hele metoden her så håber jeg du kan se fejlen, den enetse forskel er at du benytter en StringBuffer til at fange din beskrivelse, men jeg vil have den til at returner en collection af beans(eller er det at exposted metoden, hvis ja er det så ok at få samtlige Keys istedet så jeg kan hente/finde beansne?). Relationen er at en container kan sidde på mange forskellige Hejselad og et hejselad kan bære/håndtere mange forskellige container. I denne metode vil jeg bare have alle de hejsalad som en bestemt container kan påsættes:

public Collection getConHej(Integer aContainer_ID) throws RemoteException{
   
    Collection id = null;
           
    try{
                Context context = new InitialContext();
        ContainerHome finder = (ContainerHome) PortableRemoteObject.narrow(context.lookup("Container"), ContainerHome.class);
        Container tempContain = finder.findByPrimaryKey(aContainer_ID);
           
        Iterator temp = tempContain.getHejselad().iterator();
               
        while (temp.hasNext()){
            Hejselad hejs = (Hejselad) temp.next();
            id.add(hejs);
        }
           
    }
        //sammentrukket for pladsens skyld
    catch (NamingException ex){ex.printStackTrace();}
    catch (FinderException ex){ex.printStackTrace();}
    return id;
}

Min tanke er at vis det ikke er at expose metoden så kommer jeg aldrig ind i While lykken eller også finder den virkelig ingenting?
Avatar billede arne_v Ekspert
12. oktober 2003 - 18:22 #72
Jeg kan stadigvæk ikke se hvor id bliver allokeret d.v.s. at du bør
få en null pointer exception hvis du kommer ind i løkken.
Avatar billede arne_v Ekspert
12. oktober 2003 - 18:26 #73
Har du checket at du ikke får en exception ?
Avatar billede drevi Nybegynder
12. oktober 2003 - 19:08 #74
du mener en linie som:

Collection id = new Arraylist();
???
Avatar billede drevi Nybegynder
12. oktober 2003 - 19:14 #75
nej jeg får ingen Exceptions hverken i JBOss eller i min klient
Avatar billede arne_v Ekspert
12. oktober 2003 - 19:20 #76
Ja.
Avatar billede arne_v Ekspert
12. oktober 2003 - 19:22 #77
Men ellers ser det jo ud som om den ikke kan finde de Hejselad der
hører til container.
Avatar billede drevi Nybegynder
12. oktober 2003 - 19:58 #78
hmm jamen hvis den ikke finder de Hejselad såer det vel min relation der halter??
Avatar billede arne_v Ekspert
12. oktober 2003 - 20:16 #79
Ja...
Avatar billede drevi Nybegynder
13. oktober 2003 - 10:38 #80
ok nu har jeg bygget linien Collection id = new ArrayList() ind nu får jeg en nullpointerException i starten af while lykken, er det fordi jeg ikke får noget fra DB'en?
Avatar billede drevi Nybegynder
13. oktober 2003 - 14:43 #81
JBoss:
14:39:49,001 ERROR [LogInterceptor] RuntimeException:
java.lang.NullPointerException
        at org.jboss.ejb.plugins.local.BaseLocalProxyFactory.getEntityEJBLocalOb
ject(BaseLocalProxyFactory.java:231)
        at org.jboss.ejb.plugins.cmp.jdbc.bridge.RelationSet$1.next(RelationSet.
java:341)
        at buisnesslayer.DiplasSessionImpl.getConHej(DiplasSessionImpl.java:1458
)

så vidt jeg kan se er det noget med en relationsSet, jeg kan regne ud at det nok er noget med min relation måske retur typen(java.util.Collection)??
Avatar billede arne_v Ekspert
13. oktober 2003 - 20:25 #82
Der er noget galt.

Jeg tror at du mere systematisk skal debugge hvad der sker.

Sæt en masse:

System.err.println("vi er nu lige før while løkke - og temp er " + temp);

ind og find ud af hvad der sker.
Avatar billede arne_v Ekspert
13. oktober 2003 - 20:25 #83
Du kan debugge CMP delen ved at putte følgende ind i log4j.xml:

  <appender name="SPECIAL" class="org.apache.log4j.ConsoleAppender">
    <param name="Target" value="System.out"/>
    <param name="Threshold" value="DEBUG"/>
    <layout class="org.apache.log4j.PatternLayout">
      <param name="ConversionPattern" value="%d{ABSOLUTE} %-5p [%c{1}] %m%n"/>
    </layout>
  </appender>
  <category name="org.jboss.ejb.plugins.cmp.jdbc">
    <priority value="DEBUG"/>
    <appender-ref ref="SPECIAL"/>
  </category>

så kan du se alle SQL sætninger der udføres !
Avatar billede drevi Nybegynder
15. oktober 2003 - 10:53 #84
Nå jeg har fået det til at virke ved at lave den der 3 bean's relation, det var ikke den løsning jeg helst så, men det er den tiden giver lov til.

Så vil jeg bare sige tak for tårmodigheden og de mange svar :)
kan specielt godt lide den sidste med debuggeren :D
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