powered by simpleCommunicator - 2.0.61     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / Java [игнор отключен] [закрыт для гостей] / Почему возникает NullPointerException при вызове persist
46 сообщений из 46, показаны все 2 страниц
Почему возникает NullPointerException при вызове persist
    #38524173
NDAleksey
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Доброго всем дня! Вопрос у меня в названии топика.
Привожу entity из orm.xml:
Код: xml
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
<entity class="com.bs.amg.test.File" name="File" metadata-complete="false">
	<table name="FILES"/>
	<attributes>
		<id name="id">
			<column name="ID" nullable="false"/>
			<generated-value strategy="SEQUENCE" generator="PK_FILES" />
		</id>
		<basic name="URI" optional="true">
			<column name="URI"/>
		</basic>
		<basic name="delimiter" optional="true">
			<column name="DELIMITER"/>
		</basic>
		<basic name="title">
			<column name="IS_TITLE"/>
		</basic>
		<basic name="colCount">
			<column name="COL_COUNT"/>
		</basic>
		<one-to-many name="columns" mapped-by="file" target-entity="com.bs.amg.test.FileColumn" fetch="LAZY">
			<cascade>
				<cascade-refresh/>
			</cascade>
		</one-to-many>
	</attributes>
</entity>



В коде делаю правильную инициализацию объекта File (мой класс) и потом вызываю метод сохранения записи в БД:
Код: java
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
27.
28.
29.
@Stateless
public class Executer
{
    @PersistenceContext( unitName = "main_loader" )
    private EntityManager entityManager;

    private void saveFile( File file )
    {
        PrintWriter printWriter = new PrintWriter( "D:/error_logs.txt" );

	try
	{
		entityManager.persist( file );
	}
	catch( Exception ex )
	{
		ex.printStackTrace( printWriter );
	}
	finally
	{
		printWriter.close();
	}
    }
    
    public void createFile( String URI ) throws Exception
    {
	File file = File.getInstance( URI );
    }
}



в результате в "error_logs.txt" я получаю "java.lang.NullPointerException". Почему такое происходит?
...
Рейтинг: 0 / 0
Почему возникает NullPointerException при вызове persist
    #38524183
Фотография Blazkowicz
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
entityManager не заинжектился?
...
Рейтинг: 0 / 0
Почему возникает NullPointerException при вызове persist
    #38524185
0FD
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
NDAleksey,

Привел бы полностью error_logs.txt, а так entityManager=null !!
...
Рейтинг: 0 / 0
Почему возникает NullPointerException при вызове persist
    #38524186
NDAleksey
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
не дописал чуток:
Код: java
1.
2.
3.
4.
5.
6.
    public void createFile( String URI ) throws Exception
    {
	File file = File.getInstance( URI ); // инициализация
        saveFile( file );
    }
}
...
Рейтинг: 0 / 0
Почему возникает NullPointerException при вызове persist
    #38524193
NDAleksey
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
BlazkowiczentityManager не заинжектился?


да!

0FDNDAleksey,

Привел бы полностью error_logs.txt, а так entityManager=null !!

я думаю, что мой лог может слегка запутать, ибо весь код я тут не изложил, но раз народ требует, то вот:

