Zum Inhalt springen

ClassCastException


Hando84

Empfohlene Beiträge

Ich möchte in NetWeaver von einer JSP(in EAR1) auf ein Session-Bean(in EAR2) zugreifen.

Beide EAR's sollen auf dem gleichen Server liegen, einem SAP 7.1 Web-Application-Server.

Jedoch funktioniert das ganze nicht so wie es soll.

Sobald ein narrow auf das interface erzeugt werden soll bricht die Funktion ab.

So sieht mein JSP aus:

<%@ page language="java" contentType="text/html; charset=UTF-8"

pageEncoding="UTF-8"%>

<%@ page import="javax.naming.Context, javax.naming.InitialContext,

javax.rmi.PortableRemoteObject, com.sap.sdn.ejb.HelloWorldLocal" %>

<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">

<html>

<head>

<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">

<title>Hello World</title>

</head>

<body>

<%

try {

Context ctx = new InitialContext();

Object o = ctx.lookup(

"com.tsi/MS_HelloWorldEAR/LOCAL/HelloWorldBean/com.sap.sdn.ejb.HelloWorldLocal");

HelloWorldLocal helloRef = (HelloWorldLocal)

PortableRemoteObject.narrow(o, HelloWorldLocal.class); <-- Abbruch

String msg = helloRef.sayHello("World");

out.println(msg);

out.println("Sie befinden sich noch im try-Block");

} catch (Exception e) {

out.println("Funktion im try-Block fehlgeschlagen: " + e.getMessage());

}

%>

</body>

</html>

Weiss zufällig einer was ich da flasch mache?

Denke, dass ich da irgendwo noch ne Class-Loader-Referenz einbauen muss oder sowas, aber habe ehrlich gesagt keine Ahnung wie das funktioniert...

Habe dem DynamicWebProject im Java Build Path auch die entsprechende Library(nur mit den Interfaces ohne die eigentliche Bean) zugewiesen.

Als ich den Client noch auf meinem Rechner hab laufen lassen, ohne ihn wie die bean auf den server zu deployen hat das ganze einwandfrei über das remote-interface funktioniert.

Vielleicht weiß ja einer von euch Rat.

Mfg Michael

Link zu diesem Kommentar
Auf anderen Seiten teilen

wenn beide auf unterschiedlichen jvm's laufen ja.

wenn ich den client auf meinem rechner laufen lasse und nur das ear mit der ejb auf den webserver deploye geht das mit dem remote-aufruf auch problemlos.

aber sobald ich beide auf dem server laufen lassen will gehts nimmer, ob remote oder local ist egal...würde es aber schon gerne über local laufen lassen wenn beide auf dem gleichen server liegen.

dachte es hat vielleicht damit zu tun, dass ich die interfaces bei den libraries im client als externe jars mit angebe und dann audgrund dessen 2 verschiedene classloader die datei laden.

aber weiss net, wie ich die das sonst machen soll...sonst kann ich ja kein object vom typ HelloWorldLocal erzeugen...weil er das dann ja net kennt.

Link zu diesem Kommentar
Auf anderen Seiten teilen

EARs sind laut Spezifikation über den Classloader voneinander getrennt. Deshalb kannst Du nicht direkt auf Instanzen eines anderen EAR zugreifen. Die meisten Application Server können das optimieren, wie es bei SAP aussieht: keine Ahnung.

Aber prinzipiell: Du solltest nicht aus einer JSP heraus auf eine EJB zugreifen, und schon gar nicht über Code-Blöcke in der JSP. Trenne Deine Schichten sauber voneinander ab. Stichwort Model2 Architektur.

Peter

Link zu diesem Kommentar
Auf anderen Seiten teilen

Dein Kommentar

Du kannst jetzt schreiben und Dich später registrieren. Wenn Du ein Konto hast, melde Dich jetzt an, um unter Deinem Benutzernamen zu schreiben.

Gast
Auf dieses Thema antworten...

×   Du hast formatierten Text eingefügt.   Formatierung wiederherstellen

  Nur 75 Emojis sind erlaubt.

×   Dein Link wurde automatisch eingebettet.   Einbetten rückgängig machen und als Link darstellen

×   Dein vorheriger Inhalt wurde wiederhergestellt.   Editor leeren

×   Du kannst Bilder nicht direkt einfügen. Lade Bilder hoch oder lade sie von einer URL.

Fachinformatiker.de, 2024 by SE Internet Services

fidelogo_small.png

Schicke uns eine Nachricht!

Fachinformatiker.de ist die größte IT-Community
rund um Ausbildung, Job, Weiterbildung für IT-Fachkräfte.

Fachinformatiker.de App

Download on the App Store
Get it on Google Play

Kontakt

Hier werben?
Oder sende eine E-Mail an

Social media u. feeds

Jobboard für Fachinformatiker und IT-Fachkräfte

×
×
  • Neu erstellen...