powered by simpleCommunicator - 2.0.61     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / Java [игнор отключен] [закрыт для гостей] / Может метод EJB-объекта возвращать другой объект?
2 сообщений из 2, страница 1 из 1
Может метод EJB-объекта возвращать другой объект?
    #38048218
pulp
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Добрый день!

Есть класс:
Код: 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 itso.bank.session;

import itso.bank.session.view.MyClassRemote;

import javax.ejb.LocalBean;
import javax.ejb.Remote;
import javax.ejb.Stateless;

/**
 * Session Bean implementation class MyClass
 */
@Stateless
@Remote(MyClassRemote.class)
@LocalBean
public class MyClass implements MyClassRemote  {
	private String name;
	
	public MyClass() {
		name = "MyClassName";
    }
	
	public String getName() {
		return name;
	}

}



Его инерфейс:
Код: java
1.
2.
3.
4.
5.
6.
7.
package itso.bank.session.view;

public interface MyClassRemote {
	
	public String getName();
	
}



И другой класс, метод getMyClass которого возвращает ссылку на класс MyClass:
Код: 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.
55.
56.
57.
58.
59.
60.
61.
62.
63.
64.
65.
66.
67.
68.
69.
70.
71.
72.
73.
74.
75.
76.
77.
78.
79.
80.
81.
82.
83.
84.
85.
86.
87.
88.
89.
90.
91.
92.
93.
94.
95.
96.
97.
98.
package itso.bank.session;

import itso.bank.session.view.EJBBankBeanLocal;
import itso.bank.session.view.EJBBankBeanRemote;

import javax.annotation.PostConstruct;
import javax.annotation.PreDestroy;
import javax.annotation.Resource;
import javax.ejb.EJB;
import javax.ejb.Local;
import javax.ejb.Remote;
import javax.ejb.Singleton;
import javax.ejb.Startup;
import javax.ejb.Timeout;
import javax.ejb.Timer;
import javax.ejb.TimerConfig;
import javax.ejb.TimerService;

import org.apache.log4j.LogManager;
import org.apache.log4j.Logger;
import org.apache.log4j.PropertyConfigurator;

/**
 * Session Bean implementation class EJBBankBean
 */
//@Stateless
//@Stateful
@Singleton
@Startup
@Local(EJBBankBeanLocal.class)
@Remote(EJBBankBeanRemote.class)
public class EJBBankBean implements EJBBankBeanRemote, EJBBankBeanLocal {
	private Logger logger;
	private String msg;
	private int cnt = 0;
	@EJB
	private MyClass myClass;
	@Resource
    TimerService timerService;
    
	
    @Timeout
    public void programmaticTimeout(Timer timer) {
		cnt = cnt + 1;
		msg = String.valueOf(cnt);
        logger.info("Programmatic = " + cnt);
    } 
    
	//@Schedule(second = "*/10", minute = "*", hour = "*", persistent=false)
	public void autoProc() {
		cnt = cnt + 1;
		msg = String.valueOf(cnt);
		logger.info("Tick # " + cnt);
	}
	
	public String returnMsg() {
		logger.info("return msg=" + msg);
		return msg;
	}
	
	  @PostConstruct
	  void init() {
		msg = "resUltatikSUS";
		PropertyConfigurator.configure("d:/temp/log4j.properties");
    	logger = LogManager.exists("TstService.TstConsumer");
		TimerConfig timerConfig = new TimerConfig();
    	timerConfig.setPersistent(false);
    	Timer timer = timerService.createIntervalTimer(5000, 5000, timerConfig);
    	logger.info("@PostConstruct");
	  }

	  @PreDestroy
	  void rem() {
		  logger.info("@PreDestroy");
		  LogManager.shutdown();
	  }
	
	public void setMsg(String _msg) {
		msg = _msg;
	}
	
	public String addMsg(String _msg) {
		return msg + " + " + _msg;
	}

	public EJBBankBean() {
        // TODO Auto-generated constructor stub
    }

    public String getMyClassName() {
		return myClass.getName();
	}

    public MyClass getMyClass() {
		return myClass;
	}
    
}



Его интерфейс:
Код: java
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
package itso.bank.session.view;