java.lang.NullPointerException
at com.bs.amg.test.acting.CSV_Creator.saveFile(CSV_Creator.java:70)
at com.bs.amg.test.acting.CSV_Creator.createFile(CSV_Creator.java:99)
at com.bs.amg.test.bean.CSVBean.createFile(CSVBean.java:28)
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:606)
at org.jboss.as.ee.component.ManagedReferenceMethodInterceptorFactory$ManagedReferenceMethodInterceptor.processInvocation(ManagedReferenceMethodInterceptorFactory.java:72)
at org.jboss.invocation.InterceptorContext.proceed(InterceptorContext.java:288)
at org.jboss.invocation.WeavedInterceptor.processInvocation(WeavedInterceptor.java:53)
at org.jboss.as.ee.component.interceptors.UserInterceptorFactory$1.processInvocation(UserInterceptorFactory.java:36)
at org.jboss.invocation.InterceptorContext.proceed(InterceptorContext.java:288)
at org.jboss.as.jpa.interceptor.SBInvocationInterceptor.processInvocation(SBInvocationInterceptor.java:47)
at org.jboss.invocation.InterceptorContext.proceed(InterceptorContext.java:288)
at org.jboss.invocation.InitialInterceptor.processInvocation(InitialInterceptor.java:21)
at org.jboss.invocation.InterceptorContext.proceed(InterceptorContext.java:288)
at org.jboss.invocation.ChainedInterceptor.processInvocation(ChainedInterceptor.java:61)
at org.jboss.as.ee.component.interceptors.ComponentDispatcherInterceptor.processInvocation(ComponentDispatcherInterceptor.java:53)
at org.jboss.invocation.InterceptorContext.proceed(InterceptorContext.java:288)
at org.jboss.as.ejb3.component.pool.PooledInstanceInterceptor.processInvocation(PooledInstanceInterceptor.java:51)
at org.jboss.invocation.InterceptorContext.proceed(InterceptorContext.java:288)
at org.jboss.as.ejb3.tx.CMTTxInterceptor.invokeInOurTx(CMTTxInterceptor.java:228)
at org.jboss.as.ejb3.tx.CMTTxInterceptor.required(CMTTxInterceptor.java:304)
at org.jboss.as.ejb3.tx.CMTTxInterceptor.processInvocation(CMTTxInterceptor.java:190)
at org.jboss.invocation.InterceptorContext.proceed(InterceptorContext.java:288)
at org.jboss.as.ejb3.remote.EJBRemoteTransactionPropagatingInterceptor.processInvocation(EJBRemoteTransactionPropagatingInterceptor.java:80)
at org.jboss.invocation.InterceptorContext.proceed(InterceptorContext.java:288)
at org.jboss.as.ejb3.component.interceptors.CurrentInvocationContextInterceptor.processInvocation(CurrentInvocationContextInterceptor.java:41)
at org.jboss.invocation.InterceptorContext.proceed(InterceptorContext.java:288)
at org.jboss.as.ejb3.component.interceptors.LoggingInterceptor.processInvocation(LoggingInterceptor.java:59)
at org.jboss.invocation.InterceptorContext.proceed(InterceptorContext.java:288)
at org.jboss.as.ee.component.NamespaceContextInterceptor.processInvocation(NamespaceContextInterceptor.java:50)
at org.jboss.invocation.InterceptorContext.proceed(InterceptorContext.java:288)
at org.jboss.as.ejb3.component.interceptors.AdditionalSetupInterceptor.processInvocation(AdditionalSetupInterceptor.java:43)
at org.jboss.invocation.InterceptorContext.proceed(InterceptorContext.java:288)
at org.jboss.as.ee.component.TCCLInterceptor.processInvocation(TCCLInterceptor.java:45)
at org.jboss.invocation.InterceptorContext.proceed(InterceptorContext.java:288)
at org.jboss.invocation.ChainedInterceptor.processInvocation(ChainedInterceptor.java:61)
at org.jboss.as.ee.component.ViewService$View.invoke(ViewService.java:165)
at org.jboss.as.ejb3.remote.protocol.versionone.MethodInvocationMessageHandler.invokeMethod(MethodInvocationMessageHandler.java:302)
at org.jboss.as.ejb3.remote.protocol.versionone.MethodInvocationMessageHandler.access$200(MethodInvocationMessageHandler.java:64)
at org.jboss.as.ejb3.remote.protocol.versionone.MethodInvocationMessageHandler$1.run(MethodInvocationMessageHandler.java:196)
at java.util.concurrent.Executors$RunnableAdapter.call(Executors.java:471)
at java.util.concurrent.FutureTask$Sync.innerRun(FutureTask.java:334)
at java.util.concurrent.FutureTask.run(FutureTask.java:166)
at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1145)
at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:615)
at java.lang.Thread.run(Thread.java:724)
at org.jboss.threads.JBossThread.run(JBossThread.java:122)
...
Рейтинг: 0 / 0
Почему возникает NullPointerException при вызове persist
    #38524212
Фотография Blazkowicz
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Вопрос JEE инъекций aka CDI к вышеприведенному коду отношения не имеет.
Нужно смотреть как оно всё задеплоено и дескрипторы вроде persistence.xml и ejb-jar.xml.
...
Рейтинг: 0 / 0
Почему возникает NullPointerException при вызове persist
    #38524214
Фотография Blazkowicz
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Странно, конечно. Судя по stacktrace, бин нормально задеплоился. Тупо CDI не отработал.
...
Рейтинг: 0 / 0
Почему возникает NullPointerException при вызове persist
    #38524220
NDAleksey
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
BlazkowiczСтранно, конечно. Судя по stacktrace, бин нормально задеплоился. Тупо CDI не отработал.

я щас проверил entityManager на равенство null - он ему равен. ничего не понимаю, все деплоится, сущности в базе создаются, а он равен null - это как? у меня брешище в теории возможно, поэтому подскажите что не так?

p.s. вот persistence.xml:
Код: xml
1.
2.
3.
4.
5.
6.
7.
8.
<persistence-unit name="main_loader" transaction-type="JTA">
	<jta-data-source>java:/orclDS</jta-data-source>
	<properties>
		<property name="hibernate.dialect" value="org.hibernate.dialect.Oracle10gDialect"/>
		<property name="hibernate.hbm2ddl.auto" value="update"/>
		<property name="hibernate.show_sql" value="false"/>
	</properties>
</persistence-unit>
...
Рейтинг: 0 / 0
Почему возникает NullPointerException при вызове persist
    #38524259
0FD
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
NDAleksey,

а <persistence> и </persistence> специально вырезал или их нет вообще?
...
Рейтинг: 0 / 0
Почему возникает NullPointerException при вызове persist
    #38524265
NDAleksey
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
0FDNDAleksey,

а <persistence> и </persistence> специально вырезал или их нет вообще?

Вас это интересует?:

Код: xml
1.
2.
3.
<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 >
...
Рейтинг: 0 / 0
Почему возникает NullPointerException при вызове persist
    #38524276
0FD
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
NDAleksey,

Принимаю все буквально :) ,написано ведь "p.s. вот persistence.xml:", значит это весь persistence.xml. Ну если есть, хорошо.
...
Рейтинг: 0 / 0
Почему возникает NullPointerException при вызове persist
    #38524288
NDAleksey
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
0FDNDAleksey,

