Workshop 10.1 - EJB 2.1 and Hibernate

In Workshop 10.1, we're trying to call Hibernate 3.2 from an EJB 2.1 session bean. At the same time, we would like to use the Hibernate tooling provided by Workshop 10.1 - the Hibernate mapping generation and the HQL testing, specifically.
Our understanding is that we can get the Hibernate tooling only by including the Hibernate facet. However, we can only include the Hibernate facet in two kinds of project : the Dynamic Web project and the Web Services project.
Therefore we''ve created our Hibernate code inside a Dynamic Web project and included that project in an EAR with our EJB. By manually altering the EJB MANIFEST file so that it refers to the Web project WAR, we can get the entire EAR project to compile and deploy to a WebLogic 10 server.
However, when we try to execute the EJB method that calls the Web project code, the EJB throws a RemoteException, with the root cause being a NoClassDefFoundError - the EJB cannot find classes in the Web project at runtime.
Does anyone know a way to do this in Workshop 10.1? It seems like this would be a pretty standard JEE development approach, so I think there is probably a way to do this.
Thanks!!!
ethan

I am not using JDeveloper, the project was created in Netbeans 5.5. I only use the WAR created and Deploy it using the web administration of Oracle 10.1.3.2

Similar Messages

  • Difference between ejb 3.0 and hibernate

    Hi, I'm new at ejb 3.0 and I've read a little about Hibernate too, but there's one thing I don't understand. Could you tell me what's the difference between using ejb 3.0 and Hibernate, both of them are for persistence, and What about toplink?

    Hi, I'm new at ejb 3.0 and I've read a little about Hibernate too, but there's one thing I don't understand. Could you tell me what's the difference between using ejb 3.0 and Hibernate, both of them are for persistence, and What about toplink?

  • EJB and Hibernate in Myeclipse

    Hi,
    EJB3 and Hibernate using Myeclipse...
    Could you please , help me how to develop integrate with project.
    Thank you ,

    1. Briefly describe the problem
    My snack draw is jammed. Well, the drawer I keep savory snacks in.
    I think a pepperoni stick is keeping the draw from sliding open.
    2. What solution options/alternatives did you consider?
    I could just switch to sweet snacks, but I'm trying to lose a few
    pounds on the "fried pork rind" diet.
    3. Which option/alternative did you choose to implement, and why?
    I can't reach into the slot that forms when you force the drawer open
    as far as it will go. I decided to outsource this problem to a person
    with skinny arms.
    4. What were the major configuration/coding tasks that your solution entailed?
    The major task was getting that skinny new secretary into my cubicle.
    Those situations just don't happen to BigDaddy.

  • Integrate Crystal Reports with Spring MVC and Hibernate

    Hi all,
    having successfully used the JRC version 11.8.4.1094 in a Java environment with:
    1)JBoss 4.2.3,
    2)Oracle 11,
    3)EJB 2,
    4)Crystal Reports 2008,
    I would like to integrate Crystal Reports into my existing spring MVC and hibernate web app using:
    1)CRJ version 12.2.209,
    2)JBoss 5.1,
    3)Oracle 11,
    4)EJB 3,
    5)Crystal Reports 2008,
    reusing code integration. I used ReportExportControl and I produced the PDF directly.
    The error occurs when returning from EJB, into Delegate, and is the following:
    09:36:23,046 WARN  [InterceptorsFactory] EJBTHREE-1246: Do not use InterceptorsFactory with a ManagedObjectAdvisor, InterceptorRegistry should be used via the bean container
    09:36:23,062 WARN  [InterceptorsFactory] EJBTHREE-1246: Do not use InterceptorsFactory with a ManagedObjectAdvisor, InterceptorRegistry should be used via the bean container
    09:38:03,062 ERROR [[dispatcher]] Servlet.service() for servlet dispatcher threw exception
    java.lang.InstantiationException: com.crystaldecisions.sdk.occa.report.exportoptions.ReportExportFormat
         at java.lang.Class.newInstance0(Class.java:340)
         at java.lang.Class.newInstance(Class.java:308)
         at org.jboss.serial.classmetamodel.ClassMetaData.newInstance(ClassMetaData.java:334)
         at org.jboss.serial.persister.RegularObjectPersister.readData(RegularObjectPersister.java:239)
         at org.jboss.serial.objectmetamodel.ObjectDescriptorFactory.readObjectDescriptionFromStreaming(ObjectDescriptorFactory.java:412)
         at org.jboss.serial.objectmetamodel.ObjectDescriptorFactory.objectFromDescription(ObjectDescriptorFactory.java:82)
         at org.jboss.serial.objectmetamodel.DataContainer$DataContainerInput.readObject(DataContainer.java:845)
         at org.jboss.serial.persister.RegularObjectPersister.readSlotWithFields(RegularObjectPersister.java:353)
         at org.jboss.serial.persister.RegularObjectPersister.defaultRead(RegularObjectPersister.java:273)
         at org.jboss.serial.persister.RegularObjectPersister.readData(RegularObjectPersister.java:241)
         at org.jboss.serial.objectmetamodel.ObjectDescriptorFactory.readObjectDescriptionFromStreaming(ObjectDescriptorFactory.java:412)
         at org.jboss.serial.objectmetamodel.ObjectDescriptorFactory.objectFromDescription(ObjectDescriptorFactory.java:82)
         at org.jboss.serial.objectmetamodel.DataContainer$DataContainerInput.readObject(DataContainer.java:845)
         at org.jboss.serial.persister.RegularObjectPersister.readSlotWithFields(RegularObjectPersister.java:353)
         at org.jboss.serial.persister.RegularObjectPersister.defaultRead(RegularObjectPersister.java:273)
         at org.jboss.serial.persister.RegularObjectPersister.readData(RegularObjectPersister.java:241)
         at org.jboss.serial.objectmetamodel.ObjectDescriptorFactory.readObjectDescriptionFromStreaming(ObjectDescriptorFactory.java:412)
         at org.jboss.serial.objectmetamodel.ObjectDescriptorFactory.objectFromDescription(ObjectDescriptorFactory.java:82)
         at org.jboss.serial.objectmetamodel.DataContainer$DataContainerInput.readObject(DataContainer.java:845)
         at org.jboss.serial.io.MarshalledObjectForLocalCalls.get(MarshalledObjectForLocalCalls.java:60)
         at org.jboss.ejb3.remoting.IsLocalInterceptor.invokeLocal(IsLocalInterceptor.java:101)
         at org.jboss.ejb3.remoting.IsLocalInterceptor.invoke(IsLocalInterceptor.java:72)
         at org.jboss.aop.joinpoint.MethodInvocation.invokeNext(MethodInvocation.java:102)
         at org.jboss.aspects.remoting.PojiProxy.invoke(PojiProxy.java:62)
         at $Proxy286.invoke(Unknown Source)
         at org.jboss.ejb3.proxy.impl.handler.session.SessionProxyInvocationHandlerBase.invoke(SessionProxyInvocationHandlerBase.java:207)
         at org.jboss.ejb3.proxy.impl.handler.session.SessionProxyInvocationHandlerBase.invoke(SessionProxyInvocationHandlerBase.java:164)
         at $Proxy284.getXXXX(Unknown Source)
         at xx.xxx.xxxxxx.spring.manager.report.ReportManagerImpl.getXXXX(ReportManagerImpl.java:26)
         at xxx.xxxx.springprova.WelcomeController.handleRequestInternal(WelcomeController.java:70)
         at org.springframework.web.servlet.mvc.AbstractController.handleRequest(AbstractController.java:153)
         at org.springframework.web.servlet.mvc.SimpleControllerHandlerAdapter.handle(SimpleControllerHandlerAdapter.java:48)
         at org.springframework.web.servlet.DispatcherServlet.doDispatch(DispatcherServlet.java:790)
         at org.springframework.web.servlet.DispatcherServlet.doService(DispatcherServlet.java:719)
         at org.springframework.web.servlet.FrameworkServlet.processRequest(FrameworkServlet.java:644)
         at org.springframework.web.servlet.FrameworkServlet.doGet(FrameworkServlet.java:549)
         at javax.servlet.http.HttpServlet.service(HttpServlet.java:617)
         at javax.servlet.http.HttpServlet.service(HttpServlet.java:717)
         at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:290)
         at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:206)
         at org.jboss.web.tomcat.filters.ReplyHeaderFilter.doFilter(ReplyHeaderFilter.java:96)
         at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:235)
         at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:206)
         at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:235)
         at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:191)
         at org.jboss.web.tomcat.security.SecurityAssociationValve.invoke(SecurityAssociationValve.java:190)
         at org.jboss.web.tomcat.security.JaccContextValve.invoke(JaccContextValve.java:92)
         at org.jboss.web.tomcat.security.SecurityContextEstablishmentValve.process(SecurityContextEstablishmentValve.java:126)
         at org.jboss.web.tomcat.security.SecurityContextEstablishmentValve.invoke(SecurityContextEstablishmentValve.java:70)
         at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:127)
         at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:102)
         at org.jboss.web.tomcat.service.jca.CachedConnectionValve.invoke(CachedConnectionValve.java:158)
         at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:109)
         at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:330)
         at org.apache.coyote.http11.Http11Processor.process(Http11Processor.java:829)
         at org.apache.coyote.http11.Http11Protocol$Http11ConnectionHandler.process(Http11Protocol.java:598)
         at org.apache.tomcat.util.net.JIoEndpoint$Worker.run(JIoEndpoint.java:447)
         at java.lang.Thread.run(Thread.java:662)
    Have an idea, please?
    Thank you.

    You'll need to install the Crystal .NET that comes with VS 2005. You then install Crystal XI R2 over the top and not only will Crystal be integrated with the IDE, it should use the updated assemblies from R2.
    -Dell
    - A computer only does what you told it to, not what you thought you told it to!</p>

  • [NewBie] Not able to connect JPA and Hibernate ?

    Hi,
    In last few days I have read some tutorial and started doing JPA and Hibernate tutorials. But I am not able to make it work. Can some one please point out what is that I am doing wrong? Here are the details of what I am doing
    I am using
    IDE : Eclipse EE Indigo
    Following jars
    antlr-2.7.6.jar
    commons-collections-3.2.jar
    dom4j-1.6.1.jar
    hibernate-annotations-3.4.0.GA.jar
    hibernate-commons-annotations-3.1.0.GA.jar
    hibernate-entitymanager-3.4.0.GA.jar
    hibernate-jpa-2.0-api.jar
    hibernate3-3.3.2.GA.jar
    javaee-api-5.0-3.jar
    javassist-3.9.0.GA.jar
    junit-4.8.2.jar
    log4j-1.2.12.jar
    slf4j-api-1.6.1.jar
    slf4j-simple-1.6.1.jar
    sqljdbc.jar => For connecting to MS SQL Server database
    junit-4.8.2 => For testing the application
    The target runtime is set as JBoss 5.0 with jars of JBoss 6.0
    Here is my persistence.xml. This file is under "src\META-INF"
    <?xml version="1.0" encoding="UTF-8"?>
    <persistence version="2.0" xmlns="http://java.sun.com/xml/ns/persistence" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://java.sun.com/xml/ns/persistence http://java.sun.com/xml/ns/persistence/persistence_2_0.xsd">
         <persistence-unit name="JH1" transaction-type="RESOURCE_LOCAL">
              <provider>org.hibernate.ejb.HibernatePersistence</provider>
              <class>entity.Users</class>
              <exclude-unlisted-classes>false</exclude-unlisted-classes>
              <properties>
                   <property name="hibernate.dialect" value="org.hibernate.dialect.SQLServerDialect"/>
                   <property name="hibernate.show_sql" value="true"/>
                   <property name="javax.persistence.jdbc.url" value="jdbc:sqlserver://localhost:1433;databaseName=TempEPMUser"/>
                   <property name="javax.persistence.jdbc.user" value="user"/>
                   <property name="javax.persistence.jdbc.password" value="password"/>
                   <property name="javax.persistence.jdbc.driver" value="com.microsoft.sqlserver.jdbc.SQLServerDriver"/>
                   <property name="javax.persistence.transactionType" value="RESOURCE_LOCAL"/>
              </properties>
         </persistence-unit>
    </persistence>
    Here is the Users.java code. This is the entity class created using the context menu item JPA Entities from tables
    package entity;
    import java.io.Serializable;
    import javax.persistence.*;
    import java.sql.Timestamp;
    import java.math.BigDecimal;
    * The persistent class for the Users database table.
    @Entity
    public class Users implements Serializable { 
    private static final long serialVersionUID = 1L;
    @Id
    @GeneratedValue(strategy=GenerationType.AUTO)
    @Column(name="Usr_UserID")
    private long usr_UserID;
    @Column(name="Usr_DeptId")
    private BigDecimal usr_DeptId;
    public Users() { 
    public long getUsr_UserID() { 
    return this.usr_UserID;
    public void setUsr_UserID(long usr_UserID) { 
    this.usr_UserID = usr_UserID;
    Here is the testing code TestUser.java
    package testentity;
    import java.util.List;
    import javax.persistence.EntityManager;
    import javax.persistence.EntityManagerFactory;
    import javax.persistence.EntityTransaction;
    import javax.persistence.Persistence;
    import javax.persistence.PersistenceException;
    import org.apache.log4j.BasicConfigurator;
    import org.junit.After;
    import org.junit.Before;
    import org.junit.Test;
    import entity.Users;
    public class TestUser {
         private EntityManagerFactory emf;
         private EntityManager em;
         @Before
         public void initEmfAndEm(){
              BasicConfigurator.configure();
              try {
                   emf = Persistence.createEntityManagerFactory("JH1");
              } catch (PersistenceException pe) {
                   System.out.println(pe.getMessage());
              em = emf.createEntityManager();
         @After
         public void cleanup() {
              em.close();
         @Test
         public void emptyTest() {
              EntityTransaction et = em.getTransaction();
              et.begin();
              @SuppressWarnings("unchecked")
              final List<Users> listUser = em.createQuery("select usr_DeptID from Users").getResultList();
              et.commit();
              for (Users usr: listUser){
                   int depid = usr.getUsr_DeptId().intValue();
                   System.out.println("User Department id is "+depid);
    When I execute the code I get following error message
    java.lang.UnsupportedOperationException: The user must supply a JDBC connection
    at org.hibernate.connection.UserSuppliedConnectionProvider.getConnection(UserSuppliedConnectionProvider.java:54)
    at org.hibernate.jdbc.ConnectionManager.openConnection(ConnectionManager.java:446)
    at org.hibernate.jdbc.ConnectionManager.getConnection(ConnectionManager.java:167)
    at org.hibernate.jdbc.JDBCContext.connection(JDBCContext.java:142)
    at org.hibernate.transaction.JDBCTransaction.begin(JDBCTransaction.java:85)
    at org.hibernate.impl.SessionImpl.beginTransaction(SessionImpl.java:1354)
    at org.hibernate.ejb.TransactionImpl.begin(TransactionImpl.java:38)
    at testentity.TestUser.emptyTest(TestUser.java:42)
    at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
    at sun.reflect.NativeMethodAccessorImpl.invoke(Unknown Source)
    at sun.reflect.DelegatingMethodAccessorImpl.invoke(Unknown Source)
    at java.lang.reflect.Method.invoke(Unknown Source)
    at org.junit.runners.model.FrameworkMethod$1.runReflectiveCall(FrameworkMethod.java:44)
    at org.junit.internal.runners.model.ReflectiveCallable.run(ReflectiveCallable.java:15)
    at org.junit.runners.model.FrameworkMethod.invokeExplosively(FrameworkMethod.java:41)
    at org.junit.internal.runners.statements.InvokeMethod.evaluate(InvokeMethod.java:20)
    at org.junit.internal.runners.statements.RunBefores.evaluate(RunBefores.java:28)
    at org.junit.internal.runners.statements.RunAfters.evaluate(RunAfters.java:31)
    at org.junit.runners.BlockJUnit4ClassRunner.runNotIgnored(BlockJUnit4ClassRunner.java:79)
    at org.junit.runners.BlockJUnit4ClassRunner.runChild(BlockJUnit4ClassRunner.java:71)
    at org.junit.runners.BlockJUnit4ClassRunner.runChild(BlockJUnit4ClassRunner.java:49)
    at org.junit.runners.ParentRunner$3.run(ParentRunner.java:193)
    at org.junit.runners.ParentRunner$1.schedule(ParentRunner.java:52)
    at org.junit.runners.ParentRunner.runChildren(ParentRunner.java:191)
    at org.junit.runners.ParentRunner.access$000(ParentRunner.java:42)
    at org.junit.runners.ParentRunner$2.evaluate(ParentRunner.java:184)
    at org.junit.runners.ParentRunner.run(ParentRunner.java:236)
    at org.eclipse.jdt.internal.junit4.runner.JUnit4TestReference.run(JUnit4TestReference.java:50)
    at org.eclipse.jdt.internal.junit.runner.TestExecution.run(TestExecution.java:38)
    at org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.runTests(RemoteTestRunner.java:467)
    at org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.runTests(RemoteTestRunner.java:683)
    at org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.run(RemoteTestRunner.java:390)
    at org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.main(RemoteTestRunner.java:197)

    Hi,
    Try following the JPA tutorials for WebLogic, JPA using EclipseLink or Hibernate will be the same if you stick to the specification. WebLogic 10.3.4.0 ships with a Java EE 6 compliant JPA 2.0 implementation in EclipseLink - you may want to give that a try.
    http://wiki.eclipse.org/EclipseLink/Examples/JPA/WebLogic_Web_Tutorial
    http://wiki.eclipse.org/EclipseLink/Examples/Distributed
    I also have a JBoss 6 tutorial for getting JPA working as well.
    BTW, your persistence unit is currently application managed - try switching to container managed - then most of your jar dependencies will go away as everything is already setup for you to do dependency injection via the container.
    http://wiki.eclipse.org/EclipseLink/Examples/JPA/JBoss_Web_Tutorial
    thank you
    Michael O'Brien
    http://www.eclipselink.org

  • CAn EJB do persistance without hibernate?

    Hai All.....
    My doubt is that 'Can EJB do persistance without hibernate or any other tools'?
    Can EJB do persistance alone??
    Please Help

    EJB 3, and JPA are just specification, not implementation. EJB 3 alone cannot do anything, it is just interfaces. Any product that implements the EJB 3 spec will support EJB SessionBeans and JPA and persistence.
    Any JEE 5 server will support EJB 3 and JPA persistence (WebLogic, OC4J, Glassfish, JBoss, WebSphere, etc...). Each server uses a different product to support JPA, (Glassfish v2 uses TopLink Essentials, OC4J 11g uses TopLink, WebLogic uses Kodo, JBoss uses Hibernate, Glassfish v3 uses EclipseLink, etc.). Technically if you are using JEE 5, you don't need to worry about what JPA product you are using and can consider that EJB supports persistence, but more than likely you will need to know you JPA provider in more intimacy.
    You will also need a database to persist to. Again most JEE server bundle a database, but most production applications prefer to choose their own database.
    The JPA part of EJB also works outside of JEE, in this case you will need to choose one of the many JPA products.
    see,
    [http://en.wikibooks.org/wiki/Java_Persistence/What_is_JPA%3F|http://en.wikibooks.org/wiki/Java_Persistence/What_is_JPA%3F]
    -- James : [http://www.eclipselink.org|http://www.eclipselink.org]

  • Compare EJB 3.0 vs Hibernate

    It's more a theoretical question than practical. What's advantage and disadvantage of using either approach. In what sort of applications EJB is more appropriate than Hibernate and vice versa. Any references to the publications are greatly appreciated.
    thanks.

    Hello,
    I'm not a specialist of such a question but :
    I would see EJB more enterprise than hibernate. (even though ...) and maybe EJB as an upper layer than EJB.
    Note that EJB uses JPA (Java Peristence Architecture) which can use Hibernate as implementation.
    Nota also that EJB 3.0 specification was influenced by Hibernate :D
    Regards,
    Sebastien Degardin

  • WebDynpro Importing Model as Spring and Hibernate

    hi guys,
    Can any one tell me clearly about how to import model(Spring and HIbernate) in WebDynpro for java
    Thanks & Regards
    RK

    Hi Ramakrishna,
    Spring and Hibernate is used for Database access instead of EJB.
    To import spring and Hibernate model Use Either <b> Import Adaptive Web Service Model </b> or <b> Import Java Bean Model </b> by right Click on Models.
    WebDynpro with Hybernate
    https://www.sdn.sap.com/irj/sdn/docs?rid=/webcontent/uuid/e081a4b6-0801-0010-7fa4-c3c7a0454815 [original link is broken]
    Regards,
    Mithu

  • Sleep and Hibernate does not work after BIOS update X1 Carbon 20A8

    As subject title, did a recent Lenovo "System Update" on BIOS and other drivers, and since then sleep and hibernate no longer works, when i close the lid, it turns on by itself after 2 seconds.
    When i select Sleep or Hibernate in Windows 8.1 with lid open, it just behaves like a Restart command.
    Need this fixed! Any ideas?

    Try downgrading to your older BIOS and see if it works again.
    W520: i7-2720QM, Q2000M at 1080/688/1376, 21GB RAM, 500GB + 750GB HDD, FHD screen
    X61T: L7500, 3GB RAM, 500GB HDD, XGA screen, Ultrabase
    Y3P: 5Y70, 8GB RAM, 256GB SSD, QHD+ screen

  • How to store an image into MySQL db using BlazeDS and Hibernate?

    Hi!
    I am using Flash Builder 4.6, BlazeDS, and Hibernate. How to store a webcam snapshot into the MySql Database. I stored Form Items by using RemoteObject into the database. But I failed to store webcam snapshot. I captured that image on Panel component.I converted that image to ByteArray. Now I want to save that image into the database. Please help me in this regard.
    thanks in advance.
    Here the Code:
    VisitorEntryForm.mxml
    <?xml version="1.0" encoding="utf-8"?>
    <mx:TitleWindow
              xmlns:mx="http://www.adobe.com/2006/mxml"
              xmlns:vo="com.visitor.vo.*"
              width="600"
              height="300"
              defaultButton="{submitButton}"
              showCloseButton="true"
              creationComplete="creationCompleteHandler();"
              close="PopUpManager.removePopUp(this);"
              title="Visitor Entry Form" xmlns:text="flash.text.*">
              <mx:RemoteObject id="saveService" destination="visitorService" result="handleSaveResult(event)" fault="handleFault(event)" showBusyCursor="true" />
              <vo:Visitor id="visitor"
                                               vType="{vTypeField.text}"
                                               vPurpose="{vPurposeField.text}"
                                               vName="{vNameField.text}"
                                               vAddress="{vAddressField.text}"
                                               cPerson="{cPersonField.text}"
                                               cAddress="{cAddressField.text}"
                                     />
                        <mx:Script>
                        <![CDATA[
                        import mx.managers.PopUpManager;
                        import flash.media.Camera;
                        import com.visitor.vo.WebCam;
                        import com.visitor.vo.Base64;
                        import mx.core.UIComponent;
                        import mx.graphics.codec.JPEGEncoder;
                        import mx.controls.Alert;
                        import mx.containers.Canvas;
                        import mx.rpc.events.ResultEvent;
                        import mx.rpc.events.FaultEvent;
                        import mx.events.ValidationResultEvent;
                        import mx.validators.Validator;
                                  [Bindable]
                                  private var webCam: com.visitor.vo.WebCam;
                                  [Bindable]
                                  private var message:String;
                                  [Bindable]
                                  private var formIsValid:Boolean = false;
                                  [Bindable]
                                  public var formIsEmpty:Boolean;
                                  private var focussedFormControl:DisplayObject;
                                  private function handleSaveResult(ev:ResultEvent):void {
                                            clearFormHandler();
                                            validateForm(ev);
                                            Alert.show("Visitor successfully created/updated.", "Information", Alert.OK, null, null, null, Alert.OK);
                                            // Reload the list.
                                            parentApplication.listConsultants.loaderService.getConsultants();
                                            PopUpManager.removePopUp(this);
                                  private function handleFault(ev:FaultEvent):void {
                                            message = "Error: " + ev.fault.faultCode + " \n "
                                                      + "Detail: " + ev.fault.faultDetail + " \n "
                                                      + "Message: " + ev.fault.faultString;
                                  public function saveVisitor():void {
                                            saveService.addUpdateVisitor(visitor);
                                  private function creationCompleteHandler():void {
                                            init();
                                            PopUpManager.centerPopUp(this);
                                            resetFocus();
                                  private function resetFocus():void {
                                            focusManager.setFocus(vTypeField);
                                  public function validateForm(event:Event):void  {
                                            focussedFormControl = event.target as DisplayObject;   
                                            formIsValid = true;
                                            // Check if form is empty
                                            formIsEmpty = (vTypeField.text == "" && vPurposeField.text == "" && vNameField.text == "" && vAddressField.text == "" && cPersonField.text == "" && cAddressField.text == "");
                                            validate(vTypeValidator);               
                                            validate(vPurposeValidator);
                                            validate(vNameValidator);
                                            validate(vAddressValidator);
                                            validate(cPersonValidator);
                                            validate(cAddressValidator);
                                  private function validate(validator:Validator):Boolean {
                                            var validatorSource:DisplayObject = validator.source as DisplayObject;
                                            var suppressEvents:Boolean = (validatorSource != focussedFormControl);
                                            var event:ValidationResultEvent = validator.validate(null, suppressEvents);
                                            var currentControlIsValid:Boolean = (event.type == ValidationResultEvent.VALID);
                                            formIsValid = formIsValid && currentControlIsValid;
                                            return currentControlIsValid;
                                  private function clearFormHandler():void {
                                            // Clear all input fields.
                                            vTypeField.text = "";
                                            vPurposeField.text = "";
                                            vNameField.text = "";
                                            vAddressField.text = "";
                                            cPersonField.text = "";
                                            cAddressField.text = "";
                                            message = "";
                                            // Clear validation error messages.
                                            vTypeField.errorString = "";
                                            vPurposeField.errorString = "";
                                            vNameField.errorString = "";
                                            vAddressField.errorString = "";
                                            cPersonField.errorString = "";
                                            cAddressField.errorString = "";
                                            formIsEmpty = true;
                                            formIsValid = false;
                                            resetFocus();
                                  private function init():void {
                                  webCam = new WebCam(97,97);
                                  var ref:UIComponent = new UIComponent();
                                  preview.removeAllChildren();
                                  preview.addChild(ref);
                                  ref.addChild(webCam);
                                  private function takeSnapshot():void {
                                  imageViewer.visible = true;
                                  imageViewer.width = preview.width;
                                  imageViewer.height = preview.height;
                                  var uiComponent : UIComponent = new UIComponent();
                                  uiComponent.width = webCam.width;
                                  uiComponent.height = webCam.height;
                                  var photoData:Bitmap = webCam.getSnapshot();
                                  var photoBitmap:BitmapData = photoData.bitmapData;
                                  uiComponent.addChild(photoData);
                                  imageViewer.removeAllChildren();
                                  imageViewer.addChild(uiComponent);
                                  private function uploadSnapshot():void
                                            if (imageViewer.getChildren().length > 0)
                                                      var uic:UIComponent = imageViewer.getChildAt(0) as UIComponent;
                                                      var bitmap:Bitmap = uic.getChildAt(0) as Bitmap;
                                                      var jpgEncoder:JPEGEncoder = new JPEGEncoder(75);
                                                      var jpgBytes:ByteArray = jpgEncoder.encode(bitmap.bitmapData);
                                  private function deleteSnapshot():void
                                            imageViewer.removeAllChildren();
                        ]]>
                        </mx:Script>
              <mx:StringValidator id="vTypeValidator"          source="{vTypeField}"          property="text" minLength="2" required="true" />
              <mx:StringValidator id="vPurposeValidator" source="{vPurposeField}"          property="text" minLength="2" required="true" />
              <mx:StringValidator id="vNameValidator"          source="{vNameField}"          property="text" minLength="2" required="true" />
              <mx:StringValidator id="vAddressValidator"          source="{vAddressField}"          property="text" minLength="5" required="true" />
              <mx:StringValidator id="cPersonValidator" source="{cPersonField}"          property="text" minLength="2" required="true" />
              <mx:StringValidator id="cAddressValidator"          source="{cAddressField}"          property="text" minLength="5" required="true" />
              <mx:Grid width="575" height="211">
                        <mx:GridRow width="575" height="211">
                                  <mx:GridItem width="301" height="235">
                                            <mx:Form width="301" height="208">
                                                      <mx:FormItem label="Visitor's Type">
                                                                <mx:ComboBox id="vTypeField" text="{visitor.vType}" change="validateForm(event);" editable="true">
                                                                          <mx:Array>
                                                                                    <mx:String></mx:String>
                                                                                    <mx:String>Contractor</mx:String>
                                                                                    <mx:String>Supplier</mx:String>
                                                                                    <mx:String>Transporter</mx:String>
                                                                                    <mx:String>Plant</mx:String>
                                                                                    <mx:String>Non-Plant</mx:String>
                                                                          </mx:Array>
                                                                </mx:ComboBox>
                                                      </mx:FormItem>
                                                      <mx:FormItem label="Visit Purpose">
                                                                <mx:ComboBox id="vPurposeField" text="{visitor.vPurpose}" change="validateForm(event);" editable="true">
                                                                          <mx:Array>
                                                                                    <mx:String></mx:String>
                                                                                    <mx:String>Official</mx:String>
                                                                                    <mx:String>Personal</mx:String>
                                                                          </mx:Array>
                                                                </mx:ComboBox>
                                                      </mx:FormItem>
                                                      <mx:FormItem label="Visitor's Name">
                                                                <mx:TextInput id="vNameField"  text="{visitor.vName}" change="validateForm(event);"/>
                                                      </mx:FormItem>
                                                      <mx:FormItem label="Address">
                                                                <mx:TextInput id="vAddressField"   text="{visitor.vAddress}" change="validateForm(event);"/>
                                                      </mx:FormItem>
                                                      <mx:FormItem label="Contact Person">
                                                                <mx:TextInput id="cPersonField"  text="{visitor.cPerson}" change="validateForm(event);"/>
                                                      </mx:FormItem>
                                                      <mx:FormItem label="Address">
                                                                <mx:TextInput id="cAddressField"  text="{visitor.cAddress}" change="validateForm(event);"/>
                                                      </mx:FormItem>
                                                      </mx:Form>
                                  </mx:GridItem>
                                  <mx:GridItem width="264" height="193">
                                            <mx:Grid width="241" height="206">
                                                      <mx:GridRow width="100%" height="100%">
                                                                <mx:GridItem width="100%" height="100%" horizontalAlign="center" verticalAlign="middle">
                                                                          <mx:Panel width="100" height="132" title="Snap" id="preview" layout="absolute"/>
                                                                </mx:GridItem>
                                                                <mx:GridItem width="100%" height="100%" horizontalAlign="center" verticalAlign="middle">
                                                                          <mx:Panel width="100" height="132" title="Preview" id="imageViewer"  layout="absolute"/>
                                                                </mx:GridItem>
                                                      </mx:GridRow>
                                                      <mx:GridRow width="100%" height="27" >
                                                                <mx:GridItem width="100%" height="100%" horizontalAlign="center">
                                                                          <mx:Button id="snapshot" x="2" width="106" height="27" label="Snap"
                                                                                                  click="takeSnapshot();"/>
                                                                </mx:GridItem>
                                                                <mx:GridItem width="100%" height="100%" horizontalAlign="center">
                                                                          <mx:Button id="deleteButton" x="1" width="106" height="27" label="Delete"
                                                                                                  click="deleteSnapshot();"/>
                                                                </mx:GridItem>
                                                      </mx:GridRow>
                                            </mx:Grid>
                                  </mx:GridItem>
                        </mx:GridRow>
              </mx:Grid>
              <mx:ControlBar height="40" horizontalAlign="center">
                        <mx:Button label="Save Visitor"          id="submitButton" enabled="{formIsValid}" click="saveVisitor();" />
                        <mx:Button label="Clear form" enabled="{!formIsEmpty}"          click="clearFormHandler();" />
                        <mx:Button label="Cancel" click="PopUpManager.removePopUp(this);"/>
                        <mx:Label width="211" id="state"/>
              </mx:ControlBar>
              <mx:Text text="{message}" fontWeight="bold" width="300"/>
    </mx:TitleWindow>
    ListVisitors.mxml
    <?xml version="1.0" encoding="utf-8"?>
    <mx:Panel
              xmlns:mx="http://www.adobe.com/2006/mxml"
              xmlns:view="com.visitor.view.*"
              width="100%"
              height="100%"
              title="Visitor Management System - Found {visitorRecords} visitors."
              creationComplete="loadVisitors();">
              <mx:RemoteObject id="loaderService" destination="visitorService" result="handleLoadResult(event)"          fault="handleFault(event)" showBusyCursor="true" />
              <mx:RemoteObject id="deleteService" destination="visitorService" result="handleDeleteResult(event)"          fault="handleFault(event)" showBusyCursor="true" />
              <mx:Script>
                        <![CDATA[
                                  import com.visitor.vo.Visitor;
                                  import mx.controls.Alert;
                                  import mx.managers.PopUpManager;
                                  import mx.containers.TitleWindow;
                                  import mx.collections.ArrayCollection;
                                  import mx.rpc.events.ResultEvent;
                                  import mx.rpc.events.FaultEvent;
                                  [Bindable]
                                  private var message:String;
                                  [Bindable]
                                  private var visitors:ArrayCollection = new ArrayCollection();
                                  [Bindable]
                                  private var visitorRecords:int = 0;
                                  public function loadVisitors():void {
                                            loaderService.getVisitors();
                                  private function deleteVisitor():void {
                                            if(dataGrid.selectedItem != null) {
                                                      var selectedItem:Visitor = dataGrid.selectedItem as Visitor;
                                                      deleteService.deleteVisitor(selectedItem.visitorId);
                                  private function createVisitor():void {
                                            var titleWindow:VisitorEntryForm = VisitorEntryForm(PopUpManager.createPopUp(this, VisitorEntryForm, true));
                                            titleWindow.setStyle("borderAlpha", 0.9);
                                            titleWindow.formIsEmpty = true;
                                  private function updateVisitor():void {
                                            var titleWindow:VisitorEntryForm = VisitorEntryForm(PopUpManager.createPopUp(this, VisitorEntryForm, true));
                                            titleWindow.setStyle("borderAlpha", 0.9);
                                            titleWindow.visitor = dataGrid.selectedItem as Visitor;
                                            titleWindow.formIsEmpty = false;
                                  private function handleLoadResult(ev:ResultEvent):void {
                                            visitors = ev.result as ArrayCollection;
                                            visitorRecords = visitors.length;
                                  private function handleDeleteResult(ev:ResultEvent):void {
                                            Alert.show("The visitor has been deleted.", "Information", Alert.OK, null, null, null, Alert.OK);
                                            loadVisitors();
                                  private function handleFault(ev:FaultEvent):void {
                                            message = "Error: "
                                                      + ev.fault.faultCode + " - "
                                                      + ev.fault.faultDetail + " - "
                                                      + ev.fault.faultString;
                        ]]>
              </mx:Script>
              <mx:VBox width="100%" height="100%">
                        <mx:Label text="{message}" fontWeight="bold" includeInLayout="false" />
                        <mx:DataGrid
                                  id="dataGrid"
                                  width="100%"
                                  height="100%"
                                  dataProvider="{visitors}"
                                  doubleClickEnabled="true"
                                  doubleClick="updateVisitor()" >
                                  <mx:columns>
                                            <mx:DataGridColumn dataField="visitorId"          headerText="Visitor ID" width="100"/>
                                            <mx:DataGridColumn dataField="vType"                    headerText="Visitor's Type" />
                                            <mx:DataGridColumn dataField="vPurpose"           headerText="Visit Purpose" />
                                            <mx:DataGridColumn dataField="vName"                     headerText="Visitor's Name" />
                                            <mx:DataGridColumn dataField="vAddress"                    headerText="Visitor's Address" />
                                            <mx:DataGridColumn dataField="cPerson"                     headerText="Contact Person" />
                                            <mx:DataGridColumn dataField="cAddress"                    headerText="Contact Address" />
                                            <mx:DataGridColumn dataField="timeIn"                     headerText="Time-In" />
                                            <mx:DataGridColumn dataField="timeOut"                     headerText="Time-Out" />
                                            <mx:DataGridColumn dataField="vPhoto"                     headerText="Visitor's Photo" />
                                  </mx:columns>
                        </mx:DataGrid>
                        <mx:ControlBar horizontalAlign="center">
                                  <mx:Button label="Create Visitor"          click="createVisitor()"          toolTip="Create a new visitor and store it in the database." />
                                  <mx:Button label="Update Visitor"          click="updateVisitor()"           enabled="{dataGrid.selectedItem}" toolTip="Update an existing database visitor." />
                                  <mx:Button label="Delete Visitor"          click="deleteVisitor()"          enabled="{dataGrid.selectedItem}" toolTip="Delete the visitor from the database." />
                                  <mx:Button label="Reload Data"                    click="loadVisitors()"           toolTip="Reload the visitor list from the database." />
                        </mx:ControlBar>
              </mx:VBox>
    </mx:Panel>
    Visitor.as
    package com.visitor.vo
              import mx.controls.Image;
              import spark.primitives.BitmapImage;
              [Bindable]
              [RemoteClass(alias="com.visitor.Visitor")]
              public class Visitor
                        public function Visitor()
                        public var visitorId:Number;
                        public var vType:String;
                        public var vPurpose:String;
                        public var vName:String;
                        public var vAddress:String;
                        public var cPerson:String;
                        public var cAddress:String;
                        public var timeIn:Date;
                        public var timeOut:Date;
                       public var vPhoto: Image;
    Visitor.java
    package com.visitor;
    import java.sql.Blob;
    import java.sql.Timestamp;
    import javax.persistence.Basic;
    import javax.persistence.Column;
    import javax.persistence.Entity;
    import javax.persistence.GeneratedValue;
    import javax.persistence.GenerationType;
    import javax.persistence.Id;
    import javax.persistence.NamedQueries;
    import javax.persistence.NamedQuery;
    import javax.persistence.Table;
    import org.hibernate.annotations.Index;
    @Entity
    @Table(name = "visitors")
    @NamedQueries( {
                        @NamedQuery(name = "visitors.findAll", query = "from Visitor"),
                        @NamedQuery(name = "visitors.byId", query = "select v from Visitor v where v.visitorId= :visitorId") })
    public class Visitor {
              @Id
              @GeneratedValue(strategy = GenerationType.AUTO)
              @Column(name = "visitorId", nullable = false)
              private Long visitorId;
              @Basic
              @Index(name = "vType_idx_1")
              @Column(name = "vType", nullable = true, unique = false)
              private String vType;
              @Basic
              @Column(name = "vPurpose", nullable = true, unique = false)
              private String vPurpose;
              @Basic
              @Column(name = "vName", nullable = true, unique = false)
              private String vName;
              @Basic
              @Column(name = "vAddress", nullable = true, unique = false)
              private String vAddress;
              @Basic
              @Column(name = "cPerson", nullable = true, unique = false)
              private String cPerson;
              @Basic
              @Column(name = "cAddress", nullable = true, unique = false)
              private String cAddress;
              @Basic
              @Column(name = "timeIn", nullable = false, unique = false)
              private Timestamp timeIn;
              @Basic
              @Column(name = "timeOut", nullable = true, unique = false)
              private Timestamp timeOut;
              @Basic
              @Column(name = "vPhoto", nullable = true, unique = false)
              private Blob vPhoto;
              public Visitor() {
                        super();
              public Long getVisitorId() {
                        return visitorId;
              public void setVisitorId(Long visitorId) {
                        this.visitorId = visitorId;
              public String getvType() {
                        return vType;
              public void setvType(String vType) {
                        this.vType = vType;
              public String getvPurpose() {
                        return vPurpose;
              public void setvPurpose(String vPurpose) {
                        this.vPurpose = vPurpose;
              public String getvName() {
                        return vName;
              public void setvName(String vName) {
                        this.vName = vName;
              public String getvAddress() {
                        return vAddress;
              public void setvAddress(String vAddress) {
                        this.vAddress = vAddress;
              public String getcPerson() {
                        return cPerson;
              public void setcPerson(String cPerson) {
                        this.cPerson = cPerson;
              public String getcAddress() {
                        return cAddress;
              public void setcAddress(String cAddress) {
                        this.cAddress = cAddress;
              public Timestamp getTimeIn() {
                        return timeIn;
              public void setTimeIn(Timestamp timeIn) {
                        this.timeIn = timeIn;
              public Timestamp getTimeOut() {
                        return timeOut;
              public void setTimeOut(Timestamp timeOut) {
                        this.timeOut = timeOut;
              public Blob getvPhoto() {
                        return vPhoto;
              public void setvPhoto(Blob vPhoto) {
                        this.vPhoto = vPhoto;
    VisitorService.java
    package com.visitor;
    import java.sql.Timestamp;
    import java.util.Date;
    import java.util.List;
    import javax.persistence.EntityManager;
    import javax.persistence.EntityManagerFactory;
    import javax.persistence.EntityTransaction;
    import javax.persistence.Persistence;
    import javax.persistence.Query;
    import org.apache.log4j.Logger;
    public class VisitorService {
              private static final String PERSISTENCE_UNIT = "visitor_db";
              private static Logger logger = Logger.getLogger(VisitorService.class);
              public VisitorService() {
                        super();
              public List<Visitor> getvisitors() {
                        logger.debug("** getVisitors called...");
                        EntityManagerFactory entityManagerFactory = Persistence
                                            .createEntityManagerFactory(PERSISTENCE_UNIT);
                        EntityManager em = entityManagerFactory.createEntityManager();
                        Query findAllQuery = em.createNamedQuery("visitors.findAll");
                        List<Visitor> visitors = findAllQuery.getResultList();
                        if (visitors != null)
                                  logger.debug("** Found " + visitors.size() + " records:");
                        return visitors;
              public void addUpdateVisitor(Visitor visitor) throws Exception {
                        logger.debug("** addUpdateVisitor called...");
                        EntityManagerFactory emf = Persistence
                                            .createEntityManagerFactory(PERSISTENCE_UNIT);
                        EntityManager em = emf.createEntityManager();
                        // When passing Boolean and Number values from the Flash client to a
                        // Java object, Java interprets null values as the default values for
                        // primitive types; for example, 0 for double, float, long, int, short,
                        // byte.
                        if (visitor.getVisitorId() == null          || visitor.getVisitorId() == 0) {
                                  // New consultant is created
                                  visitor.setVisitorId(null);
                                  visitor.setTimeIn(new Timestamp(new Date().getTime()));
                        } else {
                                  visitor.setTimeOut(new Timestamp(new Date().getTime()));
                                  // Existing consultant is updated - do nothing.
                        EntityTransaction tx = em.getTransaction();
                        tx.begin();
                        try {
                                  em.merge(visitor);
                                  tx.commit();
                        } catch (Exception e) {
                                  logger.error("** Error: " + e.getMessage());
                                  tx.rollback();
                                  throw new Exception(e.getMessage());
                        } finally {
                                  logger.info("** Closing Entity Manager.");
                                  em.close();
              public void deleteVisitor(Long visitorId) {
                        logger.debug("** deleteVisitor called...");
                        EntityManagerFactory emf = Persistence
                                            .createEntityManagerFactory(PERSISTENCE_UNIT);
                        EntityManager em = emf.createEntityManager();
                        Query q = em.createNamedQuery("visitors.byId");
                        q.setParameter("visitorId", visitorId);
                        Visitor visitor = (Visitor) q.getSingleResult();
                        if (visitor != null) {
                                  EntityTransaction tx = em.getTransaction();
                                  tx.begin();
                                  try {
                                            em.remove(visitor);
                                            tx.commit();
                                  } catch (Exception e) {
                                            logger.error("** Error: " + e.getMessage());
                                            tx.rollback();
                                  } finally {
                                            logger.info("** Closing Entity Manager.");
                                            em.close();
    remoting-config.xml
    <?xml version="1.0" encoding="UTF-8"?>
    <service id="remoting-service" class="flex.messaging.services.RemotingService">
              <adapters>
                        <adapter-definition id="java-object"
                                  class="flex.messaging.services.remoting.adapters.JavaAdapter"
                                  default="true" />
              </adapters>
              <default-channels>
                        <channel ref="my-amf" />
              </default-channels>
              <!-- ADC Demo application -->
              <destination id="visitorService">
                        <properties>
                                  <source>com.visitor.VisitorService</source>
                        </properties>
              </destination>
    </service>

    Hi!
    I am using Flash Builder 4.6, BlazeDS, and Hibernate. How to store a webcam snapshot into the MySql Database. I stored Form Items by using RemoteObject into the database. But I failed to store webcam snapshot. I captured that image on Panel component.I converted that image to ByteArray. Now I want to save that image into the database. Please help me in this regard.
    thanks in advance.
    Here the Code:
    VisitorEntryForm.mxml
    <?xml version="1.0" encoding="utf-8"?>
    <mx:TitleWindow
              xmlns:mx="http://www.adobe.com/2006/mxml"
              xmlns:vo="com.visitor.vo.*"
              width="600"
              height="300"
              defaultButton="{submitButton}"
              showCloseButton="true"
              creationComplete="creationCompleteHandler();"
              close="PopUpManager.removePopUp(this);"
              title="Visitor Entry Form" xmlns:text="flash.text.*">
              <mx:RemoteObject id="saveService" destination="visitorService" result="handleSaveResult(event)" fault="handleFault(event)" showBusyCursor="true" />
              <vo:Visitor id="visitor"
                                               vType="{vTypeField.text}"
                                               vPurpose="{vPurposeField.text}"
                                               vName="{vNameField.text}"
                                               vAddress="{vAddressField.text}"
                                               cPerson="{cPersonField.text}"
                                               cAddress="{cAddressField.text}"
                                     />
                        <mx:Script>
                        <![CDATA[
                        import mx.managers.PopUpManager;
                        import flash.media.Camera;
                        import com.visitor.vo.WebCam;
                        import com.visitor.vo.Base64;
                        import mx.core.UIComponent;
                        import mx.graphics.codec.JPEGEncoder;
                        import mx.controls.Alert;
                        import mx.containers.Canvas;
                        import mx.rpc.events.ResultEvent;
                        import mx.rpc.events.FaultEvent;
                        import mx.events.ValidationResultEvent;
                        import mx.validators.Validator;
                                  [Bindable]
                                  private var webCam: com.visitor.vo.WebCam;
                                  [Bindable]
                                  private var message:String;
                                  [Bindable]
                                  private var formIsValid:Boolean = false;
                                  [Bindable]
                                  public var formIsEmpty:Boolean;
                                  private var focussedFormControl:DisplayObject;
                                  private function handleSaveResult(ev:ResultEvent):void {
                                            clearFormHandler();
                                            validateForm(ev);
                                            Alert.show("Visitor successfully created/updated.", "Information", Alert.OK, null, null, null, Alert.OK);
                                            // Reload the list.
                                            parentApplication.listConsultants.loaderService.getConsultants();
                                            PopUpManager.removePopUp(this);
                                  private function handleFault(ev:FaultEvent):void {
                                            message = "Error: " + ev.fault.faultCode + " \n "
                                                      + "Detail: " + ev.fault.faultDetail + " \n "
                                                      + "Message: " + ev.fault.faultString;
                                  public function saveVisitor():void {
                                            saveService.addUpdateVisitor(visitor);
                                  private function creationCompleteHandler():void {
                                            init();
                                            PopUpManager.centerPopUp(this);
                                            resetFocus();
                                  private function resetFocus():void {
                                            focusManager.setFocus(vTypeField);
                                  public function validateForm(event:Event):void  {
                                            focussedFormControl = event.target as DisplayObject;   
                                            formIsValid = true;
                                            // Check if form is empty
                                            formIsEmpty = (vTypeField.text == "" && vPurposeField.text == "" && vNameField.text == "" && vAddressField.text == "" && cPersonField.text == "" && cAddressField.text == "");
                                            validate(vTypeValidator);               
                                            validate(vPurposeValidator);
                                            validate(vNameValidator);
                                            validate(vAddressValidator);
                                            validate(cPersonValidator);
                                            validate(cAddressValidator);
                                  private function validate(validator:Validator):Boolean {
                                            var validatorSource:DisplayObject = validator.source as DisplayObject;
                                            var suppressEvents:Boolean = (validatorSource != focussedFormControl);
                                            var event:ValidationResultEvent = validator.validate(null, suppressEvents);
                                            var currentControlIsValid:Boolean = (event.type == ValidationResultEvent.VALID);
                                            formIsValid = formIsValid && currentControlIsValid;
                                            return currentControlIsValid;
                                  private function clearFormHandler():void {
                                            // Clear all input fields.
                                            vTypeField.text = "";
                                            vPurposeField.text = "";
                                            vNameField.text = "";
                                            vAddressField.text = "";
                                            cPersonField.text = "";
                                            cAddressField.text = "";
                                            message = "";
                                            // Clear validation error messages.
                                            vTypeField.errorString = "";
                                            vPurposeField.errorString = "";
                                            vNameField.errorString = "";
                                            vAddressField.errorString = "";
                                            cPersonField.errorString = "";
                                            cAddressField.errorString = "";
                                            formIsEmpty = true;
                                            formIsValid = false;
                                            resetFocus();
                                  private function init():void {
                                  webCam = new WebCam(97,97);
                                  var ref:UIComponent = new UIComponent();
                                  preview.removeAllChildren();
                                  preview.addChild(ref);
                                  ref.addChild(webCam);
                                  private function takeSnapshot():void {
                                  imageViewer.visible = true;
                                  imageViewer.width = preview.width;
                                  imageViewer.height = preview.height;
                                  var uiComponent : UIComponent = new UIComponent();
                                  uiComponent.width = webCam.width;
                                  uiComponent.height = webCam.height;
                                  var photoData:Bitmap = webCam.getSnapshot();
                                  var photoBitmap:BitmapData = photoData.bitmapData;
                                  uiComponent.addChild(photoData);
                                  imageViewer.removeAllChildren();
                                  imageViewer.addChild(uiComponent);
                                  private function uploadSnapshot():void
                                            if (imageViewer.getChildren().length > 0)
                                                      var uic:UIComponent = imageViewer.getChildAt(0) as UIComponent;
                                                      var bitmap:Bitmap = uic.getChildAt(0) as Bitmap;
                                                      var jpgEncoder:JPEGEncoder = new JPEGEncoder(75);
                                                      var jpgBytes:ByteArray = jpgEncoder.encode(bitmap.bitmapData);
                                  private function deleteSnapshot():void
                                            imageViewer.removeAllChildren();
                        ]]>
                        </mx:Script>
              <mx:StringValidator id="vTypeValidator"          source="{vTypeField}"          property="text" minLength="2" required="true" />
              <mx:StringValidator id="vPurposeValidator" source="{vPurposeField}"          property="text" minLength="2" required="true" />
              <mx:StringValidator id="vNameValidator"          source="{vNameField}"          property="text" minLength="2" required="true" />
              <mx:StringValidator id="vAddressValidator"          source="{vAddressField}"          property="text" minLength="5" required="true" />
              <mx:StringValidator id="cPersonValidator" source="{cPersonField}"          property="text" minLength="2" required="true" />
              <mx:StringValidator id="cAddressValidator"          source="{cAddressField}"          property="text" minLength="5" required="true" />
              <mx:Grid width="575" height="211">
                        <mx:GridRow width="575" height="211">
                                  <mx:GridItem width="301" height="235">
                                            <mx:Form width="301" height="208">
                                                      <mx:FormItem label="Visitor's Type">
                                                                <mx:ComboBox id="vTypeField" text="{visitor.vType}" change="validateForm(event);" editable="true">
                                                                          <mx:Array>
                                                                                    <mx:String></mx:String>
                                                                                    <mx:String>Contractor</mx:String>
                                                                                    <mx:String>Supplier</mx:String>
                                                                                    <mx:String>Transporter</mx:String>
                                                                                    <mx:String>Plant</mx:String>
                                                                                    <mx:String>Non-Plant</mx:String>
                                                                          </mx:Array>
                                                                </mx:ComboBox>
                                                      </mx:FormItem>
                                                      <mx:FormItem label="Visit Purpose">
                                                                <mx:ComboBox id="vPurposeField" text="{visitor.vPurpose}" change="validateForm(event);" editable="true">
                                                                          <mx:Array>
                                                                                    <mx:String></mx:String>
                                                                                    <mx:String>Official</mx:String>
                                                                                    <mx:String>Personal</mx:String>
                                                                          </mx:Array>
                                                                </mx:ComboBox>
                                                      </mx:FormItem>
                                                      <mx:FormItem label="Visitor's Name">
                                                                <mx:TextInput id="vNameField"  text="{visitor.vName}" change="validateForm(event);"/>
                                                      </mx:FormItem>
                                                      <mx:FormItem label="Address">
                                                                <mx:TextInput id="vAddressField"   text="{visitor.vAddress}" change="validateForm(event);"/>
                                                      </mx:FormItem>
                                                      <mx:FormItem label="Contact Person">
                                                                <mx:TextInput id="cPersonField"  text="{visitor.cPerson}" change="validateForm(event);"/>
                                                      </mx:FormItem>
                                                      <mx:FormItem label="Address">
                                                                <mx:TextInput id="cAddressField"  text="{visitor.cAddress}" change="validateForm(event);"/>
                                                      </mx:FormItem>
                                                      </mx:Form>
                                  </mx:GridItem>
                                  <mx:GridItem width="264" height="193">
                                            <mx:Grid width="241" height="206">
                                                      <mx:GridRow width="100%" height="100%">
                                                                <mx:GridItem width="100%" height="100%" horizontalAlign="center" verticalAlign="middle">
                                                                          <mx:Panel width="100" height="132" title="Snap" id="preview" layout="absolute"/>
                                                                </mx:GridItem>
                                                                <mx:GridItem width="100%" height="100%" horizontalAlign="center" verticalAlign="middle">
                                                                          <mx:Panel width="100" height="132" title="Preview" id="imageViewer"  layout="absolute"/>
                                                                </mx:GridItem>
                                                      </mx:GridRow>
                                                      <mx:GridRow width="100%" height="27" >
                                                                <mx:GridItem width="100%" height="100%" horizontalAlign="center">
                                                                          <mx:Button id="snapshot" x="2" width="106" height="27" label="Snap"
                                                                                                  click="takeSnapshot();"/>
                                                                </mx:GridItem>
                                                                <mx:GridItem width="100%" height="100%" horizontalAlign="center">
                                                                          <mx:Button id="deleteButton" x="1" width="106" height="27" label="Delete"
                                                                                                  click="deleteSnapshot();"/>
                                                                </mx:GridItem>
                                                      </mx:GridRow>
                                            </mx:Grid>
                                  </mx:GridItem>
                        </mx:GridRow>
              </mx:Grid>
              <mx:ControlBar height="40" horizontalAlign="center">
                        <mx:Button label="Save Visitor"          id="submitButton" enabled="{formIsValid}" click="saveVisitor();" />
                        <mx:Button label="Clear form" enabled="{!formIsEmpty}"          click="clearFormHandler();" />
                        <mx:Button label="Cancel" click="PopUpManager.removePopUp(this);"/>
                        <mx:Label width="211" id="state"/>
              </mx:ControlBar>
              <mx:Text text="{message}" fontWeight="bold" width="300"/>
    </mx:TitleWindow>
    ListVisitors.mxml
    <?xml version="1.0" encoding="utf-8"?>
    <mx:Panel
              xmlns:mx="http://www.adobe.com/2006/mxml"
              xmlns:view="com.visitor.view.*"
              width="100%"
              height="100%"
              title="Visitor Management System - Found {visitorRecords} visitors."
              creationComplete="loadVisitors();">
              <mx:RemoteObject id="loaderService" destination="visitorService" result="handleLoadResult(event)"          fault="handleFault(event)" showBusyCursor="true" />
              <mx:RemoteObject id="deleteService" destination="visitorService" result="handleDeleteResult(event)"          fault="handleFault(event)" showBusyCursor="true" />
              <mx:Script>
                        <![CDATA[
                                  import com.visitor.vo.Visitor;
                                  import mx.controls.Alert;
                                  import mx.managers.PopUpManager;
                                  import mx.containers.TitleWindow;
                                  import mx.collections.ArrayCollection;
                                  import mx.rpc.events.ResultEvent;
                                  import mx.rpc.events.FaultEvent;
                                  [Bindable]
                                  private var message:String;
                                  [Bindable]
                                  private var visitors:ArrayCollection = new ArrayCollection();
                                  [Bindable]
                                  private var visitorRecords:int = 0;
                                  public function loadVisitors():void {
                                            loaderService.getVisitors();
                                  private function deleteVisitor():void {
                                            if(dataGrid.selectedItem != null) {
                                                      var selectedItem:Visitor = dataGrid.selectedItem as Visitor;
                                                      deleteService.deleteVisitor(selectedItem.visitorId);
                                  private function createVisitor():void {
                                            var titleWindow:VisitorEntryForm = VisitorEntryForm(PopUpManager.createPopUp(this, VisitorEntryForm, true));
                                            titleWindow.setStyle("borderAlpha", 0.9);
                                            titleWindow.formIsEmpty = true;
                                  private function updateVisitor():void {
                                            var titleWindow:VisitorEntryForm = VisitorEntryForm(PopUpManager.createPopUp(this, VisitorEntryForm, true));
                                            titleWindow.setStyle("borderAlpha", 0.9);
                                            titleWindow.visitor = dataGrid.selectedItem as Visitor;
                                            titleWindow.formIsEmpty = false;
                                  private function handleLoadResult(ev:ResultEvent):void {
                                            visitors = ev.result as ArrayCollection;
                                            visitorRecords = visitors.length;
                                  private function handleDeleteResult(ev:ResultEvent):void {
                                            Alert.show("The visitor has been deleted.", "Information", Alert.OK, null, null, null, Alert.OK);
                                            loadVisitors();
                                  private function handleFault(ev:FaultEvent):void {
                                            message = "Error: "
                                                      + ev.fault.faultCode + " - "
                                                      + ev.fault.faultDetail + " - "
                                                      + ev.fault.faultString;
                        ]]>
              </mx:Script>
              <mx:VBox width="100%" height="100%">
                        <mx:Label text="{message}" fontWeight="bold" includeInLayout="false" />
                        <mx:DataGrid
                                  id="dataGrid"
                                  width="100%"
                                  height="100%"
                                  dataProvider="{visitors}"
                                  doubleClickEnabled="true"
                                  doubleClick="updateVisitor()" >
                                  <mx:columns>
                                            <mx:DataGridColumn dataField="visitorId"          headerText="Visitor ID" width="100"/>
                                            <mx:DataGridColumn dataField="vType"                    headerText="Visitor's Type" />
                                            <mx:DataGridColumn dataField="vPurpose"           headerText="Visit Purpose" />
                                            <mx:DataGridColumn dataField="vName"                     headerText="Visitor's Name" />
                                            <mx:DataGridColumn dataField="vAddress"                    headerText="Visitor's Address" />
                                            <mx:DataGridColumn dataField="cPerson"                     headerText="Contact Person" />
                                            <mx:DataGridColumn dataField="cAddress"                    headerText="Contact Address" />
                                            <mx:DataGridColumn dataField="timeIn"                     headerText="Time-In" />
                                            <mx:DataGridColumn dataField="timeOut"                     headerText="Time-Out" />
                                            <mx:DataGridColumn dataField="vPhoto"                     headerText="Visitor's Photo" />
                                  </mx:columns>
                        </mx:DataGrid>
                        <mx:ControlBar horizontalAlign="center">
                                  <mx:Button label="Create Visitor"          click="createVisitor()"          toolTip="Create a new visitor and store it in the database." />
                                  <mx:Button label="Update Visitor"          click="updateVisitor()"           enabled="{dataGrid.selectedItem}" toolTip="Update an existing database visitor." />
                                  <mx:Button label="Delete Visitor"          click="deleteVisitor()"          enabled="{dataGrid.selectedItem}" toolTip="Delete the visitor from the database." />
                                  <mx:Button label="Reload Data"                    click="loadVisitors()"           toolTip="Reload the visitor list from the database." />
                        </mx:ControlBar>
              </mx:VBox>
    </mx:Panel>
    Visitor.as
    package com.visitor.vo
              import mx.controls.Image;
              import spark.primitives.BitmapImage;
              [Bindable]
              [RemoteClass(alias="com.visitor.Visitor")]
              public class Visitor
                        public function Visitor()
                        public var visitorId:Number;
                        public var vType:String;
                        public var vPurpose:String;
                        public var vName:String;
                        public var vAddress:String;
                        public var cPerson:String;
                        public var cAddress:String;
                        public var timeIn:Date;
                        public var timeOut:Date;
                       public var vPhoto: Image;
    Visitor.java
    package com.visitor;
    import java.sql.Blob;
    import java.sql.Timestamp;
    import javax.persistence.Basic;
    import javax.persistence.Column;
    import javax.persistence.Entity;
    import javax.persistence.GeneratedValue;
    import javax.persistence.GenerationType;
    import javax.persistence.Id;
    import javax.persistence.NamedQueries;
    import javax.persistence.NamedQuery;
    import javax.persistence.Table;
    import org.hibernate.annotations.Index;
    @Entity
    @Table(name = "visitors")
    @NamedQueries( {
                        @NamedQuery(name = "visitors.findAll", query = "from Visitor"),
                        @NamedQuery(name = "visitors.byId", query = "select v from Visitor v where v.visitorId= :visitorId") })
    public class Visitor {
              @Id
              @GeneratedValue(strategy = GenerationType.AUTO)
              @Column(name = "visitorId", nullable = false)
              private Long visitorId;
              @Basic
              @Index(name = "vType_idx_1")
              @Column(name = "vType", nullable = true, unique = false)
              private String vType;
              @Basic
              @Column(name = "vPurpose", nullable = true, unique = false)
              private String vPurpose;
              @Basic
              @Column(name = "vName", nullable = true, unique = false)
              private String vName;
              @Basic
              @Column(name = "vAddress", nullable = true, unique = false)
              private String vAddress;
              @Basic
              @Column(name = "cPerson", nullable = true, unique = false)
              private String cPerson;
              @Basic
              @Column(name = "cAddress", nullable = true, unique = false)
              private String cAddress;
              @Basic
              @Column(name = "timeIn", nullable = false, unique = false)
              private Timestamp timeIn;
              @Basic
              @Column(name = "timeOut", nullable = true, unique = false)
              private Timestamp timeOut;
              @Basic
              @Column(name = "vPhoto", nullable = true, unique = false)
              private Blob vPhoto;
              public Visitor() {
                        super();
              public Long getVisitorId() {
                        return visitorId;
              public void setVisitorId(Long visitorId) {
                        this.visitorId = visitorId;
              public String getvType() {
                        return vType;
              public void setvType(String vType) {
                        this.vType = vType;
              public String getvPurpose() {
                        return vPurpose;
              public void setvPurpose(String vPurpose) {
                        this.vPurpose = vPurpose;
              public String getvName() {
                        return vName;
              public void setvName(String vName) {
                        this.vName = vName;
              public String getvAddress() {
                        return vAddress;
              public void setvAddress(String vAddress) {
                        this.vAddress = vAddress;
              public String getcPerson() {
                        return cPerson;
              public void setcPerson(String cPerson) {
                        this.cPerson = cPerson;
              public String getcAddress() {
                        return cAddress;
              public void setcAddress(String cAddress) {
                        this.cAddress = cAddress;
              public Timestamp getTimeIn() {
                        return timeIn;
              public void setTimeIn(Timestamp timeIn) {
                        this.timeIn = timeIn;
              public Timestamp getTimeOut() {
                        return timeOut;
              public void setTimeOut(Timestamp timeOut) {
                        this.timeOut = timeOut;
              public Blob getvPhoto() {
                        return vPhoto;
              public void setvPhoto(Blob vPhoto) {
                        this.vPhoto = vPhoto;
    VisitorService.java
    package com.visitor;
    import java.sql.Timestamp;
    import java.util.Date;
    import java.util.List;
    import javax.persistence.EntityManager;
    import javax.persistence.EntityManagerFactory;
    import javax.persistence.EntityTransaction;
    import javax.persistence.Persistence;
    import javax.persistence.Query;
    import org.apache.log4j.Logger;
    public class VisitorService {
              private static final String PERSISTENCE_UNIT = "visitor_db";
              private static Logger logger = Logger.getLogger(VisitorService.class);
              public VisitorService() {
                        super();
              public List<Visitor> getvisitors() {
                        logger.debug("** getVisitors called...");
                        EntityManagerFactory entityManagerFactory = Persistence
                                            .createEntityManagerFactory(PERSISTENCE_UNIT);
                        EntityManager em = entityManagerFactory.createEntityManager();
                        Query findAllQuery = em.createNamedQuery("visitors.findAll");
                        List<Visitor> visitors = findAllQuery.getResultList();
                        if (visitors != null)
                                  logger.debug("** Found " + visitors.size() + " records:");
                        return visitors;
              public void addUpdateVisitor(Visitor visitor) throws Exception {
                        logger.debug("** addUpdateVisitor called...");
                        EntityManagerFactory emf = Persistence
                                            .createEntityManagerFactory(PERSISTENCE_UNIT);
                        EntityManager em = emf.createEntityManager();
                        // When passing Boolean and Number values from the Flash client to a
                        // Java object, Java interprets null values as the default values for
                        // primitive types; for example, 0 for double, float, long, int, short,
                        // byte.
                        if (visitor.getVisitorId() == null          || visitor.getVisitorId() == 0) {
                                  // New consultant is created
                                  visitor.setVisitorId(null);
                                  visitor.setTimeIn(new Timestamp(new Date().getTime()));
                        } else {
                                  visitor.setTimeOut(new Timestamp(new Date().getTime()));
                                  // Existing consultant is updated - do nothing.
                        EntityTransaction tx = em.getTransaction();
                        tx.begin();
                        try {
                                  em.merge(visitor);
                                  tx.commit();
                        } catch (Exception e) {
                                  logger.error("** Error: " + e.getMessage());
                                  tx.rollback();
                                  throw new Exception(e.getMessage());
                        } finally {
                                  logger.info("** Closing Entity Manager.");
                                  em.close();
              public void deleteVisitor(Long visitorId) {
                        logger.debug("** deleteVisitor called...");
                        EntityManagerFactory emf = Persistence
                                            .createEntityManagerFactory(PERSISTENCE_UNIT);
                        EntityManager em = emf.createEntityManager();
                        Query q = em.createNamedQuery("visitors.byId");
                        q.setParameter("visitorId", visitorId);
                        Visitor visitor = (Visitor) q.getSingleResult();
                        if (visitor != null) {
                                  EntityTransaction tx = em.getTransaction();
                                  tx.begin();
                                  try {
                                            em.remove(visitor);
                                            tx.commit();
                                  } catch (Exception e) {
                                            logger.error("** Error: " + e.getMessage());
                                            tx.rollback();
                                  } finally {
                                            logger.info("** Closing Entity Manager.");
                                            em.close();
    remoting-config.xml
    <?xml version="1.0" encoding="UTF-8"?>
    <service id="remoting-service" class="flex.messaging.services.RemotingService">
              <adapters>
                        <adapter-definition id="java-object"
                                  class="flex.messaging.services.remoting.adapters.JavaAdapter"
                                  default="true" />
              </adapters>
              <default-channels>
                        <channel ref="my-amf" />
              </default-channels>
              <!-- ADC Demo application -->
              <destination id="visitorService">
                        <properties>
                                  <source>com.visitor.VisitorService</source>
                        </properties>
              </destination>
    </service>

  • Transfer Object in JSF, Spring, and Hibernate

    The application on which I am working deploys the JavaServer Faces, Spring and Hibernate frameworks.
    We are going to use the "transfer object" to move data between J2EE tiers from the front end to the back end and vice versa. In addition, data "types" may need to be converted --
    At the front end, the "type" of the data that are entered by users may not match that in the database table. For example, checkboxes may be marked or left blank by users. The "type" of the checkboxes is "boolean" in the JSF backing bean. However, we have either "Y" or "N" for the corresponding field in the database table.
    The JSF backing bean holds data as well as controller functionality. Of course, the transfer object holds data only.
    With regard to class properties, Is the transfer object an exact copy of the JSF backing bean? And at which tier the data are converted to match their correspoding "types" in the database tables?
    We also have the "data objects" which are exact representation of database tables.
    Thanks for your advices.

    Small example: you can decide in the business layer
    whether to convert it to boolean or Boolean (which
    has a 3rd state: null).But it all goes back to your data model. If your data model supports null for that property, then of course boolean is a poor choice. If that case one could use Boolean. None of this has anything to do with re-usability, which was your objection.
    I think the re-usability question goes back to the data model as well. Suppose your data model says this property is boolean valued. However if your database does not support booleans natively, then you need to map the value for storage in the database. But that is the data persistence layers problem.
    OTOH, suppose your data model says that this property may be 'Y' or 'N'. Then the Java class represent the business object should not have a boolean property, we should make it match the data model.
    However, I think that most cases where people are storing 'Y' or 'N' in a field in the database fall into the first case, where the data model is a boolean and they are working around limitations in the database. There is no reason in that case to perpetuate the same limitations in the Java code.

  • Problem with "package-info.java" using EJB 3.0 and OC4J

    Hi all.
    I already posted this question on JDeveloper forum, but didn't get any answer,
    so I'll try posting here.
    Anyway, I'm new both to JDeveloper and J2EE,
    so I'm trying out examples for EJB 3.0, and I got stuck at "Use Security Annotations with EJB 3.0"
    (http://www.oracle.com/technology/tech/java/oc4j/ejb3/howtos-ejb3/howtoejb30security/doc/how-to-ejb30-security-ejb.html).
    Example code is working perfectly, if one builds it using Ant, but I'm importing all examples into JDeveloper (or at least I'm trying to :))
    JDeveloper can't build file "package-info.java" containing following code:
    @javax.annotation.security.SecurityRoles(roleNames={"superuser", "user"})
    package oracle.ejb30;I'm getting following output in "Compiler - Log" window:
    Error(2,1): 'class', 'interface', or 'enum' expected.
    Help much appreciated...
    platform used:
    Windows XP SP2
    JDeveloper Studio (Version 10.1.3, Build 3412)
    JDK 1.5_06
    OC4J 10.1.3 developer preview 4 (standalone version)

    Since you're using EJBs, you can use JTA and can skip the getTransaction() calls. If you want to use getTransaction().begin() and commit(), then make sure that your EntityManager is resource-local. The configuration for this is in persistence.xml. Set a transaction-type of RESOURCE_LOCAL rather than JTA.

  • Ejb 3.0 and JDeveloper

    If I drag and drop tables with One to one mapping in an ejb diagram in JDeveloper (one table have having the foreign key as the primary key). If I create ejb 2.1 beans it makes makes a One To One mapping between the entity beans created and if I drop them as ejb 3.0 it makes a OneToMany mapping. this is what I get for the same tables.
    for ejb 2.1
    <ejb-relation>
    <ejb-relation-name>Envincidents - Incidents</ejb-relation-name>
    <ejb-relationship-role>
    <ejb-relationship-role-name>Envincidents has one Incidents</ejb-relationship-role-name>
    <multiplicity>One</multiplicity>
    <relationship-role-source>
    <ejb-name>Envincidents</ejb-name>
    </relationship-role-source>
    <cmr-field>
    <cmr-field-name>incidents_incidentsId</cmr-field-name>
    </cmr-field>
    </ejb-relationship-role>
    <ejb-relationship-role>
    <ejb-relationship-role-name>Incidents may have one Envincidents</ejb-relationship-role-name>
    <multiplicity>One</multiplicity>
    <relationship-role-source>
    <ejb-name>Incidents</ejb-name>
    </relationship-role-source>
    </ejb-relationship-role>
    </ejb-relation>
    for ejb 3.0
    Envincidents
    @Id
    @ManyToOne(targetEntity="mypackage.Incidents")
    @JoinColumn(name="ENVINCIDENTS.INCIDENTS_ID", referencedColumnName="INCIDENTS.ID")
    public Incidents getIncidents() {
    return incidents;
    public void setIncidents(Incidents incidents) {
    this.incidents = incidents;
    Incidents
    @OneToMany(targetEntity="mypackage.Envincidents")
    @JoinColumn(name="ENVINCIDENTS.INCIDENTS_ID", referencedColumnName="INCIDENTS.ID")
    public Collection<Envincidents> getEnvincidentsCollection() {
    return envincidentsCollection;
    public void setEnvincidentsCollection(Collection<Envincidents> envincidentsCollection) {
    this.envincidentsCollection = envincidentsCollection;
    public Envincidents addToEnvincidentsCollection(Envincidents envincidents) {
    getEnvincidentsCollection().add( envincidents );
    envincidents.setIncidents( this );
    return envincidents;
    public Envincidents removeFromEnvincidentsCollection(Envincidents envincidents) {
    getEnvincidentsCollection().remove( envincidents );
    envincidents.setIncidents( null );
    return envincidents;
    this causes the following problem.
    Exception Description: Multiple writable mappings exist for the field [ENVINCIDE
    NTS.INCIDENTS_ID]. Only one may be defined as writable, all others must be spec
    ified read-only.
    which I have already reported.
    I know this is a minor inconvenience and I can hand edit the entity beans and make them one to one for ejb 3.0. But would be to good advantage to have a consistent "dropping of tables" for ejb 2.1 and 3.0. So one can have a similar behavior of entity beans created from tables using ejb 2.1 and 3.0.

    I guess this could be desirable if migrating from ejb 2.1 to 3.0 if one has already designed the database.
    Dev

  • Ejb 3.0 and webservices

    Hello everybody?
    Does everybody know if i can create a web service from an ejb 3.0 stateless session inside jdeveloper 10 g 10.1.3 (using a wizard for example)?
    Thank you

    It's almost too easy to need a wizard - try this:
    Trhough your project properties add the JSR-181 Web Service library
    In your session bean type @Web (at the top of the class or above a method) and you'll be prompted to import javax.jws.WebMethod (using Alt-Enter) then you can select the appropriate tag (@WebService for all methods to be published, @WebMethod at the individual method level, etc.)
    Then deploy your EJB as normal and voila! See the deployed EJB and Web Service
    Rgds
    Susan

  • [SOLVED] Poweroff, suspend and hibernate don't work

    I installed Archlinux on my work desktop on Monday and can't get poweroff, suspend and hibernate to work. The command `systemctl poweroff` sort of works, except it doesn't actually turn off the computer. Suspend and hibernate don't work at all, the computer hangs on the terminal with a cursor on the top left corner of the screen. Here is the log from `journalctl`. There doesn't seem to be any error messages in it, as far as I can see.
    Apr 16 10:02:55 carolfs-ifusp sudo[1127]: carolfs : TTY=pts/0 ; PWD=/home/carolfs ; USER=root ; COMMAND=/usr/bin/systemctl poweroff
    Apr 16 10:02:55 carolfs-ifusp sudo[1127]: pam_unix(sudo:session): session opened for user root by carolfs(uid=0)
    Apr 16 10:02:55 carolfs-ifusp systemd[1]: Stopping Session c2 of user carolfs.
    Apr 16 10:02:55 carolfs-ifusp gnome-session[576]: Received signal:15->'Terminated'
    Apr 16 10:02:55 carolfs-ifusp org.gnome.evolution.dataserver.Sources3[591]: Received terminate signal.
    Apr 16 10:02:55 carolfs-ifusp colord[453]: Automatic remove of icc-9cb50954c1872204852075bef0599dec from xrandr-Goldstar Company Ltd-W2043-16843009
    Apr 16 10:02:55 carolfs-ifusp colord[453]: Profile removed: icc-9cb50954c1872204852075bef0599dec
    Apr 16 10:02:55 carolfs-ifusp colord[453]: device removed: xrandr-Goldstar Company Ltd-W2043-16843009
    Apr 16 10:02:55 carolfs-ifusp polkitd[358]: Unregistered Authentication Agent for unix-session:c2 (system bus name :1.37, object path /org/freedesktop/PolicyKit1/AuthenticationAgent, locale en_US.UTF-8) (disconnected from bus)
    Apr 16 10:02:55 carolfs-ifusp ntpd[300]: ntpd exiting on signal 15
    Apr 16 10:02:55 carolfs-ifusp systemd[1]: Stopped Session c2 of user carolfs.
    Apr 16 10:02:55 carolfs-ifusp systemd[1]: Stopping Session c1 of user gdm.
    Apr 16 10:02:55 carolfs-ifusp systemd[1]: Stopped Session c1 of user gdm.
    Apr 16 10:02:55 carolfs-ifusp systemd[1]: Stopping Sound Card.
    Apr 16 10:02:55 carolfs-ifusp systemd[1]: Stopped target Sound Card.
    Apr 16 10:02:55 carolfs-ifusp systemd[1]: Stopping system-systemd\x2dfsck.slice.
    Apr 16 10:02:55 carolfs-ifusp systemd[1]: Removed slice system-systemd\x2dfsck.slice.
    Apr 16 10:02:55 carolfs-ifusp systemd[1]: Stopping system-getty.slice.
    Apr 16 10:02:55 carolfs-ifusp systemd[1]: Removed slice system-getty.slice.
    Apr 16 10:02:55 carolfs-ifusp systemd[1]: Stopping User Manager for UID 1000...
    Apr 16 10:02:55 carolfs-ifusp systemd[1]: Stopping Disk Manager...
    Apr 16 10:02:55 carolfs-ifusp systemd[1]: Stopping Login Service...
    Apr 16 10:02:55 carolfs-ifusp systemd[567]: Stopping Default.
    Apr 16 10:02:55 carolfs-ifusp systemd[386]: Stopping Default.
    Apr 16 10:02:55 carolfs-ifusp systemd[1]: Stopping Login Prompts.
    Apr 16 10:02:55 carolfs-ifusp systemd[567]: Stopped target Default.
    Apr 16 10:02:55 carolfs-ifusp systemd[386]: Stopped target Default.
    Apr 16 10:02:55 carolfs-ifusp systemd[1]: Stopped target Login Prompts.
    Apr 16 10:02:55 carolfs-ifusp systemd[567]: Stopping Basic System.
    Apr 16 10:02:55 carolfs-ifusp systemd[386]: Stopping Basic System.
    Apr 16 10:02:55 carolfs-ifusp systemd[1]: Stopping GNOME Display Manager...
    Apr 16 10:02:55 carolfs-ifusp systemd[567]: Stopped target Basic System.
    Apr 16 10:02:55 carolfs-ifusp systemd[386]: Stopped target Basic System.
    Apr 16 10:02:55 carolfs-ifusp systemd[1]: Starting Generate shutdown-ramfs...
    Apr 16 10:02:55 carolfs-ifusp systemd[567]: Stopping Paths.
    Apr 16 10:02:55 carolfs-ifusp systemd[386]: Stopping Paths.
    Apr 16 10:02:55 carolfs-ifusp systemd[567]: Stopped target Paths.
    Apr 16 10:02:55 carolfs-ifusp systemd[386]: Stopped target Paths.
    Apr 16 10:02:55 carolfs-ifusp systemd[567]: Stopping Timers.
    Apr 16 10:02:55 carolfs-ifusp systemd[386]: Stopping Timers.
    Apr 16 10:02:55 carolfs-ifusp systemd[567]: Stopped target Timers.
    Apr 16 10:02:55 carolfs-ifusp systemd[1]: Stopped RealtimeKit Scheduling Policy Service.
    Apr 16 10:02:55 carolfs-ifusp systemd[386]: Stopped target Timers.
    Apr 16 10:02:55 carolfs-ifusp systemd[567]: Stopping Sockets.
    Apr 16 10:02:55 carolfs-ifusp systemd[386]: Stopping Sockets.
    Apr 16 10:02:55 carolfs-ifusp systemd[1]: Stopped Locale Service.
    Apr 16 10:02:55 carolfs-ifusp systemd[567]: Stopped target Sockets.
    Apr 16 10:02:55 carolfs-ifusp systemd[386]: Stopped target Sockets.
    Apr 16 10:02:55 carolfs-ifusp systemd[567]: Starting Shutdown.
    Apr 16 10:02:55 carolfs-ifusp systemd[1]: Stopped Disk Manager.
    Apr 16 10:02:55 carolfs-ifusp systemd[386]: Starting Shutdown.
    Apr 16 10:02:55 carolfs-ifusp systemd[567]: Reached target Shutdown.
    Apr 16 10:02:55 carolfs-ifusp systemd[386]: Reached target Shutdown.
    Apr 16 10:02:55 carolfs-ifusp systemd[567]: Starting Exit the Session...
    Apr 16 10:02:55 carolfs-ifusp systemd[386]: Starting Exit the Session...
    Apr 16 10:02:55 carolfs-ifusp systemd[1]: Stopping Network.
    Apr 16 10:02:55 carolfs-ifusp systemd[1]: Stopped target Network.
    Apr 16 10:02:55 carolfs-ifusp systemd[1]: Stopping dhcpcd on all interfaces...
    Apr 16 10:02:55 carolfs-ifusp systemd[567]: Received SIGRTMIN+24 from PID 1159 (kill).
    Apr 16 10:02:55 carolfs-ifusp systemd[386]: Received SIGRTMIN+24 from PID 1160 (kill).
    Apr 16 10:02:55 carolfs-ifusp systemd[1]: Stopped User Manager for UID 120.
    Apr 16 10:02:55 carolfs-ifusp systemd[1]: Stopped User Manager for UID 1000.
    Apr 16 10:02:55 carolfs-ifusp systemd[1]: Stopping user-1000.slice.
    Apr 16 10:02:55 carolfs-ifusp systemd[1]: Removed slice user-1000.slice.
    Apr 16 10:02:55 carolfs-ifusp systemd[1]: Stopping user-120.slice.
    Apr 16 10:02:55 carolfs-ifusp systemd[1]: Removed slice user-120.slice.
    Apr 16 10:02:55 carolfs-ifusp dhcpcd[1161]: sending signal TERM to pid 264
    Apr 16 10:02:55 carolfs-ifusp dhcpcd[1161]: waiting for pid 264 to exit
    Apr 16 10:02:55 carolfs-ifusp dhcpcd[264]: received signal TERM from PID 1161, stopping
    Apr 16 10:02:55 carolfs-ifusp dhcpcd[264]: eno1: removing interface
    Apr 16 10:02:55 carolfs-ifusp systemd[387]: pam_unix(systemd-user:session): session closed for user gdm
    Apr 16 10:02:55 carolfs-ifusp systemd[568]: pam_unix(systemd-user:session): session closed for user carolfs
    Apr 16 10:02:55 carolfs-ifusp gnome-session[576]: Received signal:15->'Terminated'
    Apr 16 10:02:55 carolfs-ifusp gdm-session-worker[383]: <3>GLib: Source ID 71 was not found when attempting to remove it
    Apr 16 10:02:55 carolfs-ifusp gdm-Xorg-:0[336]: (II) evdev: AT Translated Set 2 keyboard: Close
    Apr 16 10:02:55 carolfs-ifusp gdm-Xorg-:0[336]: (II) UnloadModule: "evdev"
    Apr 16 10:02:55 carolfs-ifusp gdm-Xorg-:0[336]: (II) evdev: Microsoft Microsoft Basic Optical Mouse : Close
    Apr 16 10:02:55 carolfs-ifusp gdm-Xorg-:0[336]: (II) UnloadModule: "evdev"
    Apr 16 10:02:55 carolfs-ifusp gdm-Xorg-:0[336]: (II) evdev: Power Button: Close
    Apr 16 10:02:55 carolfs-ifusp gdm-Xorg-:0[336]: (II) UnloadModule: "evdev"
    Apr 16 10:02:55 carolfs-ifusp gdm-Xorg-:0[336]: (II) evdev: Power Button: Close
    Apr 16 10:02:55 carolfs-ifusp gdm-Xorg-:0[336]: (II) UnloadModule: "evdev"
    Apr 16 10:02:55 carolfs-ifusp org.freedesktop.Tracker1[591]: Received signal:15->'Terminated'
    Apr 16 10:02:55 carolfs-ifusp dhcpcd[1161]: dhcpcd[1161]: sending signal TERM to pid 264
    Apr 16 10:02:55 carolfs-ifusp dhcpcd[1161]: dhcpcd[1161]: waiting for pid 264 to exit
    Apr 16 10:02:55 carolfs-ifusp dhcpcd[264]: exited
    Apr 16 10:02:55 carolfs-ifusp systemd[1]: Stopped Login Service.
    Apr 16 10:02:55 carolfs-ifusp systemd[1]: dhcpcd.service: main process exited, code=exited, status=1/FAILURE
    Apr 16 10:02:55 carolfs-ifusp mkinitcpio[1145]: ==> Starting build: none
    Apr 16 10:02:56 carolfs-ifusp mkinitcpio[1145]: -> Running build hook: [sd-shutdown]
    Apr 16 10:02:56 carolfs-ifusp systemd[1]: Stopped dhcpcd on all interfaces.
    Apr 16 10:02:56 carolfs-ifusp systemd[1]: Unit dhcpcd.service entered failed state.
    Apr 16 10:02:56 carolfs-ifusp gdm-Xorg-:0[336]: (II) NVIDIA(GPU-0): Deleting GPU-0
    Apr 16 10:02:56 carolfs-ifusp gdm-Xorg-:0[336]: (EE) Server terminated successfully (0). Closing log file.
    Apr 16 10:02:56 carolfs-ifusp gdm[295]: Freeing conversation 'gdm-password' with active job
    Apr 16 10:02:56 carolfs-ifusp gdm[295]: Freeing conversation 'gdm-launch-environment' with active job
    Apr 16 10:02:56 carolfs-ifusp systemd[1]: Stopped GNOME Display Manager.
    Apr 16 10:02:56 carolfs-ifusp systemd[1]: Stopping Permit User Sessions...
    Apr 16 10:02:56 carolfs-ifusp systemd[1]: Stopped Permit User Sessions.
    Apr 16 10:02:56 carolfs-ifusp systemd[1]: Stopping Basic System.
    Apr 16 10:02:56 carolfs-ifusp systemd[1]: Stopped target Basic System.
    Apr 16 10:02:56 carolfs-ifusp systemd[1]: Stopping Slices.
    Apr 16 10:02:56 carolfs-ifusp systemd[1]: Stopped target Slices.
    Apr 16 10:02:56 carolfs-ifusp systemd[1]: Stopping User and Session Slice.
    Apr 16 10:02:56 carolfs-ifusp systemd[1]: Removed slice User and Session Slice.
    Apr 16 10:02:56 carolfs-ifusp systemd[1]: Stopping Paths.
    Apr 16 10:02:56 carolfs-ifusp systemd[1]: Stopped target Paths.
    Apr 16 10:02:56 carolfs-ifusp systemd[1]: Stopping Forward Password Requests to Wall Directory Watch.
    Apr 16 10:02:56 carolfs-ifusp systemd[1]: Stopped Forward Password Requests to Wall Directory Watch.
    Apr 16 10:02:56 carolfs-ifusp systemd[1]: Stopping Dispatch Password Requests to Console Directory Watch.
    Apr 16 10:02:56 carolfs-ifusp systemd[1]: Stopped Dispatch Password Requests to Console Directory Watch.
    Apr 16 10:02:56 carolfs-ifusp systemd[1]: Stopping Timers.
    Apr 16 10:02:56 carolfs-ifusp systemd[1]: Stopped target Timers.
    Apr 16 10:02:56 carolfs-ifusp systemd[1]: Stopping Daily man-db cache update.
    Apr 16 10:02:56 carolfs-ifusp systemd[1]: Stopped Daily man-db cache update.
    Apr 16 10:02:56 carolfs-ifusp systemd[1]: Stopping Daily verification of password and group files.
    Apr 16 10:02:56 carolfs-ifusp systemd[1]: Stopped Daily verification of password and group files.
    Apr 16 10:02:56 carolfs-ifusp systemd[1]: Stopping Daily rotation of log files.
    Apr 16 10:02:56 carolfs-ifusp systemd[1]: Stopped Daily rotation of log files.
    Apr 16 10:02:56 carolfs-ifusp systemd[1]: Stopping Daily Cleanup of Temporary Directories.
    Apr 16 10:02:56 carolfs-ifusp systemd[1]: Stopped Daily Cleanup of Temporary Directories.
    Apr 16 10:02:56 carolfs-ifusp systemd[1]: Stopping Sockets.
    Apr 16 10:02:56 carolfs-ifusp systemd[1]: Stopped target Sockets.
    Apr 16 10:02:56 carolfs-ifusp systemd[1]: Stopping Device-mapper event daemon FIFOs.
    Apr 16 10:02:56 carolfs-ifusp systemd[1]: Closed Device-mapper event daemon FIFOs.
    Apr 16 10:02:56 carolfs-ifusp systemd[1]: Stopping LVM2 metadata daemon socket.
    Apr 16 10:02:56 carolfs-ifusp systemd[1]: Closed LVM2 metadata daemon socket.
    Apr 16 10:02:56 carolfs-ifusp systemd[1]: Stopping D-Bus System Message Bus Socket.
    Apr 16 10:02:56 carolfs-ifusp systemd[1]: Closed D-Bus System Message Bus Socket.
    Apr 16 10:02:56 carolfs-ifusp systemd[1]: Stopping System Initialization.
    Apr 16 10:02:56 carolfs-ifusp systemd[1]: Stopped target System Initialization.
    Apr 16 10:02:56 carolfs-ifusp systemd[1]: Stopping Apply Kernel Variables...
    Apr 16 10:02:56 carolfs-ifusp systemd[1]: Stopped Apply Kernel Variables.
    Apr 16 10:02:56 carolfs-ifusp systemd[1]: Stopping Setup Virtual Console...
    Apr 16 10:02:56 carolfs-ifusp systemd[1]: Stopped Setup Virtual Console.
    Apr 16 10:02:56 carolfs-ifusp systemd[1]: Stopping Encrypted Volumes.
    Apr 16 10:02:56 carolfs-ifusp systemd[1]: Stopped target Encrypted Volumes.
    Apr 16 10:02:56 carolfs-ifusp systemd[1]: Stopping Load/Save Random Seed...
    Apr 16 10:02:56 carolfs-ifusp systemd[1]: Stopping Update UTMP about System Boot/Shutdown...
    Apr 16 10:02:56 carolfs-ifusp systemd[1]: Stopping Swap.
    Apr 16 10:02:56 carolfs-ifusp systemd[1]: Stopped target Swap.
    Apr 16 10:02:56 carolfs-ifusp systemd[1]: Deactivating swap Swap Partition...
    Apr 16 10:02:56 carolfs-ifusp systemd[1]: Deactivating swap Swap Partition...
    Apr 16 10:02:56 carolfs-ifusp systemd[1]: Deactivating swap Swap Partition...
    Apr 16 10:02:56 carolfs-ifusp systemd[1]: Deactivating swap Swap Partition...
    Apr 16 10:02:56 carolfs-ifusp systemd[1]: Deactivating swap Swap Partition...
    Apr 16 10:02:56 carolfs-ifusp systemd[1]: Deactivating swap Swap Partition...
    Apr 16 10:02:56 carolfs-ifusp systemd[1]: Stopping Remote File Systems.
    Apr 16 10:02:56 carolfs-ifusp systemd[1]: Stopped target Remote File Systems.
    Apr 16 10:02:56 carolfs-ifusp systemd[1]: Stopped Load/Save Random Seed.
    Apr 16 10:02:56 carolfs-ifusp systemd[1]: Stopped Update UTMP about System Boot/Shutdown.
    Apr 16 10:02:56 carolfs-ifusp systemd[1]: Stopping Create Volatile Files and Directories...
    Apr 16 10:02:56 carolfs-ifusp systemd[1]: Stopped Create Volatile Files and Directories.
    Apr 16 10:02:56 carolfs-ifusp systemd[1]: Stopping Local File Systems.
    Apr 16 10:02:56 carolfs-ifusp systemd[1]: Stopped target Local File Systems.
    Apr 16 10:02:56 carolfs-ifusp systemd[1]: Unmounting /run/user/1000/gvfs...
    Apr 16 10:02:56 carolfs-ifusp systemd[1]: Unmounting /run/user/120...
    Apr 16 10:02:56 carolfs-ifusp systemd[1]: Unmounting /boot...
    Apr 16 10:02:56 carolfs-ifusp systemd[1]: Unmounting /home...
    Apr 16 10:02:56 carolfs-ifusp systemd[1]: Unmounting Temporary Directory...
    Apr 16 10:02:56 carolfs-ifusp systemd[1]: Deactivated swap /dev/disk/by-partuuid/748828e6-d06b-4dc9-a1ee-94e2bf6e2d41.
    Apr 16 10:02:56 carolfs-ifusp systemd[1]: Deactivated swap /dev/disk/by-partlabel/swap.
    Apr 16 10:02:56 carolfs-ifusp systemd[1]: Deactivated swap /dev/disk/by-id/wwn-0x5000c500242cde85-part2.
    Apr 16 10:02:56 carolfs-ifusp systemd[1]: Deactivated swap /dev/disk/by-id/ata-ST3500418AS_5VM96G8V-part2.
    Apr 16 10:02:56 carolfs-ifusp systemd[1]: Deactivated swap /dev/disk/by-uuid/59c506eb-3a40-4eae-8048-317bcc3d00fb.
    Apr 16 10:02:56 carolfs-ifusp systemd[1]: Deactivated swap Swap Partition.
    Apr 16 10:02:56 carolfs-ifusp systemd[1]: Unmounted /run/user/1000/gvfs.
    Apr 16 10:02:56 carolfs-ifusp systemd[1]: Unmounted Temporary Directory.
    Apr 16 10:02:56 carolfs-ifusp systemd[1]: Unmounting /run/user/1000...
    Apr 16 10:02:56 carolfs-ifusp systemd[1]: Unmounted /run/user/120.
    Apr 16 10:02:56 carolfs-ifusp systemd[1]: Unmounted /boot.
    Apr 16 10:02:56 carolfs-ifusp systemd[1]: Stopping EFI System Partition Automount.
    Apr 16 10:02:56 carolfs-ifusp systemd[1]: Unset automount EFI System Partition Automount.
    Apr 16 10:02:56 carolfs-ifusp systemd[1]: Unmounted /run/user/1000.
    Apr 16 10:02:56 carolfs-ifusp systemd[1]: Unmounted /home.
    Apr 16 10:02:56 carolfs-ifusp systemd[1]: Starting Unmount All Filesystems.
    Apr 16 10:02:56 carolfs-ifusp systemd[1]: Reached target Unmount All Filesystems.
    Apr 16 10:02:56 carolfs-ifusp systemd[1]: Stopping Local File Systems (Pre).
    Apr 16 10:02:56 carolfs-ifusp systemd[1]: Stopped target Local File Systems (Pre).
    Apr 16 10:02:56 carolfs-ifusp systemd[1]: Stopping Remount Root and Kernel File Systems...
    Apr 16 10:02:56 carolfs-ifusp systemd[1]: Stopped Remount Root and Kernel File Systems.
    Apr 16 10:02:56 carolfs-ifusp mkinitcpio[1145]: ==> Build complete.
    Apr 16 10:02:56 carolfs-ifusp systemd[1]: Started Generate shutdown-ramfs.
    Apr 16 10:02:56 carolfs-ifusp systemd[1]: Starting Shutdown.
    Apr 16 10:02:56 carolfs-ifusp systemd[1]: Reached target Shutdown.
    Apr 16 10:02:56 carolfs-ifusp systemd[1]: Starting Final Step.
    Apr 16 10:02:56 carolfs-ifusp systemd[1]: Reached target Final Step.
    Apr 16 10:02:56 carolfs-ifusp systemd[1]: Starting Power-Off...
    Apr 16 10:02:56 carolfs-ifusp systemd[1]: Shutting down.
    Apr 16 10:02:56 carolfs-ifusp systemd-shutdown[1]: Sending SIGTERM to remaining processes...
    Apr 16 10:02:56 carolfs-ifusp systemd-journal[166]: Journal stopped
    Last edited by CFS (2014-05-08 12:57:13)

    Thank you for your replies. Shutdown now doesn't turn the computer off either. About the type of system, I think it was custom built. This is a new install from Monday, so I didn't update the kernel. Poweroff, suspend and hibernate have never worked. The requested output:
    $ uname -a
    Linux carolfs-ifusp 3.14.1-1-ARCH #1 SMP PREEMPT Mon Apr 14 20:40:47 CEST 2014 x86_64 GNU/Linux
    $ pacman -Qi linux
    Name : linux
    Version : 3.14.1-1
    Description : The Linux kernel and modules
    Architecture : x86_64
    URL : http://www.kernel.org/
    Licenses : GPL2
    Groups : base
    Provides : kernel26=3.14.1
    Depends On : coreutils linux-firmware kmod mkinitcpio>=0.7
    Optional Deps : crda: to set the correct wireless channels of your country
    Required By : nvidia
    Optional For : None
    Conflicts With : kernel26
    Replaces : kernel26
    Installed Size : 71136.00 KiB
    Packager : Tobias Powalowski <[email protected]>
    Build Date : Mon 14 Apr 2014 03:42:52 PM BRT
    Install Date : Mon 14 Apr 2014 07:50:11 PM BRT
    Install Reason : Explicitly installed
    Install Script : Yes
    Validated By : Signature

Maybe you are looking for