NotSerializableException na moim ejb ktory jest Serializable!

0

Czesc,
mam testowego ejb:

 
@Remote
public interface ARemote {

    public void test();

}

@Stateless(name = "A")
public class A implements ARemote, Serializable {

    private static final long serialVersionUID = -7194586688659791049L;

    static {
        DOMConfigurator.configure(System.getProperty("user.dir") + "/log4j.xml");
    }

    private static final Logger logger = Logger.getLogger(A.class);

    public void test() {
        logger.info("This is only a test!");
    }

}

Wrzucam to na jbossa. I teraz mam do Was pare pytan:

  1. Jak w jbossie podejrzec tego ejb? (tzn chodzi mi o te console localhost:8080. Tzn widze tego mojego ejb gdzies tam na liscie, ale jak w niego wchodze to nie widze tam metody test()

  2. Probuje sie tam tez dostac poprzez jconsole. Odpalam, lacze sie z jbossem, widze na liscie mojego ejb A, ale jak klikam to dostaje:

java.io.WriteAbortedException: writing aborted; java.io.NotSerializableException: org.jboss.kernel...

tylko ze moj ejb jest Serializable!

Czy ktos z Was ma moze jakies pomysly?

    pzdr,
     misty
0

Ad.1. A jak sobie to niby wyobrażasz? Tak sie da zrobić tylko jeśli ten EJB uczynisz dostępnym za pomocą WebService'u
Ad.2. A czy ten wyjątek dotyczy faktycznie klasy twojego EJB?

0

Ad1. Myslalam ze tak mozna. hmm, to czy moge przy pomocy jakiejs konsoli wywolas sobie metode mojego ejb? I zobaczyc czy faktycznie metoda sie wykonuje? Czy nie, moge zrobic to tylko z poziomu aplikacji?

Ad2. No tak, mam na liscie moj ejb o nazwie "A" - w niego klikam, wiec chyba tego sie tyczy? Chyba ze mam cos ustawic w jakis opcjach jboss?

I jeszcze 3cie pytanie mi doszlo, czy przy pomocy jakiejs mojej testowej metody ejb moge sobie wysylac Stringa na console jbossa? Tzn zalozmy ze uda mi sie wywolac te metode "test" - czy String pojawi sie na consoli (albo czy jakos moze sie pojawic)?

pzdr,
misty

0

i jeszcze jedno pytanie mi przyszlo do glowy - czy jesli ebj jest spakowany do war to czy jest to faktycznie spora roznica w stosunku do ear? Bo majac war to jednak sie deployowal na jbossie, widzialam go na liscie. Jak zmienilam sobie na ear'a to mi jboss rzuca jakis StructureException..

0

Ad.1. No można, jak się zrobi z tego EJB WebService. Zresztą napisanie klienta dla EJB to są 2 minuty pisania ;]
Ad.2. Ale co się pojawia w stacktrace?
Ad.3. No jak zrobisz sysout w metodzie EJB to gdzieś się wypisze ;]

polecam: http://programming.manessinger.com/tutorials/an-eclipse-glassfish-java-ee-6-tutorial/

0

Pojawia sie exception ktorego totalnie nie rozumiem:

org.jboss.deployers.spi.deploymentexception

moze potrzebuje jakiejs konfiguracji? Dla war'a wskazywalam tylko sciezke do web.xml (uzywam mavena do budowania). Teraz zmienilam na ear'a, nie wskazuje juz na web.xml, ale projekt mi sie buduje. Tylko ten exception podczas deploy..

0

Ad.2. Ale co się pojawia w stacktrace?

chodzi Ci o logi jbossa? Bo ja to dostaje jako pop-up wyskakujacy mi z konsoli jmx jak klikne na tego mojego ejb..

0