Принимаю все буквально :) ,написано ведь "p.s. вот persistence.xml:", значит это весь persistence.xml. Ну если есть, хорошо.

но у меня нет ejb-jar.xml. это смертельно? я просто еще слаб в теории и не знаю, что там нужно прописывать.)
...
Рейтинг: 0 / 0
Почему возникает NullPointerException при вызове persist
    #38524426
NDAleksey
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
товарищи дорогие, объясните, что я делаю не так?
- создал файл сущности;
- создал @Remote и @Stateless бины;
- все аккуратно собрал maven-ом и кинул в deployments;
- запустил AS: создались таблички в БД с последовательностями;
- создал клиента и через JNDI вызываю - работает, но при обращении к private полю entityManager ( при equals( null ) или toString() ) происходит NullPointerException.

почему он при deploy инициализируется нормально, а при обращении через удаленный вызов - нет?
...
Рейтинг: 0 / 0
Почему возникает NullPointerException при вызове persist
    #38524509
Фотография Blazkowicz
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
NDAlekseyпочему он при deploy инициализируется нормально,

Кто "он"? Persistent Unit иницализировался это одно

NDAlekseyа при обращении через удаленный вызов - нет?
А вот CDI не произвел Inject это другое.
Какая версия JEE ?

Я вот ещё в JavaDoc заглянул.
http://docs.oracle.com/javaee/6/api/javax/persistence/PersistenceContext.html
Пишут интересное.

RTFM name
(Optional) The name by which the entity manager is to be accessed in the environment referencing context; not needed when dependency injection is used .
unitName
(Optional) The name of the persistence unit as defined in the persistence.xml file.
...
Рейтинг: 0 / 0
Почему возникает NullPointerException при вызове persist
    #38524512
Фотография Blazkowicz
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
BlazkowiczПишут интересное.

Oops. Тупанул. Показалось что в коде name, а там unitName. Всё верно.
...
Рейтинг: 0 / 0
Почему возникает NullPointerException при вызове persist
    #38524517
Фотография Blazkowicz
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Посмотрите лог деплоймента. Должен же он при создании session bean что-то написать.
...
Рейтинг: 0 / 0
Почему возникает NullPointerException при вызове persist
    #38524563
NDAleksey
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
BlazkowiczКто "он"? Persistent Unit иницализировался это одно

"Expresses a dependency on a container-managed EntityManager and its associated persistence context."
entityManager... по сути он ассоциируется с persistence context

BlazkowiczNDAlekseyа при обращении через удаленный вызов - нет?
А вот CDI не произвел Inject это другое.
Какая версия JEE ?

6-я

BlazkowiczЯ вот ещё в JavaDoc заглянул.
http://docs.oracle.com/javaee/6/api/javax/persistence/PersistenceContext.html
Пишут интересное.

RTFM name
(Optional) The name by which the entity manager is to be accessed in the environment referencing context; not needed when dependency injection is used .
unitName
(Optional) The name of the persistence unit as defined in the persistence.xml file.

вот тут я не понял.... unitName инициализируется же... если не сложно, то укажите, где проявляется DI (только по голове не бить)
...
Рейтинг: 0 / 0
Почему возникает NullPointerException при вызове persist
    #38524642
NDAleksey
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
BlazkowiczПосмотрите лог деплоймента. Должен же он при создании session bean что-то написать.

Объяснись сразу с "предметной областью". Есть

com.bs.amg.test.File - собственно @Entity
com.bs.amg.test.bean.RemoteCSV - @Remote
com.bs.amg.test.acting.CSV_Creator - @SessionBean

Соответственно вот что возникает при invoke замечательного createFile(java.lang.String)

