делаю простой проект - jpa(hibernate) + ejb + glassfish В глассфише создал connection pool, он пингуется, создал DataSource. Создал структуру проекта из maven Имею 1 Entity : Код | package model;
import javax.persistence.Basic; import javax.persistence.Entity; import javax.persistence.Id; import javax.persistence.NamedQuery; import java.io.Serializable;
@javax.persistence.Table(name = "BOOK", schema = "dbo", catalog = "PhoneGuid") @Entity @NamedQuery(name = "findAllBooks", query = "Select b from Book b") public class Book implements Serializable { private int id;
@javax.persistence.Column(name = "id") @Id public int getId() { return id; }
public void setId(int id) { this.id = id; }
private String description;
@javax.persistence.Column(name = "description") @Basic public String getDescription() { return description; }
public void setDescription(String description) { this.description = description; }
private byte illustrations;
@javax.persistence.Column(name = "illustrations") @Basic public byte getIllustrations() { return illustrations; }
public void setIllustrations(byte illustrations) { this.illustrations = illustrations; }
private String isbn;
@javax.persistence.Column(name = "isbn") @Basic public String getIsbn() { return isbn; }
public void setIsbn(String isbn) { this.isbn = isbn; }
private int nbOfPage;
@javax.persistence.Column(name = "nbOfPage") @Basic public int getNbOfPage() { return nbOfPage; }
public void setNbOfPage(int nbOfPage) { this.nbOfPage = nbOfPage; }
private double price;
@javax.persistence.Column(name = "price") @Basic public double getPrice() { return price; }
public void setPrice(double price) { this.price = price; }
private String title;
@javax.persistence.Column(name = "title") @Basic public String getTitle() { return title; }
public void setTitle(String title) { this.title = title; }
}
|
Создал Ejb stateless session bean : Код | package beans;
import model.Book;
import javax.ejb.LocalBean; import javax.ejb.Remote; import javax.ejb.Stateless; import javax.ejb.TransactionManagement; import javax.persistence.EntityManager; import javax.persistence.PersistenceContext; import javax.persistence.TypedQuery; import java.util.List;
@Stateless @LocalBean public class BookEJB implements BookEJBRemote {
@PersistenceContext(unitName = "chapter06PU") private EntityManager em;
public List<Book> findBooks() { TypedQuery<Book> query = em.createNamedQuery("findAllBooks",Book.class); return query.getResultList(); }
public Book findByBookId(Long id) { return em.find(Book.class,id); }
public Book createBook(Book book) { em.persist(book); return book; }
public void deleteBook(Book book) { em.remove(book); }
public Book updateBook(Book book) { return em.merge(book); } }
|
Создал удаленный интерфейс : Код | package beans;
import model.Book;
import javax.ejb.Remote; import java.util.List;
@Remote public interface BookEJBRemote { List<Book> findBooks(); Book findByBookId(Long id); Book createBook(Book book); void deleteBook(Book book); Book updateBook(Book book);
}
|
Создал persistenceUnit : Код | <?xml version="1.0" encoding="UTF-8"?> <persistence xmlns="http://java.sun.com/xml/ns/persistence" version="2.0">
<persistence-unit name="chapter06PU" transaction-type="JTA"> <provider>org.hibernate.ejb.HibernatePersistence</provider> <jta-data-source>jdbc/MSSQLServerDC</jta-data-source> <class>model.Book</class>
<properties> <property name="hibernate.show_sql" value="true" /> <property name="hbm2ddl.auto" value="validate" /> <property name="hibernate.dialect" value="org.hibernate.dialect.SQLServerDialect" />
</properties>
</persistence-unit>
</persistence>
|
Класс Main : Код | package run;
import beans.BookEJBRemote; import model.Book;
import javax.ejb.EJB;
/** * Created by Notepad. * User: hz * Date: 04.12.12 * Time: 2:50 */ public class Main { @EJB private static BookEJBRemote bookEJB;
public static void main(String[] args) { Book book = new Book(); book.setTitle("Big Soviet Enciclopedy"); // book.setPrice(123); book.setIsbn("no-fuck-isbn"); book.setDescription("definitive"); book.setNbOfPage(1000); //book.setIllustrations((byte) 0);
bookEJB.createBook(book);
} }
|
Сам pom файл: Код | <?xml version="1.0" encoding="UTF-8"?> <project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd"> <modelVersion>4.0.0</modelVersion>
<groupId>local.hz</groupId> <artifactId>chapter06</artifactId> <version>2.0</version> <packaging>jar</packaging>
<properties> <hibernate-core-version>3.5.6-Final</hibernate-core-version> </properties> <dependencies> <dependency> <groupId>org.hibernate</groupId> <artifactId>hibernate-core</artifactId> <version>${hibernate-core-version}</version> </dependency> <dependency> <groupId>org.hibernate</groupId> <artifactId>hibernate-entitymanager</artifactId> <version>${hibernate-core-version}</version> </dependency> <dependency> <groupId>org.slf4j</groupId> <artifactId>slf4j-simple</artifactId> <version>1.5.8</version> </dependency>
<dependency> <groupId>org.hibernate.javax.persistence</groupId> <artifactId>hibernate-jpa-2.0-api</artifactId> <version>1.0.1.Final</version> </dependency>
<dependency> <groupId>org.glassfish</groupId> <artifactId>javax.ejb</artifactId> <version>3.0.1</version> </dependency> <dependency> <groupId>org.glassfish.extras</groupId> <artifactId>glassfish-embedded-all</artifactId> <version>3.0.1</version> <scope>test</scope> </dependency>
</dependencies> <build> <plugins> <plugin> <groupId>org.apache.maven.plugins</groupId> <artifactId>maven-compiler-plugin</artifactId> <inherited>true</inherited> <configuration> <source>1.7</source> <target>1.7</target> </configuration> </plugin> <plugin> <artifactId>maven-assembly-plugin</artifactId> <configuration> <descriptorRefs> <descriptorRef>jar-with-dependencies</descriptorRef> </descriptorRefs> <archive> <manifest> <mainClass>run.Main</mainClass> </manifest> </archive> </configuration> </plugin> </plugins> </build> </project>
|
Использую: GlassFish Server Open Source Edition 3.1.2.2 (build 5) jdk1.7.0_03 jre7 проект собираю путем : полученный джар с зависимостями деплою Код | asadmin deploy -force=true
|
приложение деплоится без ошибок и висит в списке глассфиша Добавлено через 2 минуты и 5 секундпри попытке выполнить main класс Код | appclient -client app-with-dependencies.jar
|
получаю exception : Код |
C:\Users\hz\chapter06>appclient -client target\chapter06-2.0-jar-with-dependencies.jar фхъ 04, 2012 9:45:46 AM com.sun.corba.ee.spi.orbutil.logex.WrapperGenerator handleFullLogging WARNING: IOP00810011: Exception from readValue on ValueHandler in CDRInputStream org.omg.CORBA.MARSHAL: WARNING: IOP00810011: Exception from readValue on ValueHandler in CDRInputStream vmcid: OMG minor code: 11 completed: Maybe at sun.reflect.NativeConstructorAccessorImpl.newInstance0(Native Method) at sun.reflect.NativeConstructorAccessorImpl.newInstance(NativeConstructorAccessorImpl.java:57) at sun.reflect.DelegatingConstructorAccessorImpl.newInstance(DelegatingConstructorAccessorImpl.java:45) at java.lang.reflect.Constructor.newInstance(Constructor.java:525) at com.sun.corba.ee.spi.orbutil.logex.corba.CorbaExtension.makeException(CorbaExtension.java:248) at com.sun.corba.ee.spi.orbutil.logex.corba.CorbaExtension.makeException(CorbaExtension.java:95) at com.sun.corba.ee.spi.orbutil.logex.WrapperGenerator.handleFullLogging(WrapperGenerator.java:387) at com.sun.corba.ee.spi.orbutil.logex.WrapperGenerator.access$400(WrapperGenerator.java:107) at com.sun.corba.ee.spi.orbutil.logex.WrapperGenerator$2.invoke(WrapperGenerator.java:511) at com.sun.corba.ee.spi.orbutil.proxy.CompositeInvocationHandlerImpl.invoke(CompositeInvocationHandlerImpl.java:99) at $Proxy36.valuehandlerReadException(Unknown Source) at com.sun.corba.ee.impl.encoding.CDRInputStream_1_0.readRMIIIOPValueType(CDRInputStream_1_0.java:1022) at com.sun.corba.ee.impl.encoding.CDRInputStream_1_0.read_value(CDRInputStream_1_0.java:1123) at com.sun.corba.ee.impl.encoding.CDRInputObject.read_value(CDRInputObject.java:531) at com.sun.corba.ee.impl.io.IIOPInputStream.inputObjectField(IIOPInputStream.java:2162) at com.sun.corba.ee.impl.io.IIOPInputStream.inputClassFields(IIOPInputStream.java:2404) at com.sun.corba.ee.impl.io.IIOPInputStream.defaultReadObjectDelegate(IIOPInputStream.java:596) at com.sun.corba.ee.impl.io.InputStreamHook.defaultReadObject(InputStreamHook.java:233) at java.lang.Throwable.readObject(Throwable.java:913) at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:57) at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43) at java.lang.reflect.Method.invoke(Method.java:601) at com.sun.corba.ee.impl.io.IIOPInputStream.invokeObjectReader(IIOPInputStream.java:1832) at com.sun.corba.ee.impl.io.IIOPInputStream.inputObject(IIOPInputStream.java:1214) at com.sun.corba.ee.impl.io.IIOPInputStream.simpleReadObject(IIOPInputStream.java:425) at com.sun.corba.ee.impl.io.ValueHandlerImpl.readValueInternal(ValueHandlerImpl.java:308) at com.sun.corba.ee.impl.io.ValueHandlerImpl.readValue(ValueHandlerImpl.java:274) at com.sun.corba.ee.impl.encoding.CDRInputStream_1_0.readRMIIIOPValueType(CDRInputStream_1_0.java:1015) at com.sun.corba.ee.impl.encoding.CDRInputStream_1_0.read_value(CDRInputStream_1_0.java:1123) at com.sun.corba.ee.impl.encoding.CDRInputObject.read_value(CDRInputObject.java:531) at com.sun.corba.ee.impl.io.IIOPInputStream.inputObjectField(IIOPInputStream.java:2162) at com.sun.corba.ee.impl.io.IIOPInputStream.inputClassFields(IIOPInputStream.java:2404) at com.sun.corba.ee.impl.io.IIOPInputStream.defaultReadObjectDelegate(IIOPInputStream.java:596) at com.sun.corba.ee.impl.io.InputStreamHook.defaultReadObject(InputStreamHook.java:233) at java.lang.Throwable.readObject(Throwable.java:913) at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:57) at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43) at java.lang.reflect.Method.invoke(Method.java:601) at com.sun.corba.ee.impl.io.IIOPInputStream.invokeObjectReader(IIOPInputStream.java:1832) at com.sun.corba.ee.impl.io.IIOPInputStream.inputObject(IIOPInputStream.java:1214) at com.sun.corba.ee.impl.io.IIOPInputStream.simpleReadObject(IIOPInputStream.java:425) at com.sun.corba.ee.impl.io.ValueHandlerImpl.readValueInternal(ValueHandlerImpl.java:308) at com.sun.corba.ee.impl.io.ValueHandlerImpl.readValue(ValueHandlerImpl.java:274) at com.sun.corba.ee.impl.encoding.CDRInputStream_1_0.readRMIIIOPValueType(CDRInputStream_1_0.java:1015) at com.sun.corba.ee.impl.encoding.CDRInputStream_1_0.read_value(CDRInputStream_1_0.java:1123) at com.sun.corba.ee.impl.encoding.CDRInputObject.read_value(CDRInputObject.java:531) at com.sun.corba.ee.impl.io.IIOPInputStream.inputObjectField(IIOPInputStream.java:2162) at com.sun.corba.ee.impl.io.IIOPInputStream.inputClassFields(IIOPInputStream.java:2404) at com.sun.corba.ee.impl.io.IIOPInputStream.defaultReadObjectDelegate(IIOPInputStream.java:596) at com.sun.corba.ee.impl.io.InputStreamHook.defaultReadObject(InputStreamHook.java:233) at java.lang.Throwable.readObject(Throwable.java:913) at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:57) at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43) at java.lang.reflect.Method.invoke(Method.java:601) at com.sun.corba.ee.impl.io.IIOPInputStream.invokeObjectReader(IIOPInputStream.java:1832) at com.sun.corba.ee.impl.io.IIOPInputStream.inputObject(IIOPInputStream.java:1214) at com.sun.corba.ee.impl.io.IIOPInputStream.simpleReadObject(IIOPInputStream.java:425) at com.sun.corba.ee.impl.io.ValueHandlerImpl.readValueInternal(ValueHandlerImpl.java:308) at com.sun.corba.ee.impl.io.ValueHandlerImpl.readValue(ValueHandlerImpl.java:274) at com.sun.corba.ee.impl.encoding.CDRInputStream_1_0.readRMIIIOPValueType(CDRInputStream_1_0.java:1015) at com.sun.corba.ee.impl.encoding.CDRInputStream_1_0.read_value(CDRInputStream_1_0.java:1123) at com.sun.corba.ee.impl.encoding.CDRInputObject.read_value(CDRInputObject.java:531) at com.sun.corba.ee.impl.io.IIOPInputStream.inputObjectField(IIOPInputStream.java:2162) at com.sun.corba.ee.impl.io.IIOPInputStream.inputClassFields(IIOPInputStream.java:2404) at com.sun.corba.ee.impl.io.IIOPInputStream.defaultReadObjectDelegate(IIOPInputStream.java:596) at com.sun.corba.ee.impl.io.InputStreamHook.defaultReadObject(InputStreamHook.java:233) at java.lang.Throwable.readObject(Throwable.java:913) at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:57) at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43) at java.lang.reflect.Method.invoke(Method.java:601) at com.sun.corba.ee.impl.io.IIOPInputStream.invokeObjectReader(IIOPInputStream.java:1832) at com.sun.corba.ee.impl.io.IIOPInputStream.inputObject(IIOPInputStream.java:1214) at com.sun.corba.ee.impl.io.IIOPInputStream.simpleReadObject(IIOPInputStream.java:425) at com.sun.corba.ee.impl.io.ValueHandlerImpl.readValueInternal(ValueHandlerImpl.java:308) at com.sun.corba.ee.impl.io.ValueHandlerImpl.readValue(ValueHandlerImpl.java:274) at com.sun.corba.ee.impl.encoding.CDRInputStream_1_0.readRMIIIOPValueType(CDRInputStream_1_0.java:1015) at com.sun.corba.ee.impl.encoding.CDRInputStream_1_0.read_value(CDRInputStream_1_0.java:1123) at com.sun.corba.ee.impl.encoding.CDRInputObject.read_value(CDRInputObject.java:531) at com.sun.corba.ee.impl.presentation.rmi.ExceptionHandlerImpl$ExceptionRWRMIImpl.read(ExceptionHandlerImpl.java:180) at com.sun.corba.ee.impl.presentation.rmi.ExceptionHandlerImpl.readException(ExceptionHandlerImpl.java:290) at com.sun.corba.ee.impl.presentation.rmi.DynamicMethodMarshallerImpl.readException(DynamicMethodMarshallerImpl.java:502) at com.sun.corba.ee.impl.presentation.rmi.StubInvocationHandlerImpl.privateInvoke(StubInvocationHandlerImpl.java:205) at com.sun.corba.ee.impl.presentation.rmi.StubInvocationHandlerImpl.invoke(StubInvocationHandlerImpl.java:152) at com.sun.corba.ee.impl.presentation.rmi.codegen.CodegenStubBase.invoke(CodegenStubBase.java:227) at beans.__BookEJBRemote_Remote_DynamicStub.createBook(beans/__BookEJBRemote_Remote_DynamicStub.java) at beans._BookEJBRemote_Wrapper.createBook(beans/_BookEJBRemote_Wrapper.java) at run.Main.main(Main.java:28) Caused by: java.lang.NullPointerException at com.sun.corba.ee.impl.orbutil.ClassInfoCache$ClassInfo.<init>(ClassInfoCache.java:156) at com.sun.corba.ee.impl.orbutil.ClassInfoCache.get(ClassInfoCache.java:281) at com.sun.corba.ee.impl.encoding.CDRInputStream_1_0.read_value(CDRInputStream_1_0.java:1097) at com.sun.corba.ee.impl.encoding.CDRInputObject.read_value(CDRInputObject.java:531) at com.sun.corba.ee.impl.io.IIOPInputStream.inputObjectField(IIOPInputStream.java:2162) at com.sun.corba.ee.impl.io.IIOPInputStream.inputClassFields(IIOPInputStream.java:2404) at com.sun.corba.ee.impl.io.IIOPInputStream.defaultReadObjectDelegate(IIOPInputStream.java:596) at com.sun.corba.ee.impl.io.InputStreamHook.defaultReadObject(InputStreamHook.java:233) at java.lang.Throwable.readObject(Throwable.java:913) at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:57) at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43) at java.lang.reflect.Method.invoke(Method.java:601) at com.sun.corba.ee.impl.io.IIOPInputStream.invokeObjectReader(IIOPInputStream.java:1832) at com.sun.corba.ee.impl.io.IIOPInputStream.inputObject(IIOPInputStream.java:1214) at com.sun.corba.ee.impl.io.IIOPInputStream.simpleReadObject(IIOPInputStream.java:425) at com.sun.corba.ee.impl.io.ValueHandlerImpl.readValueInternal(ValueHandlerImpl.java:308) at com.sun.corba.ee.impl.io.ValueHandlerImpl.readValue(ValueHandlerImpl.java:274) at com.sun.corba.ee.impl.encoding.CDRInputStream_1_0.readRMIIIOPValueType(CDRInputStream_1_0.java:1015) ... 79 more
|
Как быть? Что делать? извините за много будкав, но это для полноты картины
|