import itso.bank.session.MyClass;

public interface EJBBankBeanRemote {
	public String returnMsg();
	public void setMsg(String _msg);
	public String addMsg(String _msg);
	public String getMyClassName();
	public MyClass getMyClass();
}



Клиент:
Код: 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.
package itso.rad8.client.control;

import itso.bank.session.view.EJBBankBeanRemote;
import itso.bank.session.view.MyClassRemote;
import javax.ejb.EJB;

public class BankDesktopController {
	@EJB(name="ejb/bank",beanInterface=EJBBankBeanRemote.class)
	static EJBBankBeanRemote bank;

	@EJB(name="ejb/myclass",beanInterface=MyClassRemote.class)
	static MyClassRemote myclass;
	
	public BankDesktopController() {
		// TODO Auto-generated constructor stub
	}

	public void go() {
		try {
		System.out.println(bank.returnMsg());
		System.out.println(myclass.getName());
		System.out.println(bank.getMyClassName());
		System.out.println(bank.getMyClass());
		
		} catch (Exception ex) {
			System.out.print("err=" + ex);
			ex.printStackTrace();
		}
	}
	
	public static void main(String[] args) {
		BankDesktopController bankDesktopController = new BankDesktopController();
		bankDesktopController.go();
	}

}



На строке System.out.println(bank.getMyClass()); падает:
Код: 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.
55.
56.
57.
58.
59.
60.
61.
62.
63.
64.
65.
66.
67.
68.
69.
70.
71.
11
MyClassName
MyClassName
err=java.lang.ClassCastException: 
	>> SERVER (id=4773e3aa, host=WINDOWSXPPROSP3) TRACE START:
	>>    java.lang.ClassCastException: itso.bank.session.EJSLocalNSLMyClass_e0152b26 incompatible with java.io.Serializable
	>>	 at itso.bank.session.view._EJSRemote0SGEJBBankBean_a779d219_Tie._get_myClass(_EJSRemote0SGEJBBankBean_a779d219_Tie.java:2)
	>>	 at itso.bank.session.view._EJSRemote0SGEJBBankBean_a779d219_Tie._invoke(_EJSRemote0SGEJBBankBean_a779d219_Tie.java)
	>>	 at com.ibm.CORBA.iiop.ServerDelegate.dispatchInvokeHandler(ServerDelegate.java:669)
	>>	 at com.ibm.CORBA.iiop.ServerDelegate.dispatch(ServerDelegate.java:523)
	>>	 at com.ibm.rmi.iiop.ORB.process(ORB.java:523)
	>>	 at com.ibm.CORBA.iiop.ORB.process(ORB.java:1575)
	>>	 at com.ibm.rmi.iiop.Connection.doRequestWork(Connection.java:2992)
	>>	 at com.ibm.rmi.iiop.Connection.doWork(Connection.java:2875)
	>>	 at com.ibm.rmi.iiop.WorkUnitImpl.doWork(WorkUnitImpl.java:64)
	>>	 at com.ibm.ejs.oa.pool.PooledThread.run(ThreadPool.java:118)
	>>	 at com.ibm.ws.util.ThreadPool$Worker.run(ThreadPool.java:1783)
	>> SERVER (id=4773e3aa, host=WINDOWSXPPROSP3) TRACE END.