Код: java
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
27.
28.
29.
30.
31.
32.
33.
34.
35.
36.
37.
38.
39.
40.
41.
42.
43.
44.
45.
46.
47.
48.
49.
50.
51.
52.
53.
54.
14:50:39,586 ERROR [org.jboss.ejb3.invocation] (EJB default - 1) JBAS014134: EJB Invocation failed on component CSVBean for method public abstract com.bs.amg.test.File com.bs.amg.test.bean.RemoteCSV.createFile(java.lang.String) throws java.lang.Exception: javax.ejb.EJBException: java.lang.NullPointerException
	at org.jboss.as.ejb3.tx.CMTTxInterceptor.handleExceptionInOurTx(CMTTxInterceptor.java:166) [jboss-as-ejb3-7.1.1.Final.jar:7.1.1.Final]
	at org.jboss.as.ejb3.tx.CMTTxInterceptor.invokeInOurTx(CMTTxInterceptor.java:230) [jboss-as-ejb3-7.1.1.Final.jar:7.1.1.Final]
	at org.jboss.as.ejb3.tx.CMTTxInterceptor.required(CMTTxInterceptor.java:304) [jboss-as-ejb3-7.1.1.Final.jar:7.1.1.Final]
	at org.jboss.as.ejb3.tx.CMTTxInterceptor.processInvocation(CMTTxInterceptor.java:190) [jboss-as-ejb3-7.1.1.Final.jar:7.1.1.Final]
	at org.jboss.invocation.InterceptorContext.proceed(InterceptorContext.java:288) [jboss-invocation-1.1.1.Final.jar:1.1.1.Final]
	at org.jboss.as.ejb3.remote.EJBRemoteTransactionPropagatingInterceptor.processInvocation(EJBRemoteTransactionPropagatingInterceptor.java:80) [jboss-as-ejb3-7.1.1.Final.jar:7.1.1.Final]
	at org.jboss.invocation.InterceptorContext.proceed(InterceptorContext.java:288) [jboss-invocation-1.1.1.Final.jar:1.1.1.Final]
	at org.jboss.as.ejb3.component.interceptors.CurrentInvocationContextInterceptor.processInvocation(CurrentInvocationContextInterceptor.java:41) [jboss-as-ejb3-7.1.1.Final.jar:7.1.1.Final]
	at org.jboss.invocation.InterceptorContext.proceed(InterceptorContext.java:288) [jboss-invocation-1.1.1.Final.jar:1.1.1.Final]
	at org.jboss.as.ejb3.component.interceptors.LoggingInterceptor.processInvocation(LoggingInterceptor.java:59) [jboss-as-ejb3-7.1.1.Final.jar:7.1.1.Final]
	at org.jboss.invocation.InterceptorContext.proceed(InterceptorContext.java:288) [jboss-invocation-1.1.1.Final.jar:1.1.1.Final]
	at org.jboss.as.ee.component.NamespaceContextInterceptor.processInvocation(NamespaceContextInterceptor.java:50) [jboss-as-ee-7.1.1.Final.jar:7.1.1.Final]
	at org.jboss.invocation.InterceptorContext.proceed(InterceptorContext.java:288) [jboss-invocation-1.1.1.Final.jar:1.1.1.Final]
	at org.jboss.as.ejb3.component.interceptors.AdditionalSetupInterceptor.processInvocation(AdditionalSetupInterceptor.java:43) [jboss-as-ejb3-7.1.1.Final.jar:7.1.1.Final]
	at org.jboss.invocation.InterceptorContext.proceed(InterceptorContext.java:288) [jboss-invocation-1.1.1.Final.jar:1.1.1.Final]
	at org.jboss.as.ee.component.TCCLInterceptor.processInvocation(TCCLInterceptor.java:45) [jboss-as-ee-7.1.1.Final.jar:7.1.1.Final]
	at org.jboss.invocation.InterceptorContext.proceed(InterceptorContext.java:288) [jboss-invocation-1.1.1.Final.jar:1.1.1.Final]
	at org.jboss.invocation.ChainedInterceptor.processInvocation(ChainedInterceptor.java:61) [jboss-invocation-1.1.1.Final.jar:1.1.1.Final]
	at org.jboss.as.ee.component.ViewService$View.invoke(ViewService.java:165) [jboss-as-ee-7.1.1.Final.jar:7.1.1.Final]
	at org.jboss.as.ejb3.remote.protocol.versionone.MethodInvocationMessageHandler.invokeMethod(MethodInvocationMessageHandler.java:302) [jboss-as-ejb3-7.1.1.Final.jar:7.1.1.Final]
	at org.jboss.as.ejb3.remote.protocol.versionone.MethodInvocationMessageHandler.access$200(MethodInvocationMessageHandler.java:64) [jboss-as-ejb3-7.1.1.Final.jar:7.1.1.Final]
	at org.jboss.as.ejb3.remote.protocol.versionone.MethodInvocationMessageHandler$1.run(MethodInvocationMessageHandler.java:196) [jboss-as-ejb3-7.1.1.Final.jar:7.1.1.Final]
	at java.util.concurrent.Executors$RunnableAdapter.call(Executors.java:471) [rt.jar:1.7.0_25]
	at java.util.concurrent.FutureTask$Sync.innerRun(FutureTask.java:334) [rt.jar:1.7.0_25]
	at java.util.concurrent.FutureTask.run(FutureTask.java:166) [rt.jar:1.7.0_25]
	at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1145) [rt.jar:1.7.0_25]
	at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:615) [rt.jar:1.7.0_25]
	at java.lang.Thread.run(Thread.java:724) [rt.jar:1.7.0_25]
	at org.jboss.threads.JBossThread.run(JBossThread.java:122)
