Während dem programmieren einer Java EE Anwedung gab Glassfish plötzlich die Fehlermeldung aus.
Als ich die aufgerufene Funktion wieder auf Login geändert hatte, war das Problem nicht mehr da. Das hat mich natürlich etwas verwirrt und deshalb hab ich mir mal die LoginManager.class auf dem Server decompilt und festgestellt das es die test() noch gar nicht in der .class existiert.
index.xhtml:
LoginManager.xhtml
LoginManager.class (decompilt)
Als ich die aufgerufene Funktion wieder auf Login geändert hatte, war das Problem nicht mehr da. Das hat mich natürlich etwas verwirrt und deshalb hab ich mir mal die LoginManager.class auf dem Server decompilt und festgestellt das es die test() noch gar nicht in der .class existiert.
Code:
Warnung: StandardWrapperValve[Faces Servlet]: PWC1406: Servlet.service() for servlet Faces Servlet threw exception
javax.el.ELException: /index.xhtml: Method test not found
at com.sun.faces.facelets.compiler.TextInstruction.write(TextInstruction.java:81)
at com.sun.faces.facelets.compiler.UIInstructions.encodeBegin(UIInstructions.java:75)
at com.sun.faces.facelets.compiler.UILeaf.encodeAll(UILeaf.java:176)
at javax.faces.component.UIComponent.encodeAll(UIComponent.java:1616)
at javax.faces.component.UIComponent.encodeAll(UIComponent.java:1616)
at javax.faces.component.UIComponent.encodeAll(UIComponent.java:1616)
at com.sun.faces.application.view.FaceletViewHandlingStrategy.renderView(FaceletViewHandlingStrategy.java:380)
at org.apache.myfaces.application.ViewHandlerImpl.renderView(ViewHandlerImpl.java:263)
at com.sun.faces.lifecycle.RenderResponsePhase.execute(RenderResponsePhase.java:127)
at com.sun.faces.lifecycle.Phase.doPhase(Phase.java:101)
at com.sun.faces.lifecycle.LifecycleImpl.render(LifecycleImpl.java:139)
at javax.faces.webapp.FacesServlet.service(FacesServlet.java:313)
at org.apache.catalina.core.StandardWrapper.service(StandardWrapper.java:1523)
at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:279)
at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:188)
at org.apache.catalina.core.StandardPipeline.invoke(StandardPipeline.java:641)
at com.sun.enterprise.web.WebPipeline.invoke(WebPipeline.java:97)
at com.sun.enterprise.web.PESessionLockingStandardPipeline.invoke(PESessionLockingStandardPipeline.java:85)
at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:185)
at org.apache.catalina.connector.CoyoteAdapter.doService(CoyoteAdapter.java:325)
at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:226)
at com.sun.enterprise.v3.services.impl.ContainerMapper.service(ContainerMapper.java:165)
at com.sun.grizzly.http.ProcessorTask.invokeAdapter(ProcessorTask.java:791)
at com.sun.grizzly.http.ProcessorTask.doProcess(ProcessorTask.java:693)
at com.sun.grizzly.http.ProcessorTask.process(ProcessorTask.java:954)
at com.sun.grizzly.http.DefaultProtocolFilter.execute(DefaultProtocolFilter.java:170)
at com.sun.grizzly.DefaultProtocolChain.executeProtocolFilter(DefaultProtocolChain.java:135)
at com.sun.grizzly.DefaultProtocolChain.execute(DefaultProtocolChain.java:102)
at com.sun.grizzly.DefaultProtocolChain.execute(DefaultProtocolChain.java:88)
at com.sun.grizzly.http.HttpProtocolChain.execute(HttpProtocolChain.java:76)
at com.sun.grizzly.ProtocolChainContextTask.doCall(ProtocolChainContextTask.java:53)
at com.sun.grizzly.SelectionKeyContextTask.call(SelectionKeyContextTask.java:57)
at com.sun.grizzly.ContextTask.run(ContextTask.java:69)
at com.sun.grizzly.util.AbstractThreadPool$Worker.doWork(AbstractThreadPool.java:330)
at com.sun.grizzly.util.AbstractThreadPool$Worker.run(AbstractThreadPool.java:309)
at java.lang.Thread.run(Thread.java:722)
index.xhtml:
HTML:
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml"
xmlns:ui="http://java.sun.com/jsf/facelets"
xmlns:h="http://java.sun.com/jsf/html"
xmlns:f="http://java.sun.com/jsf/core">
<h:body>
<h:form>
eMail:<h:inputText id="eMail" value="#{loginManager.email}"></h:inputText>
<br />
Passwort:<h:inputText id="pw" value="#{loginManager.pw}"></h:inputText>
<br />
<h:commandLink type="submit" id="submit" action="#{loginManager.test()}" value="senden"></h:commandLink>
<h:message for="submit"/>
#{loginManager.test()}
</h:form>
</h:body>
</html>
LoginManager.xhtml
Java:
package com.eichler.javaee6.emailAFKMsg;
import java.io.Serializable;
import javax.inject.Named;
@Named
public class LoginManager implements Serializable{
private static final long serialVersionUID = 1L;
private String email="";
private String pw="";
public String login() {
System.out.println("login!!");
return "test";
}
public String test() {
System.out.println("Hello Test!");
return "test";
}
public String getEmail() {
return email;
}
public void setEmail(String email) {
this.email = email;
}
public String getPw() {
return pw;
}
public void setPw(String pw) {
this.pw = pw;
}
}
LoginManager.class (decompilt)
Java:
package com.eichler.javaee6.emailAFKMsg;
import java.io.PrintStream;
import java.io.Serializable;
import javax.faces.bean.SessionScoped;
import javax.inject.Named;
@Named
@SessionScoped
public class LoginManager implements Serializable
{
private String email = "test";
private String pw = "test";
public String login()
{
if ((this.email.equalsIgnoreCase("test")) && (this.pw.equalsIgnoreCase("test"))) {
System.out.println("hello World! #1");
return "success";
}
return "failed";
}
public String getEmail()
{
return this.email;
}
public void setEmail(String email) {
this.email = email;
}
public String getPw() {
return this.pw;
}
public void setPw(String pw) {
this.pw = pw;
}
}