Avatar billede jonas82 Nybegynder
28. juni 2005 - 10:23 Der er 7 kommentarer og
1 løsning

Bruge sessionbean fra jsp

Jeg har en Sessionbønne deployet på JBoss, og en "helloworld" jsp side, også på JBoss.

Jeg er ude efter eksempler på hvordan jeg fra jsp siden kan udnytte de funktioner sessionbønnen stiller til rådighed.

Der er for eksempel en funktion i sessionbønnen - createUser(usr), der tager et User object. Jeg skal vel så have lavet en html form med de felter et User object indeholder. Men hvordan jeg så kommer fra udfyldte formfelter til User object, og til at kalde createUser() på sessionbønnen?

Jeg håber på at have hul igennem når dette spørgsmål afsluttes :)
Avatar billede arne_v Ekspert
28. juni 2005 - 11:09 #1
du hiver felt værdierne ud af request objektet
du creater et data transfer objekt
du slår home interface op via JNDI
du kalder home interfacets create metode og får er remote/local interface
du kalder metoden med dit data transfer objekt
Avatar billede jonas82 Nybegynder
28. juni 2005 - 11:18 #2
Jeg har aldrig arbejdet med jsp før, så de punkter bringer mig nok desværre ikke langt. Jeg har fundet dette link, som jeg er ved at læse pt. http://benmira.free.fr/en/j2ee/sessionEJB.htm

Jeg har indtil nu benyttet en testklient, som den i din J2EE artikel.

Den jsp side jeg har rodet med ind til videre som fejler ser sådan ud, men jeg har en ide om at det er helt galt ;)

<%@page import="javax.naming.*"%>
<%@page import="javax.rmi.*"%>
<%@page import="ws.ExchangeWebservice.*"%>
<%@page import="ejb.exchange.session.*"%>
<html><head><title>JSP Test</title>
<%!
System.setProperty("java.naming.factory.initial", "org.jnp.interfaces.NamingContextFactory");
System.setProperty("java.naming.factory.url.pkgs", "org.jnp.interfaces");
System.setProperty("java.naming.provider.url", "localhost:1099");
String message = "Hello, World.";
%>
</head>
<body>
<h2><%= message%></h2>
<%= new Date() %>
</body></html>

Giver exception:
org.apache.jasper.JasperException: Unable to compile class for JSP

An error occurred at line: 7 in the jsp file: /index.jsp
Generated servlet error:
C:\jboss-4.0.1sp1\server\default\work\jboss.web\localhost\helloworld\org\apache\jsp\index_jsp.java:16: <identifier> expected
System.setProperty("java.naming.factory.initial", "org.jnp.interfaces.NamingContextFactory");
Avatar billede arne_v Ekspert
28. juni 2005 - 11:21 #3
grundliggende kan du i JSP skrive

<%
// noget helt normalt java kode
%>
Avatar billede arne_v Ekspert
28. juni 2005 - 11:21 #4
jeg ville nok:

JSP side -> java klasse -> EJB
Avatar billede arne_v Ekspert
28. juni 2005 - 11:22 #5
<%!
System.setProperty("java.naming.factory.initial", "org.jnp.interfaces.NamingContextFactory");
System.setProperty("java.naming.factory.url.pkgs", "org.jnp.interfaces");
System.setProperty("java.naming.provider.url", "localhost:1099");
String message = "Hello, World.";
%>


skal nok være


<%
System.setProperty("java.naming.factory.initial", "org.jnp.interfaces.NamingContextFactory");
System.setProperty("java.naming.factory.url.pkgs", "org.jnp.interfaces");
System.setProperty("java.naming.provider.url", "localhost:1099");
String message = "Hello, World.";
%>
Avatar billede jonas82 Nybegynder
28. juni 2005 - 11:42 #6
Det link jeg har fundet. Er det en god måde? (Jeg har ikke testet med det endnu).

<%@page import="javax.naming.*"%>
<%@page import="javax.rmi.*"%>
<%@page import="ws.ExchangeWebservice.*"%>
<%@page import="ejb.exchange.session.*"%>
<html><head><title>JSP Test</title>
<%
System.setProperty("java.naming.factory.initial", "org.jnp.interfaces.NamingContextFactory");
System.setProperty("java.naming.factory.url.pkgs", "org.jnp.interfaces");
System.setProperty("java.naming.provider.url", "localhost:1099");
String message = "Hello, World.";
try {
Context ctx = new InitialContext();
}catch (Exception ex) {
ex.printStackTrace();
}
%>
</head>
<body>
<h2><%= message%></h2>
<%= new Date() %>
</body></html>

Giver følgende JBoss deploy fejl - hvis try/catch blokken fjernes deployer det fint, og udskriver dato:

11:36:32,067 ERROR [MainDeployer] could not start deployment: file:/C:/jboss-4.0
.1sp1/server/default/deploy/helloworld.war
org.jboss.deployment.DeploymentException: Error during deploy; - nested throwabl
e: (javax.naming.NameNotFoundException: comp not bound)
        at org.jboss.web.AbstractWebDeployer.start(AbstractWebDeployer.java:383)

        at org.jboss.web.WebModule.startModule(WebModule.java:62)
        at org.jboss.web.WebModule.startService(WebModule.java:40)
        at org.jboss.system.ServiceMBeanSupport.jbossInternalStart(ServiceMBeanS
upport.java:272)
        at org.jboss.system.ServiceMBeanSupport.jbossInternalLifecycle(ServiceMB
Avatar billede arne_v Ekspert
28. juni 2005 - 12:06 #7
jeg har godt nok ikke lige nogle bud på den fejl - jeg tænker
Avatar billede jonas82 Nybegynder
05. september 2005 - 14:03 #8
Fandt aldrig ud af det. Lukker
Avatar billede Ny bruger Nybegynder

Din løsning...

Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.

Loading billede Opret Preview
Kategori
Kurser inden for grundlæggende programmering

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester