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

Есть класс:
Код: 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
22.11.2012, 10:45:00
    #38048253
pulp
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Может метод EJB-объекта возвращать другой объект?
Вопрос снят. Нужно было сделать:

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

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


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