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.
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
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?
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?
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?
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å
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
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)
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?
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
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
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
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
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?
<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?
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??
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).
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.
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.
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);
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?
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)??
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
Synes godt om
Ny brugerNybegynder
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.