[Beginners Corner] - problem getting back the identity of a created row
by RCQ
hi all,
i have to migrate an application from postgres to mssqlserver2005.
it went quite well, until so far, but now i'm blocked for a while.
When user enter my application, a row is written to a table "Sessions(id int, user int, startTime datetime)".
(the id is auto-generated by the database).
I see the row is correctly written in the database, but when i want to retrieve the id that the database generated,
the application crashes:
anonymous wrote :
| 2007-05-11 13:57:33,516 ERROR [org.jboss.ejb.plugins.LogInterceptor] RuntimeException:
| java.lang.ClassCastException
| at be.xxxx.xxx.xxx.bean.SessionBean$Proxy.getId()
| at be.xxxx.xxx.xxx.bean.SessionBean.getSessionValue(SessionBean.java:120)
| 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.ejb.EntityContainer$ContainerInterceptor.invoke(EntityContainer.java:1044)
| at org.jboss.ejb.plugins.cmp.jdbc.JDBCRelationInterceptor.invoke(JDBCRelationInterceptor.java:95)
| at org.jboss.ejb.plugins.EntitySynchronizationInterceptor.invoke(EntitySynchronizationInterceptor.java:301)
| at org.jboss.resource.connectionmanager.CachedConnectionInterceptor.invoke(CachedConnectionInterceptor.java:186)
| at org.jboss.ejb.plugins.EntityReentranceInterceptor.invoke(EntityReentranceInterceptor.java:82)
| at org.jboss.ejb.plugins.EntityInstanceInterceptor.invoke(EntityInstanceInterceptor.java:174)
| at org.jboss.ejb.plugins.EntityLockInterceptor.invoke(EntityLockInterceptor.java:89)
| at org.jboss.ejb.plugins.EntityCreationInterceptor.invoke(EntityCreationInterceptor.java:53)
| at org.jboss.ejb.plugins.AbstractTxInterceptor.invokeNext(AbstractTxInterceptor.java:84)
| at org.jboss.ejb.plugins.TxInterceptorCMT.runWithTransactions(TxInterceptorCMT.java:243)
| at org.jboss.ejb.plugins.TxInterceptorCMT.invoke(TxInterceptorCMT.java:104)
| at org.jboss.ejb.plugins.SecurityInterceptor.invoke(SecurityInterceptor.java:117)
| at org.jboss.ejb.plugins.LogInterceptor.invoke(LogInterceptor.java:191)
| at org.jboss.ejb.plugins.ProxyFactoryFinderInterceptor.invoke(ProxyFactoryFinderInterceptor.java:122)
| at org.jboss.ejb.EntityContainer.internalInvoke(EntityContainer.java:483)
| at org.jboss.ejb.Container.invoke(Container.java:674)
| at org.jboss.ejb.plugins.local.BaseLocalProxyFactory.invoke(BaseLocalProxyFactory.java:353)
| at org.jboss.ejb.plugins.local.EntityProxy.invoke(EntityProxy.java:38)
| at $Proxy220.getSessionValue(Unknown Source)
|
However, I think I changed everything correctly:
standardjbosscmp-jdbc.xml wrote :
| <jbosscmp-jdbc>
|
|
|
|
|
| java:/MSSQLDS
|
| <datasource-mapping>MSSQL</datasource-mapping>
|
|
|
| <create-table>true</create-table>
|
| <remove-table>false</remove-table>
|
| <read-only>false</read-only>
|
| <time-out>300</time-out>
|
| <pk-constraint>true</pk-constraint>
|
| <fk-constraint>false</fk-constraint>
|
| <row-locking>false</row-locking>
|
| <preferred-relation-mapping>foreign-key</preferred-relation-mapping>
|
| <read-ahead>
|
| on-load
|
| <page-size>1000</page-size>
|
| <eager-load-group>*</eager-load-group>
|
| </read-ahead>
|
| <list-cache-max>1000</list-cache-max>
|
|
|
| <unknown-pk>
|
| <key-generator-factory>UUIDKeyGeneratorFactory</key-generator-factory>
|
| <unknown-pk-class>java.lang.String</unknown-pk-class>
|
| <jdbc-type>VARCHAR</jdbc-type>
|
| <sql-type>VARCHAR(32)</sql-type>
|
| </unknown-pk>
|
|
|
| <entity-command name="default"/>
|
|
|
|
|
|
|
| <type-mapping>
|
| MSSQL
|
| <row-locking-template>SELECT ?1 FROM ?2 with (rowlock) WHERE ?3</row-locking-template>
|
| <pk-constraint-template>CONSTRAINT ?1 PRIMARY KEY (?2)</pk-constraint-template>
|
| <fk-constraint-template>ALTER TABLE ?1 ADD CONSTRAINT ?2 FOREIGN KEY (?3) REFERENCES ?4 (?5)</fk-constraint-template>
| <auto-increment-template>?1 IDENTITY</auto-increment-template>
|
| <alias-header-prefix>t</alias-header-prefix>
|
| <alias-header-suffix>_</alias-header-suffix>
|
| <alias-max-length>32</alias-max-length>
|
| <subquery-supported>true</subquery-supported>
|
| <true-mapping>1</true-mapping>
|
| <false-mapping>0</false-mapping>
|
|
|
| <function-mapping>
|
| <function-name>concat</function-name>
|
| <function-sql>(?1 + ?2)</function-sql>
|
| </function-mapping>
|
| <function-mapping>
|
| <function-name>substring</function-name>
|
| <function-sql>substring(?1, ?2, ?3)</function-sql>
|
| </function-mapping>
|
| <function-mapping>
|
| <function-name>lcase</function-name>
|
| <function-sql>lower(?1)</function-sql>
|
| </function-mapping>
|
| <function-mapping>
|
| <function-name>length</function-name>
|
| <function-sql>len(?1)</function-sql>
|
| </function-mapping>
|
| <function-mapping>
|
| <function-name>locate</function-name>
|
| <function-sql>charindex(?1, ?2, ?3)</function-sql>
|
| </function-mapping>
|
| <function-mapping>
|
| <function-name>abs</function-name>
|
| <function-sql>abs(?1)</function-sql>
|
| </function-mapping>
|
| <function-mapping>
|
| <function-name>sqrt</function-name>
|
| <function-sql>sqrt(?1)</function-sql>
|
| </function-mapping>
|
| <function-mapping>
|
| <function-name>ucase</function-name>
|
| <function-sql>upper(?1)</function-sql>
|
| </function-mapping>
|
|
|
|
|
| <java-type>java.lang.Integer</java-type>
|
| <jdbc-type>INTEGER</jdbc-type>
|
| <sql-type>INT</sql-type>
|
|
|
|
|
|
|
| <java-type>java.lang.Character</java-type>
|
| <jdbc-type>CHAR</jdbc-type>
|
| <sql-type>CHAR</sql-type>
|
|
|
|
|
|
|
| <java-type>java.lang.Short</java-type>
|
| <jdbc-type>SMALLINT</jdbc-type>
|
| <sql-type>SMALLINT</sql-type>
|
|
|
|
|
|
|
| <java-type>java.lang.Long</java-type>
|
| <jdbc-type>BIGINT</jdbc-type>
|
| <sql-type>BIGINT</sql-type>
|
|
|
|
|
|
|
| <java-type>java.math.BigDecimal</java-type>
|
| <jdbc-type>VARCHAR</jdbc-type>
|
| <sql-type>VARCHAR(256)</sql-type>
|
|
|
|
|
|
|
| <java-type>java.lang.String</java-type>
|
| <jdbc-type>VARCHAR</jdbc-type>
|
| <sql-type>VARCHAR(256)</sql-type>
|
|
|
|
|
|
|
| <java-type>java.lang.Object</java-type>
|
| <jdbc-type>LONGVARBINARY</jdbc-type>
|
| <sql-type>IMAGE</sql-type>
|
|
|
|
|
|
|
| <java-type>java.lang.Byte</java-type>
|
| <jdbc-type>TINYINT</jdbc-type>
|
| <sql-type>TINYINT</sql-type>
|
|
|
|
|
|
|
| <!--
|
| | Note that you lose granularity here
|
| | Use a numeric type and store milliseconds if you really need it
|
| -->
|
| <java-type>java.sql.Timestamp</java-type>
|
| <jdbc-type>TIMESTAMP</jdbc-type>
|
| <sql-type>DATETIME</sql-type>
|
|
|
|
|
|
|
| <java-type>java.sql.Date</java-type>
|
| <jdbc-type>DATE</jdbc-type>
|
| <sql-type>DATETIME</sql-type>
|
|
|
|
|
|
|
| <java-type>java.sql.Time</java-type>
|
| <jdbc-type>TIME</jdbc-type>
|
| <sql-type>DATETIME</sql-type>
|
|
|
|
|
|
|
| <java-type>java.util.Date</java-type>
|
| <jdbc-type>TIMESTAMP</jdbc-type>
|
| <sql-type>DATETIME</sql-type>
|
|
|
|
|
|
|
| <java-type>java.lang.Boolean</java-type>
|
| <jdbc-type>BIT</jdbc-type>
|
| <sql-type>BIT</sql-type>
|
|
|
|
|
|
|
| <java-type>java.lang.Float</java-type>
|
| <jdbc-type>REAL</jdbc-type>
|
| <sql-type>REAL</sql-type>
|
|
|
|
|
|
|
| <java-type>java.lang.Double</java-type>
|
| <jdbc-type>DOUBLE</jdbc-type>
|
| <sql-type>FLOAT</sql-type>
|
|
|
| </type-mapping>
|
| <entity-commands>
|
| <!-- default command; doesn't support unknown-pk -->
|
| <entity-command name="default"
|
| class="org.jboss.ejb.plugins.cmp.jdbc.JDBCCreateEntityCommand"/>
|
|
|
| <!-- variation on default that skips select before insert -->
|
| <entity-command name="no-select-before-insert"
|
| class="org.jboss.ejb.plugins.cmp.jdbc.JDBCCreateEntityCommand">
|
| jboss.jdbc:service=SQLExceptionProcessor
|
| </entity-command>
|
|
|
| <!-- fetches next key value with the specified sql statement -->
|
| <entity-command name="pk-sql"
|
| class="org.jboss.ejb.plugins.cmp.jdbc.JDBCPkSqlCreateCommand">
|
| SELECT SCOPE_IDENTITY()
|
| </entity-command>
|
|
| <!-- this command requires auto-increment element for unknown-pk -->
|
| <entity-command name="mysql-get-generated-keys"
|
| class="org.jboss.ejb.plugins.cmp.jdbc.mysql.JDBCMySQLCreateCommand"/>
|
|
|
| <!-- retrieves generated key of the record inserted into hsql db -->
|
| <entity-command name="hsqldb-fetch-key"
|
| class="org.jboss.ejb.plugins.cmp.jdbc.hsqldb.JDBCHsqldbCreateCommand"/>
|
|
|
| <!-- retrieves generated key of the record inserted into sybase db -->
|
| <entity-command name="sybase-fetch-key"
|
| class="org.jboss.ejb.plugins.cmp.jdbc.sybase.JDBCSybaseCreateCommand"/>
|
|
|
| <!-- retrieves serial value of the record inserted into informix db -->
|
| <entity-command name="informix-serial"
|
| class="org.jboss.ejb.plugins.cmp.jdbc.informix.JDBCInformixCreateCommand"/>
|
|
|
| <!-- uses key generator to fetch the next key value -->
|
| <entity-command name="key-generator"
|
| class="org.jboss.ejb.plugins.cmp.jdbc.JDBCKeyGeneratorCreateCommand">
|
| UUIDKeyGeneratorFactory
|
| </entity-command>
|
|
| <!-- to auto-increment primary-keys -->
|
| <entity-command name="postgresql-fetch-seq"
|
| class="org.jboss.ejb.plugins.cmp.jdbc.postgres.JDBCPostgresCreateCommand"/>
|
| <entity-command
| name="get-generated-keys" class="org.jboss.ejb.plugins.cmp.jdbc.jdbc3.JDBCGetGeneratedKeysCreateCommand" />
| <!-- JDK1.4
|
| <entity-command name="get-generated-keys"
|
| class="org.jboss.ejb.plugins.cmp.jdbc.jdbc3.JDBCGetGeneratedKeysCreateCommand"/>
|
| -->
|
| </entity-commands>
|
|
standardjaws.xml wrote :
|
|
| java:/MSSQLDS
| <type-mapping>MSSQL</type-mapping>
| false
|
| <default-entity>
| <create-table>true</create-table>
| <remove-table>false</remove-table>
| <tuned-updates>true</tuned-updates>
| <read-only>false</read-only>
| <time-out>300</time-out>
| <row-locking>false</row-locking>
| <read-ahead>false</read-ahead>
| </default-entity>
|
|
| <type-mapping-definition>
| MSSQL
|
|
| <java-type>java.lang.Integer</java-type>
| <jdbc-type>INTEGER</jdbc-type>
| <sql-type>INT</sql-type>
|
|
|
| <java-type>java.lang.Character</java-type>
| <jdbc-type>CHAR</jdbc-type>
| <sql-type>CHAR</sql-type>
|
|
|
| <java-type>java.lang.Short</java-type>
| <jdbc-type>SMALLINT</jdbc-type>
| <sql-type>SMALLINT</sql-type>
|
|
|
| <java-type>java.lang.Long</java-type>
| <jdbc-type>BIGINT</jdbc-type>
| <sql-type>BIGINT</sql-type>
|
|
|
| <java-type>java.math.BigDecimal</java-type>
| <jdbc-type>VARCHAR</jdbc-type>
| <sql-type>VARCHAR(256)</sql-type>
|
|
|
| <java-type>java.lang.String</java-type>
| <jdbc-type>VARCHAR</jdbc-type>
| <sql-type>VARCHAR(256)</sql-type>
|
|
|
| <java-type>java.lang.Object</java-type>
| <jdbc-type>JAVA_OBJECT</jdbc-type>
| <sql-type>IMAGE</sql-type>
|
|
|
| <java-type>java.lang.Byte</java-type>
| <jdbc-type>TINYINT</jdbc-type>
| <sql-type>TINYINT</sql-type>
|
|
|
| <java-type>java.sql.Timestamp</java-type>
| <jdbc-type>TIMESTAMP</jdbc-type>
| <sql-type>TIMESTAMP</sql-type>
|
|
|
| <java-type>java.sql.Date</java-type>
| <jdbc-type>DATE</jdbc-type>
| <sql-type>DATETIME</sql-type>
|
|
|
| <java-type>java.sql.Time</java-type>
| <jdbc-type>TIME</jdbc-type>
| <sql-type>DATETIME</sql-type>
|
|
|
| <java-type>java.util.Date</java-type>
| <jdbc-type>DATE</jdbc-type>
| <sql-type>DATETIME</sql-type>
|
|
|
| <java-type>java.lang.Boolean</java-type>
| <jdbc-type>BIT</jdbc-type>
| <sql-type>BIT</sql-type>
|
|
|
| <java-type>java.lang.Float</java-type>
| <jdbc-type>REAL</jdbc-type>
| <sql-type>REAL</sql-type>
|
|
|
| <java-type>java.lang.Double</java-type>
| <jdbc-type>DOUBLE</jdbc-type>
| <sql-type>FLOAT</sql-type>
|
| </type-mapping-definition>
|
|
this is in my bean wrote :
| /**
| * Entity bean die een sessie beschrijft.
| *
| * @ejb.bean
| * name="Session"
| * view-type="local"
| * local-jndi-name="LocalSessionEJB"
| * type="CMP"
| * cmp-version="2.x"
| * primkey-field="id"
| *
| * @ejb.transaction type="required"
| *
| * @ejb.persistence table-name="sessions"
| * @ejb.pk class="java.lang.Integer"
| *
| * @ejb.permission role-name="system"
| * @ejb.security-identity run-as="system"
| *
| * @ejb.value-object
| * @ejb.util generate="physical"
| *
| * @jboss.entity-command
| * name="get-generated-keys"
| *
| * @jboss.method-attributes pattern="get*" read-only="true"
| *
| */
|
| public Integer ejbCreate....
| public void ejbPostCreate...
|
| /**
| * id of the sessie.
| * @ejb.interface-method view-type="local"
| * @ejb.persistence
| * @jboss.persistence auto-increment="true"
| */
| public abstract Integer getId();
|
| /**
| * @ejb.interface-method view-type="local"
| */
| public abstract void setId(Integer id);
|
| public be.xxxx.xxxx.data.bean.SessionValue getSessionValue() {
| System.out.println("before Sessionvalue");
| SessionValue sessionValue
| = new be.tinc.bkw.data.bean.SessionValue();
| System.out.println("after Sessionvalue");
| UserLocal userLocal;
| System.out.println("getting the user");
| //added for debuggin
| System.out.println("user "+getUser());
| System.out.println("startTime "+getStartTime());
| System.out.println("endTime "+getEndTime());
| System.out.println("after getting the user");
| System.out.println("getting the id");
| //HERE IT CRASHES !!!!!!!!!!!!!!!!!!!
| System.out.println("the id is: "+getId());
| System.out.println("after getting the id");
| sessionValue.setId(getId());
| userLocal = getUser();
| if (null != userLocal) {
| sessionValue.setUser(userLocal.getUserValue());
| }
| sessionValue.setStartTime(getStartTime());
| if (getEndTime() != null){
| sessionValue.setEndTime(getEndTime());
| }
| return sessionValue;
| }
|
View the original post : http://www.jboss.com/index.html?module=bb&op=viewtopic&p=4044961#4044961
Reply to the post : http://www.jboss.com/index.html?module=bb&op=posting&mode=reply&p=4044961
19 years, 1 month
[JBoss Seam] - seam-gen and inputSecret in edit form
by demetrio812
Hi,
I made a project with seam-gen: all works! great framework and tools!!
But when I changed this code:
| <s:decorate id="passwordDecoration" template="layout/edit.xhtml">
| <ui:define name="label">password</ui:define>
| <h:inputText id="password"
| required="true"
| size="20"
| maxlength="20"
| value="#{utenteHome.instance.password}">
| <a:support event="onblur" reRender="passwordDecoration"/>
| </h:inputText>
| </s:decorate>
|
In this:
| <s:decorate id="passwordDecoration" template="layout/edit.xhtml">
| <ui:define name="label">password</ui:define>
| <h:inputSecret id="password"
| required="true"
| size="20"
| maxlength="20"
| value="#{utenteHome.instance.password}">
| <a:support event="onblur" reRender="passwordDecoration"/>
| </h:inputSecret>
| </s:decorate>
|
When I move out from the inputSecret the value disappear...
how can I solve this?
Thanks a lot!
Demetrio
View the original post : http://www.jboss.com/index.html?module=bb&op=viewtopic&p=4044958#4044958
Reply to the post : http://www.jboss.com/index.html?module=bb&op=posting&mode=reply&p=4044958
19 years, 1 month
[Beginners Corner] - org.jboss.web.localhost.Engine - StandardWrapperValve....Ou
by jigar_a_shah83
I am getting following error on my jboss logs frequently.
2007-03-25 12:13:23,069 ERROR [mmweb@acmasrv34.coremobility.com:***:***:***] [http-0.0.0.0-8080-Processor16] org.jboss.web.localhost.Engine - StandardWrapperValve[mm1]: Servlet.service() for servlet mm1 threw exception
java.lang.OutOfMemoryError
It does not stop any operation neither it shutdowns server. Everything looks fine except this exception. What could be the reason for this my jboss start configuration includes
-Xms512m -Xmx1024m
So it does not look like low java heap memory issue. Is there any memory leak here ? If yes, Then how i can locate that ? What could be possible reason for the same ?
This is a snapshot of log. if we look closely then its with thread [http-0.0.0.0-8080-Processor16]
2007-03-25 12:13:23,061 INFO [mmweb@acmasrv34.coremobility.com:***:***:***] [http-0.0.0.0-8080-Processor25] com.coremobility.mmsc.servlet.MMServlet - MMServlet:doPost:start
2007-03-25 12:13:23,065 INFO [mmweb@acmasrv34.coremobility.com:***:7816081974 from 68.246.46.200:***] [http-0.0.0.0-8080-Processor16] com.coremobility.mmsc.servlet.MMServlet - MMServlet:doPost:end
2007-03-25 12:13:23,068 DEBUG [mmweb@acmasrv34.coremobility.com:***:9498721450 from 70.6.244.94:***] [http-0.0.0.0-8080-Processor25] com.coremobility.mmsc.servlet.MMServlet - Received a POST request:/mm1/ from client IP:70.6.244.94 User-Agent:SN-SCP-7050/0101 CM-Lib/F.2.1.3.6 Content-Length:1101 Content-Type:application/vnd.wap.mms-message
2007-03-25 12:13:23,069 INFO [mmweb@acmasrv34.coremobility.com:***:9498721450 from 70.6.244.94:***] [http-0.0.0.0-8080-Processor25] com.coremobility.mmsc.servlet.MMServlet - Authenticating mdn 9498721450
2007-03-25 12:13:23,069 ERROR [mmweb@acmasrv34.coremobility.com:***:***:***] [http-0.0.0.0-8080-Processor16] org.jboss.web.localhost.Engine - StandardWrapperValve[mm1]: Servlet.service() for servlet mm1 threw exception
java.lang.OutOfMemoryError
2007-03-25 12:13:23,167 INFO [mmweb@acmasrv34.coremobility.com:***:9498721450 from 70.6.244.94:***] [http-0.0.0.0-8080-Processor25] com.coremobility.mmsc.servlet.MMServlet - Authenticated successfully
2007-03-25 12:13:23,167 DEBUG [mmweb@acmasrv34.coremobility.com:***:9498721450 from 70.6.244.94:***] [http-0.0.0.0-8080-Processor25] com.coremobility.mmsc.servlet.MMServlet - WSP packet received:1101 bytes
View the original post : http://www.jboss.com/index.html?module=bb&op=viewtopic&p=4044955#4044955
Reply to the post : http://www.jboss.com/index.html?module=bb&op=posting&mode=reply&p=4044955
19 years, 1 month