JSF Simple Testklasse für Button - MethodNotFoundException?

membersound

Bekanntes Mitglied
Hallo,

kann mir jemand sagen, warum meine simple Testklasse für einen Button eine MethodNotFoundException wirft? Ich komme da echt nicht hinter...

Danke

Java:
@Stateless
@Named
public class TestService {
   public void sayHello() {
	   System.out.println("say hello");
   }
}


Java:
<h:form>
<h:commandButton action="#{testService.sayHello()}" value="Say hello" />
</h:form>
Code:
HTTP Status 500 - 


javax.servlet.ServletException: javax.el.MethodNotFoundException: /index.xhtml @48,79 action="#{TestService.sayHello()}": Method not found: Proxy for view class: business.control.TestService of EJB: TestService.sayHello()
	javax.faces.webapp.FacesServlet.service(FacesServlet.java:606)
	org.jboss.weld.servlet.ConversationPropagationFilter.doFilter(ConversationPropagationFilter.java:67)


root cause 

javax.faces.el.MethodNotFoundException: javax.el.MethodNotFoundException: /index.xhtml @48,79 action="#{TestService.sayHello()}": Method not found: Proxy for view class: business.control.TestService of EJB: TestService.sayHello()
	javax.faces.component.MethodBindingMethodExpressionAdapter.invoke(MethodBindingMethodExpressionAdapter.java:92)
	com.sun.faces.application.ActionListenerImpl.processAction(ActionListenerImpl.java:102)
	javax.faces.component.UICommand.broadcast(UICommand.java:315)
	javax.faces.component.UIViewRoot.broadcastEvents(UIViewRoot.java:794)
	javax.faces.component.UIViewRoot.processApplication(UIViewRoot.java:1259)
	com.sun.faces.lifecycle.InvokeApplicationPhase.execute(InvokeApplicationPhase.java:81)
	com.sun.faces.lifecycle.Phase.doPhase(Phase.java:101)
	com.sun.faces.lifecycle.LifecycleImpl.execute(LifecycleImpl.java:118)
	javax.faces.webapp.FacesServlet.service(FacesServlet.java:593)
	org.jboss.weld.servlet.ConversationPropagationFilter.doFilter(ConversationPropagationFilter.java:67)


root cause 

javax.el.MethodNotFoundException: /index.xhtml @48,79 action="#{TestService.sayHello()}": Method not found: Proxy for view class: business.control.TestService of EJB: TestService.sayHello()
	com.sun.faces.facelets.el.TagMethodExpression.invoke(TagMethodExpression.java:109)
	javax.faces.component.MethodBindingMethodExpressionAdapter.invoke(MethodBindingMethodExpressionAdapter.java:88)
	com.sun.faces.application.ActionListenerImpl.processAction(ActionListenerImpl.java:102)
	javax.faces.component.UICommand.broadcast(UICommand.java:315)
	javax.faces.component.UIViewRoot.broadcastEvents(UIViewRoot.java:794)
	javax.faces.component.UIViewRoot.processApplication(UIViewRoot.java:1259)
	com.sun.faces.lifecycle.InvokeApplicationPhase.execute(InvokeApplicationPhase.java:81)
	com.sun.faces.lifecycle.Phase.doPhase(Phase.java:101)
	com.sun.faces.lifecycle.LifecycleImpl.execute(LifecycleImpl.java:118)
	javax.faces.webapp.FacesServlet.service(FacesServlet.java:593)
	org.jboss.weld.servlet.ConversationPropagationFilter.doFilter(ConversationPropagationFilter.java:67)


note The full stack trace of the root cause is available in the JBoss Web/7.0.1.Final logs.


--------------------------------------------------------------------------------

JBoss Web/7.0.1.Final
 
Zuletzt bearbeitet:
S

SlaterB

Gast
zumindest die beiden Klammern () gehören da doch bestimmt nicht hin,