A masz moze pomysl jak napisac prostego klienta ktory mi wywola te moja metode? Oczywiscie przejrzalam tutoriale i na 1szy rzut oka powinno to byc banalne. Moj ejb jest na J-bossie, a klient ma nastepujacy kod:

 

    public static void main(String[] args) {

   final String jndiName = "A/remote";

        try {

            Properties properties = new Properties();
            properties.put("java.naming.factory.initial", "org.jnp.interfaces.NamingContextFactory");
            properties.put("java.naming.factory.url.pkgs", "org.jboss.naming:org.jnp.interfaces");
            properties.put("java.naming.provider.url", "127.0.0.1:1099");

            Context ic = new InitialContext(properties);

            System.out.println("about to look up jndi name " + jndiName);
            Object obj = ic.lookup(jndiName);
            System.out.println("lookup returned " + obj);

            A foo = (A) obj;
            foo.echo();

        } catch (Exception e) {
            logger.error(e);
        }

ale mi rzuca:

  • javax.naming.NoInitialContextException: Cannot instantiate class: org.jnp.interfaces.NamingContextFactory [Root exception is java.lang.ClassNotFoundException: org.jnp.interfaces.NamingContextFactory]
    **

o co chodzi???

0

A dodałaś do tego klienta biblioteki jbossowe z tym namig contextem?

0

no nie moge ich znalezc!!! :(((

0

nie, no nie bede tego odpalac na serwerze poprzez eclipse bo chyba mi sie komp ze***a. Mam jbossa odpalonego normalnie. Probowalam sobie przez konsole dociagnac co trzeba, po 20stu minutach chyba czekania az sobie dociagnie co trzeba dostalam build fauilre.. z kolei eclipse to totalnie zglupial, oczywiscie buidl failure i do tego"Problem Occured" : CreateProcess error=87, The parameter is incorrect

o jezu, trzy linijki kodu na krzyz a nerwicy mozna sie nabawic!!!! masakra!!

0

dobra, ogarnelam - inne dependency trzeba bylo dodac. Tylko ze teraz nie znajduje mi mojego ejb.. dostaje:

javax.naming.NameNotFoundException :A not bound

tylko czemu? w konsoli jbossa widze moje A!

0

Ale szukasz nazwy "A/remote" a nie "A". Zdecyduj się ;]

0

Probowalam i A/remote i A. Dla obu przypadkow jest ten sam Exception..

0

A patrzyłaś na tutorial który podlinkowałem? Ściągnij może ten projekt który tam jest...

0

tak patrzalam.. odwoluje sie tak samo.. nie mam juz pojecia..

a powiedz mi - do properties dodaje:

p.put(Context.PROVIDER_URL, "localhost:1099");

moze pytanie bedzie glupie, ale czy localhost:1099 to jest standardowy adres pod ktorym powinnam szukac tego ejb? We wszystkich tutorialach ktore przegladalam
to jest tam wlasnie podane localhost:1099, ale ja w sumie nie wiem czy u mnie ten ejb jest pod tym adresem..

0

A zmieniałaś coś w ustawieniach JBossa? Jak nie, to defaultowo tam będzie.
Próbowałaś uruchomić ten example który ci podałem? Tam jest gotowa paczka z projektem do Eclipse...

0

wiesz co, to jest jakis problem z zaleznosciami. doszlam juz do tego jak tego ejb znajdowac (okazalo sie ze byla to kwestia zlego deploy na jbossie), ale teraz mam ciagle:

java.lang.ClassCastException: javax.naming.Reference cannot be cast to....

przeszukalam google wszerz i wzdluz. to definitywnie jest problem z zaleznosciami, ale wydaje mi sie ze juz wszystkie opcje sprobowalam. lacznie z dodaniem wszystkch libow z /client Jbossa 6 do libow aplikacji..

0

Jeśli jeszcze raz wstawisz ucięty stacktrace to przestanę odpowiadać w Twoich tematach. Ty to robisz specjalnie żeby nie było wiadomo w czym problem? o_O

0

nie, przepraszam, tam po prostu byla juz tylko nazwa klasy:

 
java.lang.ClassCastException: javax.naming.Reference cannot be cast to test.EjbClient

Ale to jest chyba nie do przeorania. Wrzuclam wszystkie jary z jbossa do projektu i nadal ten exception..

0

wiesz co, ja jboss-client-all mam w swoim pomie (bez tego to w ogole sie sypaly Exceptiony). I to wlasnie z tym juz dodanym mam ten Exception. W linku ktorym podales pisza zeby dolaczyc zaleznosci ktore sa w manifescie tego jara. Tylko ze w tym manifescie nic nie ma:

Manifest-Version: 1.0
Ant-Version: Apache Ant 1.5.4 
Created-By: 1.4.1_06-b01 (Sun Microsystems Inc.)

normalnie zagadka..

0

A może teraz tego jara podzielili po prostu i sam jboss-client-all nie zawiera wszystkiego co powinien? A jak dodasz statycznie do build-patha cały runtime jbossa?

0

no juz tak robilam. wrzucilam do projektu wszystkie jary z jbossa, z katalogu client.. i to samo :/

sprobuje to na innym kompie uruchomic.

0

nie no to samo.. spakowalam caly projekt eclipsa, jak by Ci sie nudzilo to mozesz odpalic u siebie :) albo moze Ci przyjdzie cos do glowy jak na to spojrzysz..

pom buduje ejb-jara do wrzucenia na jbossa, zas TestClienta odpalam normalnie, z eclipse

0

Tak jak powtarzam od samego początku: ten kod jest ok. Dodałem u siebie runtime JBossa do build-patha i działa bez zarzutów.
Potem rzuciłem okiem w Twojego poma i nie mogę pojąć czemu dodałaś tutaj liby jbossa które są chyba starsze od Ciebie. Ale z tego co widze to standardowe repo mavena nie ma tego czego potrzebujesz. Bo musisz mieć tą samą wersję bibliotek co serwera.

0

Wiesz co, masz racje. GLupio sie przyznac ale po prostu zle dodawalam te biblioteki od jbossa.. dodawalam je jako external library, zamiast "Run configurations" i w Classpath. Pomogl mi ten link:

http://theopentutorials.com/examples/java-ee/ejb3/how-to-create-ejb3-jpa-project-in-eclipse-jboss-as-7-1/

dzieki!

jesli chodzi o te biblioteke stara ktora dolaczalam to najwyzsza wersja to jest 4 cos tam i jest mega stara.. ale nic wiecej nie bylo. Ogolnie to troche slabo z tym! Zeby to teraz kazdy mogl uruchomic to pewnie musze spakowac wszystkie liby z jbossa i umiescic na jakims lokalnym repo..
No ale nic, grunt ze poszlo. Jeszcze raz dzieki za pomoc!!

  pzdr :)

 misty
0

Możesz poszukać repo mavena w którym są liby dla jbossa 5 ;)

1 użytkowników online, w tym zalogowanych: 0, gości: 1