Caused by: java.lang.NullPointerException
	at com.bs.amg.test.acting.CSV_Creator.saveFile(CSV_Creator.java:64) [FinalModule-1.0-SNAPSHOT.jar:]
	at com.bs.amg.test.acting.CSV_Creator.createFile(CSV_Creator.java:107) [FinalModule-1.0-SNAPSHOT.jar:]
	at com.bs.amg.test.bean.CSVBean.createFile(CSVBean.java:28) [FinalModule-1.0-SNAPSHOT.jar:]
	at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) [rt.jar:1.7.0_25]
	at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:57) [rt.jar:1.7.0_25]
	at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43) [rt.jar:1.7.0_25]
	at java.lang.reflect.Method.invoke(Method.java:606) [rt.jar:1.7.0_25]
	at org.jboss.as.ee.component.ManagedReferenceMethodInterceptorFactory$ManagedReferenceMethodInterceptor.processInvocation(ManagedReferenceMethodInterceptorFactory.java:72) [jboss-as-ee-7.1.1.Final.jar:7.1.1.Final]
	at org.jboss.invocation.InterceptorContext.proceed(InterceptorContext.java:288) [jboss-invocation-1.1.1.Final.jar:1.1.1.Final]
	at org.jboss.invocation.WeavedInterceptor.processInvocation(WeavedInterceptor.java:53) [jboss-invocation-1.1.1.Final.jar:1.1.1.Final]
	at org.jboss.as.ee.component.interceptors.UserInterceptorFactory$1.processInvocation(UserInterceptorFactory.java:36) [jboss-as-ee-7.1.1.Final.jar:7.1.1.Final]
	at org.jboss.invocation.InterceptorContext.proceed(InterceptorContext.java:288) [jboss-invocation-1.1.1.Final.jar:1.1.1.Final]
	at org.jboss.as.jpa.interceptor.SBInvocationInterceptor.processInvocation(SBInvocationInterceptor.java:47) [jboss-as-jpa-7.1.1.Final.jar:7.1.1.Final]
	at org.jboss.invocation.InterceptorContext.proceed(InterceptorContext.java:288) [jboss-invocation-1.1.1.Final.jar:1.1.1.Final]
	at org.jboss.invocation.InitialInterceptor.processInvocation(InitialInterceptor.java:21) [jboss-invocation-1.1.1.Final.jar:1.1.1.Final]
	at org.jboss.invocation.InterceptorContext.proceed(InterceptorContext.java:288) [jboss-invocation-1.1.1.Final.jar:1.1.1.Final]
	at org.jboss.invocation.ChainedInterceptor.processInvocation(ChainedInterceptor.java:61) [jboss-invocation-1.1.1.Final.jar:1.1.1.Final]
	at org.jboss.as.ee.component.interceptors.ComponentDispatcherInterceptor.processInvocation(ComponentDispatcherInterceptor.java:53) [jboss-as-ee-7.1.1.Final.jar:7.1.1.Final]
	at org.jboss.invocation.InterceptorContext.proceed(InterceptorContext.java:288) [jboss-invocation-1.1.1.Final.jar:1.1.1.Final]
	at org.jboss.as.ejb3.component.pool.PooledInstanceInterceptor.processInvocation(PooledInstanceInterceptor.java:51) [jboss-as-ejb3-7.1.1.Final.jar:7.1.1.Final]
	at org.jboss.invocation.InterceptorContext.proceed(InterceptorContext.java:288) [jboss-invocation-1.1.1.Final.jar:1.1.1.Final]
	at org.jboss.as.ejb3.tx.CMTTxInterceptor.invokeInOurTx(CMTTxInterceptor.java:228) [jboss-as-ejb3-7.1.1.Final.jar:7.1.1.Final]
	... 27 more



на нашем форуме тут увидел подобную проблему, но решения там так и не добыл... да и Jboss7-ой у меня и JNDI сипользую вместо @EJB
понимаю, что мне следует гуглить, но может кто знает готовое решение?)
...
Рейтинг: 0 / 0
Почему возникает NullPointerException при вызове persist
    #38524654
Фотография Blazkowicz
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
JNDI lookup ведь на клиенте у вас? Влиять не на что не должно.
...
Рейтинг: 0 / 0
Почему возникает NullPointerException при вызове persist
    #38524669
NDAleksey
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
BlazkowiczJNDI lookup ведь на клиенте у вас? Влиять не на что не должно.

да. показать, как я настроил invoke?
...
Рейтинг: 0 / 0
Почему возникает NullPointerException при вызове persist
    #38524690
Фотография Blazkowicz
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
По-пробуйте убрать unitName. Я уже фиг его знает. Должно работать.
...
Рейтинг: 0 / 0
Почему возникает NullPointerException при вызове persist
    #38524691
0FD
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
NDAleksey,

По стеку, у Вас
com.bs.amg.test.File - собственно @Entity
com.bs.amg.test.bean.RemoteCSV - @Remote
com.bs.amg.test.acting.CSVBean - @SessionBean (а не CSV_Creator)
т.е. CSVBean implemetns RemoteCSV, как тогда создается CSV_Creator? или это базовый?
...
Рейтинг: 0 / 0
Почему возникает NullPointerException при вызове persist
    #38524695
Фотография Blazkowicz
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
В порядке бреда попробуйте вместо EntityManager заинжектить EntityManagerFactory.
...
Рейтинг: 0 / 0
Почему возникает NullPointerException при вызове persist
    #38524732
NDAleksey
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
0FDNDAleksey,

По стеку, у Вас
com.bs.amg.test.File - собственно @Entity
com.bs.amg.test.bean.RemoteCSV - @Remote
com.bs.amg.test.acting.CSVBean - @SessionBean (а не CSV_Creator)
т.е. CSVBean implemetns RemoteCSV, как тогда создается CSV_Creator? или это базовый?

ааа... народ, я нереально натупил.... у меня из одного сессионного бина вызывается "экземпляр" другого... как-то так:

Код: java
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
27.
28.
29.
30.
31.
32.
33.
34.
35.
36.
37.
38.
39.
40.
41.
42.
@Remote
public interface RemoteCSV
{
	public File createFile( String URI ) throws Exception;
}

@Stateless
public class CSVBean implements RemoteCSV
{
	@Override
	public File createFile( String URI ) throws Exception
	{
		return new CSV_Creator().createFile( URI );
	}
}

@Stateless
public class CSV_Creator extends DefaultActor implements Actor
{
	@PersistenceContext( unitName = "main_loader" )
	private EntityManager entityManager;
	
	private File saveFile( File file ) throws Exception
	{
		PrintWriter printWriter = new PrintWriter( "D:/error_logs.txt" );

		try
		{
			entityManager.persist( file );
		}
		catch( Exception ex )
		{
			ex.printStackTrace( printWriter );
		}
		finally
		{
			printWriter.close();
		}

		return file;
	}
}



если реально так делать нельзя, то не подскажите, как логику оставить ту же (чтобы вся работа с Entity производилась в CSV_Creator), а вызов шел через CSVBean?
...
Рейтинг: 0 / 0
Почему возникает NullPointerException при вызове persist
    #38524741
Фотография Blazkowicz
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
NDAleksey
Код: java
1.
		return new CSV_Creator().createFile( URI );



facepalm

NDAlekseyесли реально так делать нельзя, то не подскажите, как логику оставить ту же (чтобы вся работа с Entity производилась в CSV_Creator), а вызов шел через CSVBean?
Тоже инжектить через @EJB, а не создавать экземпляры самостоятельно. Контейнер ничего не знает о ваших экземплярах. Наивно полагать что он вот так просто найдёт любой созданый вами экземпляр класса и магическим образом добавить в него значения полей.

JEE, как всегда, к новичкам задом. :)
...
Рейтинг: 0 / 0
Почему возникает NullPointerException при вызове persist
    #38524744
Фотография Blazkowicz
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
0FDт.е. CSVBean implemetns RemoteCSV, как тогда создается CSV_Creator? или это базовый?
Респект за внимательность.
...
Рейтинг: 0 / 0
Почему возникает NullPointerException при вызове persist
    #38525708
NDAleksey
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
BlazkowiczТоже инжектить через @EJB ...

Не хотел создавать тему, но у меня возникает NullPointerException при инжекте через @EJB. Прошу прощение за тупость, но реально хочу разобраться, а ответа в инете пока не нашел. Разъясните, если хватит терпения)

Через JNDI-lookup у меня получилось вызвать метод бина. Теперь хочу сделать это через DI. Что сделал (взял большую часть из "Manning In Action Series - EJB 3"):

Написал следующий код и задеплоил на сервер jar-ник:
Код: java
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
package server.ejb;

@Local
public interface HelloUser
{
	void sayHello( String name );
}

@Stateless
public class HelloUserBean implements HelloUser
{
	@Override public void sayHello( String name )
	{
		System.out.println( "Hello " + name );
	}
}



Написал консольное приложение (достали примеры в инете и книге с HttpServlet):

Код: java
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
import server.ejb.HelloUserBean;

public class Test
{
	@EJB
	public static HelloUserBean bean;

	public static void main( String... args )
	{
		bean.sayHello( "Alex" );
	}
}


Возникает соответственно NullPointerException. Почему не произошло это DI?

В голову пришла нелепая идея изменить @Local на @Remote у HelloUser добавить в jar-ник следующее:
Код: java
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
package server.client;

import server.ejb.HelloUser;

public class HelloUserClient
{
	@EJB
	private HelloUser helloUser;

	public void sayHello( String name )
	{
		helloUser.sayHello( name );
	}
}


и в консольном приложении в main сделать так:
Код: java
1.
2.
	HelloUserClient client = new HelloUserClient();
	client.sayHello( "Alex" );


и убрать поле bean.

Я просто не совсем понял отличие @Local от @Remote.... Что я делаю не так, подскажите?
...
Рейтинг: 0 / 0
Почему возникает NullPointerException при вызове persist
    #38525759
0FD
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
А вот ответ в инете, нужно запускать в Application Client Container вот он и сделает все DI, например glassfish:
http://blogs.steeplesoft.com/posts/2011/02/22/java-ees-buried-treasure-the-application-client-container/
для jboss тоже есть

BlazkowiczРеспект за внимательность.
Спасибо.
...
Рейтинг: 0 / 0
Почему возникает NullPointerException при вызове persist
    #38525851
Фотография Blazkowicz
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
@EJB не на клиенте надо использовать. А на сервере вместо new MySessionBean(). А на standalone клиенте только JNDI lookup.
...
Рейтинг: 0 / 0
Почему возникает NullPointerException при вызове persist
    #38525894
NDAleksey
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Blazkowicz@EJB не на клиенте надо использовать. А на сервере вместо new MySessionBean(). А на standalone клиенте только JNDI lookup.

ааа... дайте пистолет... я вообще ничегошеньки не понимаю... давайте внесем ясность. standalone - это мое "консольное приложение", т.е. клиент. так? если так, то я на сервере не использовал нигде new.

Исходя из статьи указанной by 0FD и тому небольшому опыту поиска в инете, я имею смелость заявить, что в EJB2.1 использовался только JNDI lookup, а с приходом EJB3 отпала необходимость в оном.

Где истина, я не въезжаю.... Поправьте меня, пожалуйста!
...
Рейтинг: 0 / 0
Почему возникает NullPointerException при вызове persist
    #38525901
Фотография Blazkowicz
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
NDAlekseyааа... дайте пистолет... я вообще ничегошеньки не понимаю... давайте внесем ясность. standalone - это мое "консольное приложение", т.е. клиент. так? если так, то я на сервере не использовал нигде new.