hast du ein Tutorial dazu, irgendwas schon erfolgreich getestet vor eigener Klasse?
 

JimPanse

Bekanntes Mitglied
ich würde das @Stateless entfernen und statt desen CDI-@RequestScope verwenden....

oder du verwendest die alten @ManagedBean und @RequestScope annotations... einen frontend Controller @stateless zu annotieren macht keinen sinn...
 

membersound

Bekanntes Mitglied
Es muss irgendwie an Eclipse gelegen haben. Zumindest funktioniert mein Beispiel heute, und es hat sich ja nichts geändert (außer Rechnerneustart).
Mein Beispiel funktioniert also soweit.

Dann stellt sich jetzt aber eine andere Frage:
Wenn ich @Stateless ersetze mit @RequestScoped, dann bekomme ich wieder eine Exception:
Java:
javax.servlet.ServletException: javax.ejb.EJBTransactionRequiredException: Transaction is required for invocation: org.jboss.as.ejb3.component.session.SessionInvocationContextInterceptor$CustomSessionInvocationContext@120478
	javax.faces.webapp.FacesServlet.service(FacesServlet.java:606)
	org.jboss.weld.servlet.ConversationPropagationFilter.doFilter(ConversationPropagationFilter.java:67)

Wenn es so sinnvoller wäre, was fehlt mir dann noch?

Und warum ist es sinnvoller einen Service nicht-stateless zu annotieren? Stateful services sind doch zB bei einem Onlineshop mit Warenkorb sinnvoll, wo der Warenkorb über mehrere Requests beibehalten werden muss.
Aber wenn ich bloß eine Methode ausführe und der Request damit fertig ist, dann wäre @Stateless mMn doch sinnvoller? Wo ist mein Denkfehler?

Hier: ServiceFacade In Greater Detail - and Some EJB 3 Code : Adam Bien's Weblog
wird zum Beispiel eine ServiceFacade und ein Service beides @Stateless realisiert. Ist das ganz falsch?

Danke
 
Zuletzt bearbeitet:

JimPanse

Bekanntes Mitglied
Wenn ich deinen Ansatz verstehe möchtest du eine EJBean gleichzeitig als JSF-Bean verwenden.

Ich würde es spliten in eine EJBean und eine JSF-Bean. Du kannst für einen Warenkorb auch einfach eine JSFBean mit den SessionScope verwenden.

Mit CDI ist es durch aus möglich deinen Ansatz umzusetzen. In dem Quickstart Beispiel von JBoss nutzen sie auch diese Möglichkeit:

-> JBoss Application Server Downloads - JBoss Community

Ich finde das vom Design her aber sehr unschön und würde Front- und Backend voneinander trennen.

Greetz
 
Ähnliche Java Themen
  Titel Forum Antworten Datum