java.lang.ClassCastException: 
	>> SERVER (id=4773e3aa, host=WINDOWSXPPROSP3) TRACE START:
	>>    java.lang.ClassCastException: itso.bank.session.EJSLocalNSLMyClass_e0152b26 incompatible with java.io.Serializable
	>>	 at itso.bank.session.view._EJSRemote0SGEJBBankBean_a779d219_Tie._get_myClass(_EJSRemote0SGEJBBankBean_a779d219_Tie.java:2)
	>>	 at itso.bank.session.view._EJSRemote0SGEJBBankBean_a779d219_Tie._invoke(_EJSRemote0SGEJBBankBean_a779d219_Tie.java)
	>>	 at com.ibm.CORBA.iiop.ServerDelegate.dispatchInvokeHandler(ServerDelegate.java:669)
	>>	 at com.ibm.CORBA.iiop.ServerDelegate.dispatch(ServerDelegate.java:523)
	>>	 at com.ibm.rmi.iiop.ORB.process(ORB.java:523)
	>>	 at com.ibm.CORBA.iiop.ORB.process(ORB.java:1575)
	>>	 at com.ibm.rmi.iiop.Connection.doRequestWork(Connection.java:2992)
	>>	 at com.ibm.rmi.iiop.Connection.doWork(Connection.java:2875)
	>>	 at com.ibm.rmi.iiop.WorkUnitImpl.doWork(WorkUnitImpl.java:64)
	>>	 at com.ibm.ejs.oa.pool.PooledThread.run(ThreadPool.java:118)
	>>	 at com.ibm.ws.util.ThreadPool$Worker.run(ThreadPool.java:1783)
	>> SERVER (id=4773e3aa, host=WINDOWSXPPROSP3) TRACE END.

	at com.ibm.CORBA.iiop.UtilDelegateImpl.mapSystemException(UtilDelegateImpl.java:241)
	at javax.rmi.CORBA.Util.mapSystemException(Util.java:84)
	at itso.bank.session.view._EJBBankBeanRemote_Stub.getMyClass(_EJBBankBeanRemote_Stub.java:1)
	at itso.rad8.client.control.BankDesktopController.go(BankDesktopController.java:23)
	at itso.rad8.client.control.BankDesktopController.main(BankDesktopController.java:33)
	at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
	at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:60)
	at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:37)
	at java.lang.reflect.Method.invoke(Method.java:611)
	at com.ibm.ws.client.applicationclient.launchClient.createContainerAndLaunchApp(launchClient.java:790)
	at com.ibm.ws.client.applicationclient.launchClient.main(launchClient.java:495)
	at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
	at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:60)
	at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:37)
	at java.lang.reflect.Method.invoke(Method.java:611)
	at com.ibm.wsspi.bootstrap.WSLauncher.launchMain(WSLauncher.java:234)
	at com.ibm.wsspi.bootstrap.WSLauncher.main(WSLauncher.java:95)
	at com.ibm.wsspi.bootstrap.WSLauncher.run(WSLauncher.java:76)
	at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
	at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:60)
	at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:37)
	at java.lang.reflect.Method.invoke(Method.java:611)
	at org.eclipse.equinox.internal.app.EclipseAppContainer.callMethodWithException(EclipseAppContainer.java:587)
	at org.eclipse.equinox.internal.app.EclipseAppHandle.run(EclipseAppHandle.java:198)
	at org.eclipse.core.runtime.internal.adaptor.EclipseAppLauncher.runApplication(EclipseAppLauncher.java:110)
	at org.eclipse.core.runtime.internal.adaptor.EclipseAppLauncher.start(EclipseAppLauncher.java:79)
	at org.eclipse.core.runtime.adaptor.EclipseStarter.run(EclipseStarter.java:369)
	at org.eclipse.core.runtime.adaptor.EclipseStarter.run(EclipseStarter.java:179)
	at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
	at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:60)
	at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:37)
	at java.lang.reflect.Method.invoke(Method.java:611)
	at org.eclipse.core.launcher.Main.invokeFramework(Main.java:340)
	at org.eclipse.core.launcher.Main.basicRun(Main.java:282)
	at org.eclipse.core.launcher.Main.run(Main.java:981)
	at com.ibm.wsspi.bootstrap.WSPreLauncher.launchEclipse(WSPreLauncher.java:376)
	at com.ibm.wsspi.bootstrap.WSPreLauncher.main(WSPreLauncher.java:147)



Подскажите, как правильно сделать? Может есть у кого примерчик?
...
Рейтинг: 0 / 0
Может метод EJB-объекта возвращать другой объект?
    #38048253
pulp
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Вопрос снят. Нужно было сделать:

public class MyClass implements MyClassRemote, java.io.Serializable {
private static final long serialVersionUID = -5183255051436037351L;

А я не описывал константу serialVersionUID.
...
Рейтинг: 0 / 0
2 сообщений из 2, страница 1 из 1
Форумы / Java [игнор отключен] [закрыт для гостей] / Может метод EJB-объекта возвращать другой объект?
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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