Исходя из статьи указанной by 0FD и тому небольшому опыту поиска в инете, я имею смелость заявить, что в EJB2.1 использовался только JNDI lookup, а с приходом EJB3 отпала необходимость в оном.

Где истина, я не въезжаю.... Поправьте меня, пожалуйста!
А это мне примерещилось?
15409327
...
Рейтинг: 0 / 0
Почему возникает NullPointerException при вызове persist
    #38525915
NDAleksey
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
BlazkowiczА это мне примерещилось?
15409327

нет)) там Вы совершенно правы, но я уже спрашиваю по поводу этого - 15413685

если нетрудно, посмотрите, пожалуйста. хочу понять...
...
Рейтинг: 0 / 0
Почему возникает NullPointerException при вызове persist
    #38525932
Фотография Blazkowicz
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
NDAlekseyнет)) там Вы совершенно правы, но я уже спрашиваю по поводу этого - 15413685
если нетрудно, посмотрите, пожалуйста. хочу понять...
А там у вас на клиенте используется @EJB, а на клиенте CDI не работает без контейнера. Только если клиент - тоже JEE модуль.
А у вас standalone клиент. Там нужен lookup. Что не понятного?
...
Рейтинг: 0 / 0
Почему возникает NullPointerException при вызове persist
    #38525944
NDAleksey
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
BlazkowiczNDAlekseyнет)) там Вы совершенно правы, но я уже спрашиваю по поводу этого - 15413685
если нетрудно, посмотрите, пожалуйста. хочу понять...
А там у вас на клиенте используется @EJB, а на клиенте CDI не работает без контейнера. Только если клиент - тоже JEE модуль.
А у вас standalone клиент. Там нужен lookup. Что не понятного?

да вот читаю указанную статейку, и теперь понимаю, что действительно standalone не подходит... нужно пересоздавать приложение как JEE... просто в вышеуказанной книжке, в той главе про DI не оговаривается (хотя может я пропустил).... вот и спросил.

кстати, я пробовал использовать на сервере вместо PersistenceContext @EJB, сразу после того, как Вы посоветовали... и опять у меня вывалилось с null-ом.... но я потом с этим сам разберусь.... спасибо большое!
...
Рейтинг: 0 / 0
Почему возникает NullPointerException при вызове persist
    #38525949
Фотография Blazkowicz
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
NDAlekseyкстати, я пробовал использовать на сервере вместо PersistenceContext @EJB, сразу после того, как Вы посоветовали... и опять у меня вывалилось с null-ом.... но я потом с этим сам разберусь.... спасибо большое!
Потому что EntityManager это не EJB.
...
Рейтинг: 0 / 0
Почему возникает NullPointerException при вызове persist
    #38525956
0FD
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
NDAleksey,

Я так понял Вы разобрались с темой и сделали

Код: java
1.
2.
3.
4.
5.
@Stateless
public class CSVBean implements RemoteCSV
   @EJB
   private CSV_Creator csvCreator;
...



И написали
>> Через JNDI-lookup у меня получилось вызвать метод бина.

Теперь Вы пробуете инжектить в клиента бин(через JNDI-lookup получается), тогда я написал что нужно запускать в Application Client Container. Разве не так?
...
Рейтинг: 0 / 0
Почему возникает NullPointerException при вызове persist
    #38525963
NDAleksey
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
BlazkowiczПотому что EntityManager это не EJB.

дадада... это я чет не про то)
...
Рейтинг: 0 / 0
Почему возникает NullPointerException при вызове persist
    #38526276
NDAleksey
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
0FDТеперь Вы пробуете инжектить в клиента бин(через JNDI-lookup получается), тогда я написал что нужно запускать в Application Client Container. Разве не так?

да, все абсолютно так! спасибо большое!
...
Рейтинг: 0 / 0
Почему возникает NullPointerException при вызове persist
    #38526928
NDAleksey
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
0FDА вот ответ в инете, нужно запускать в Application Client Container вот он и сделает все DI, например glassfish:
http://blogs.steeplesoft.com/posts/2011/02/22/java-ees-buried-treasure-the-application-client-container/


Ну, уважаемый 0FD, выручай криворукого меня. Я не знаю, как у тех товарищей, кто прокомментировал данную статью, получилось, но у меня ничегошеньки не вышло.
Для чистоты эксперимента была скачана NetBeans 7.4 (с Glassfish 4.0). Не смотря на то, что меня интересовала jee-7, в том туториали при создание проектов я выбирал jee-6. Честно все шел по инструкции, в результате которой автор благополучно не указал, как подключить jar или что-то там еще от модуля с бинами, отговорившись простенькой фразой:
авторYou can have NetBeans build and deploy it if you’d like, but you won’t see much. To fix that, let’s write a simple Swing app to exercise this impressive EJB.
Я же использую Intellij IDEA, и поэтому мне импонировал второй подход с maven, который все тот же незабвенный автор предложил.
Опять же для чистоты я тупо скопипастил все pom.xml, предварительно разобравшись в структуре проекта (привожу на картинке).
Тут же покажу код, который мало чем отличается от статейного:

Код: java
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
package com.steeplesoft.enterpriseapp;

@Remote
public interface Dummy
{
	void sayHello( String name ) throws IOException;
}