T JSF Simple Anwendung mit Richfaces Web Tier 7
A JSF Suche Beispiel für Primefaces Tree als Navigation Web Tier 3
S Seite nur aufrufbar machen für eingeloggte User Web Tier 1
R JavaScript für Java Enterprise Entwickler Web Tier 1
G JSF Webanwendung Editor für JSON gesucht Web Tier 1
S JSP Hm... Vorlage für Java Basierende Webseite? Web Tier 0
J Funktion für AJAX - Problem mit Return Web Tier 14
D Servlet 1 Servlet für alles - Wie Cookies per Ajax? Web Tier 1
R JSF Zugriff für Helpdesk-Mitarbeiter Web Tier 15
I Autocomplete Google Maps für JSF Web Tier 0
W Servlet SPEICHERN UNTER-Dialog für mehrere Dateien Web Tier 4
M JSF Framework für User Management etc. Web Tier 0
D Welches Webframework für REST geeignet Web Tier 1
L java.io.NotSerializableException für domain Objekte - Design Problem? Web Tier 12
M Converter für SelectOneMenu Web Tier 3
J eigene taglib für jsf 2.0 schreiben Web Tier 21
S Empfehlung für stateless Webframework Web Tier 2
J mögliche 'eigene' Konfigurationen für die Web.XML auflisten lassen Web Tier 4
H Singleton für In-Memory-Caching in WebApp Web Tier 4
F Wo und wie Daten die für alle Benutzer bestimmt sind verwalten Web Tier 4
S beste Preis/Leistung für Server Web Tier 3
H Relativer Pfad für XML-Datei in JSP-Anwendung Web Tier 3
S Welcher ansatz für Web Application + Web Service Web Tier 5
M JSF Converter für String to List<String> Web Tier 2
R Servlet Resource laden für SMTP - Session Web Tier 4
T JSF Eigener Converter wird nur für Eingabekomponenten aufgerufen? Web Tier 3
O Welche JSF Implementation ist am besten für mich geeignet ? Web Tier 3
T Sprachenauswahl für Projekt Web Tier 3
M JSF Komponentenframework für Web/JSF? Web Tier 7
B JSF JSF1.1 @Tomcat 5.5 für ein neues Projekt Web Tier 18
I Anwendungsfälle für OO Vererbungshierarchien bei Webapps Web Tier 4
D Struts Mehrsprachigkeit in textfield für key ja, aber für label nein? Web Tier 4
M Classpath für JPA in Tomcat Webapp: Wie konfigurieren? Web Tier 4
S ClassPath für Servlet Web Tier 3
J Welches Framework für Webentwicklung? Web Tier 13
T Plugins für Eclipse Web Tier 9
T JSF Zwei Listen/Vectoren für f:selectItems verknüpfen - möglich? Web Tier 2
ruutaiokwu JSF nur für die präsentation verwenden? Web Tier 4
S Ein ControllerServlet für andere Servlets - Sinnvoll oder nicht? Web Tier 34
C Webspace bzw. Server für GWT Web Tier 5
O Testframework für Webanwendung? HTMLUnit? Web Tier 3
C CMS für GWT Anwendung Web Tier 2
T SVG für JSF2 Web Tier 8
Java.getSkill() Lerngruppe für Tapestry 5 Web Tier 21
T Template für die ganze Seite Web Tier 6
Spin JSF oder PHP für Web Web Tier 4
M Java Framework für größere Projekte verwenden Web Tier 5
Z Erlaubte Klassen für h:selectOneListbox Iteration? Web Tier 2
R Exception? Was für ein Fehler? Web Tier 3
J DataScroller: rowCount für Folgeseiten übernehmen Web Tier 2
M Tomcat - Mehrere Verzeichnisse für die jsp Web Tier 12
N JMX MBean für JBoss 4.2.2 Web Tier 4
E Mime-Type für unbekanntes Programm Web Tier 6
M Best Practice für "Teilnahmebediengung akzeptieren" Web Tier 2
M JSP Custom Tag für Bilder Web Tier 14
H Gibt es für das message-bundle eine Standard - Ordnung? Web Tier 2
J Welcher WebServer(-anbieter) für Servlets? Web Tier 5
N Webfrontend für vorhandenes Programm Web Tier 2
A Einfaches Filter-Servlet für Benutzer-Validierung Web Tier 3
R <fmt:formatDate> und 2 Zeichen für den Wochentag? Web Tier 2
T Ajax / Javascript Plugin für Eclipse Web Tier 1
T Was nehmen für eine Datenbankapplikation mit Webinterface Web Tier 5
G wert für hiddenfield per javascript setzten Web Tier 4
K Escape Charakter für EL Web Tier 4
leifg Parameter für Tags aus String lesen (JSP 1.2) Web Tier 2
N JSF: Servlet für Bilder: Verbindung zu Spring Service ? Web Tier 1
S Mehrere Styleklassen für Tabellenreihen Web Tier 4

Ähnliche Java Themen

Neue Themen


Oben