@Stateless
public class DummyBean implements Dummy
{
	@Override
	public void sayHello( String name ) throws IOException
	{
		FileWriter fileWriter = new FileWriter( "D:/beans_test.txt" );
		fileWriter.write( name );
		fileWriter.close();
	}
}


И собственно мой Main.java:
Код: java
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
package com.steeplesoft.acc.client;
import com.steeplesoft.enterpriseapp.Dummy;

public class Main
{
	@EJB
	private static Dummy dummy;

	public static void main( String... args ) throws FileNotFoundException
	{
		try
		{
			dummy.sayHello( "Alex" );

			FileWriter fileWriter = new FileWriter( "D:/test.txt" );
			fileWriter.write( "test" );
			fileWriter.close();
		}
		catch( IOException e )
		{
			PrintWriter printWriter = new PrintWriter( "D:/error_log.txt" );
			e.printStackTrace( printWriter );
			printWriter.close();
		}
	}
}


Собрал Maven-ом и задеплоил "enterpriseapplication-0.1-SNAPSHOT.ear". Запустил сервер в ожидании создания хотя бы одного из 3 указанных в коде файлов, но к моему глубочайшему разочарованию ничего на D:\ я не увидел.

Основной вопрос - что я сделал не так?
Второстепенный - объясните, пожалуйста, на пальцах, как в IDEA создать приложение, которое бы отрабатывало в Application Client Container???

p.s. Слезно прошу помочь!
...
Рейтинг: 0 / 0
Почему возникает NullPointerException при вызове persist
    #38526934
NDAleksey
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
а вот и структура:
...
Рейтинг: 0 / 0
Почему возникает NullPointerException при вызове persist
    #38527128
0FD
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
NDAlekseyСобрал Maven-ом и задеплоил "enterpriseapplication-0.1-SNAPSHOT.ear". Запустил сервер в ожидании создания хотя бы одного из 3 указанных в коде файлов, но к моему глубочайшему разочарованию ничего на D:\ я не увидел.

Основной вопрос - что я сделал не так?
Второстепенный - объясните, пожалуйста, на пальцах, как в IDEA создать приложение, которое бы отрабатывало в Application Client Container???


А сам appclient ... запускал(Deploying and running outside of NetBeans)? Бросил бы этот acc, он делает тотже Context.lookup, возни больше, а выгоды никакой. Про IDEA не знаю.
...
Рейтинг: 0 / 0
Почему возникает NullPointerException при вызове persist
    #38527140
NDAleksey
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
0FDА сам appclient ... запускал(Deploying and running outside of NetBeans)? Бросил бы этот acc, он делает тотже Context.lookup, возни больше, а выгоды никакой. Про IDEA не знаю.

я это все делал через IDEA + jboss7, ибо Glassfish при простом старте мне показал "administrator port is occupied by V3 cannot process this command...". Но я таки нашел PID, который занимает 4848 порт и kill-нул его! Теперь пытаюсь понять в логах, куда этот AS деплоит ear-ник (путь). Хочется таки добиться, как у того автора получилось сделать.

Запускал и деплоил outside of IDEA... Результат все тот же. Могу показаться занудой, но а не раз встречал в доках, что JNDI - это пережиток EJB2.1. Да и результат добиться очень хочется, пока начальство со сроками не достает.

P.S. только упорство и помощь людей (таких как Вы и Blazkowicz) помогли мне не так давно разобраться с JNDI, а иначе не достичь успеха)
...
Рейтинг: 0 / 0
Почему возникает NullPointerException при вызове persist
    #38527198
0FD
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
NDAleksey не раз встречал в доках, что JNDI - это пережиток EJB2.1.

Что это за доки? Две параллельные технологии, jndi даже есть в jdk. Еще раз, acc делает тотже Context.lookup(...). Можете попробовать JAX-WS.
...
Рейтинг: 0 / 0
Почему возникает NullPointerException при вызове persist
    #38527325
NDAleksey
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
0FDЧто это за доки? Две параллельные технологии, jndi даже есть в jdk. Еще раз, acc делает тотже Context.lookup(...). Можете попробовать JAX-WS.

Ладно-ладно)) Не доки, а статейки разные. Не так выразился - может и не пережиток. То что делает то же самое, я вам верю! Это, если не ошибаюсь, как аннотации или xml - дело вкуса (может грубо сравнил).
...
Рейтинг: 0 / 0
Почему возникает NullPointerException при вызове persist
    #38527349
Фотография Blazkowicz
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
NDAlekseyТо что делает то же самое, я вам верю! Это, если не ошибаюсь, как аннотации или xml - дело вкуса (может грубо сравнил).
Ко вкусу это отношения не имеет. Зависимости можно инжектить, либо получать поиском (Service Locator). Во многих случаях инжектить невозможно. Например нет контейнера, либо экземпляр или поток не контролируется контейнером. Либо это просто некоторый участок, где всегда нужно получать зависимости динамически.
...
Рейтинг: 0 / 0
Почему возникает NullPointerException при вызове persist
    #38527355
NDAleksey
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Blazkowicz... Либо это просто некоторый участок, где всегда нужно получать зависимости динамически.

Точно! А мне даже и в голову еще не пришло!!! Благодарю!
...
Рейтинг: 0 / 0
46 сообщений из 46, показаны все 2 страниц
Форумы / Java [игнор отключен] [закрыт для гостей] / Почему возникает NullPointerException при вызове persist
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]