# JSF wird nicht ausgeführt



## Torain (8. Jul 2012)

Abend,

nach langer Zeit muss ich mal wieder ein Projekt mit JSF machen und finde einen Fehler nicht. Zum testen habe ich glassfish 3.1.1 installiert und eingerichtet und dann ein einfaches Projekt in eclipse erstellt das einfach eine Zufallszahl ausgeben soll. Das Problem ist das nur der html teil der Website angezeigt wird wenn ich das ganze von eclipse auf den Server laden lasse.

Ich habe dem Standard Webservice Projekt von Eclipse eigentlich nur folgende Dateien hinzugefügt:

Random.java

```
package beans;

import java.util.logging.Logger;

import javax.annotation.PostConstruct;
import javax.enterprise.context.Conversation;
import javax.enterprise.context.ConversationScoped;
import javax.inject.Inject;
import javax.inject.Named;

/**
 * Session Bean implementation class Random
 */
@ConversationScoped
@Named("random")
public class Random {

    /**
     * Default constructor. 
     */
    public Random() {
        // TODO Auto-generated constructor stub
    }
    
    private Logger logger = Logger.getLogger("Counter");
	private static final long serialVersionUID = 1L;

	private int cur;
	@Inject private Conversation conversation;

	@PostConstruct
	public void init() {
		if (conversation.isTransient())
			conversation.begin();
		System.out
				.println("CONSTRUCT with conversation : " + this.conversation);
	}
	
	public int getRandom() {
		return (int)(Math.random()*100);
	}

}
```


random.xhtml:

```
<!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"
	xmlns:p="http://primefaces.org/ui">

<ui:composition template="template.xhtml">
	<ui:define name="content">
		<h2>Random</h2>
		<p:growl />
		<h:form id="form">
			<h:outputText value="CID=${javax.enterprise.context.conversation.id}"
				sytel="margin: 10px; border-style: solid;border-width: 1px;
				border-color: black; 
				padding: 3px; " />
			<h:outputText id="display" value="#{random.getRandom}"
				style="margin: 10px; border-style: solid;border-width: 2px; border-color: blue; 
				padding-top: 10px; padding-bottom: 10px; padding-left: 20px; padding-right: 20px" />
		</h:form>
	</ui:define>
</ui:composition>
</html>
```

und web.xml

```
<?xml version="1.0" encoding="UTF-8"?>
<web-app version="3.0" xmlns="http://java.sun.com/xml/ns/javaee" 
  xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" 
  xsi:schemaLocation="http://java.sun.com/xml/ns/javaee 
  http://java.sun.com/xml/ns/javaee/web-app_3_0.xsd">
    <context-param>
        <param-name>javax.faces.PROJECT_STAGE</param-name>
        <param-value>Development</param-value>
    </context-param>
    <servlet>
        <servlet-name>Faces Servlet</servlet-name>
        <servlet-class>javax.faces.webapp.FacesServlet</servlet-class>
        <load-on-startup>1</load-on-startup>
    </servlet>
    <servlet-mapping>
        <servlet-name>Faces Servlet</servlet-name>
        <url-pattern>*.jsf</url-pattern>
    </servlet-mapping>
    <session-config>
        <session-timeout>
            30
        </session-timeout>
    </session-config>
    <welcome-file-list>
        <welcome-file>random.xhtml</welcome-file>
    </welcome-file-list>
</web-app>
```

Das ist wahrscheinlich nur ein ganz dummer Fehler aber ich komme momentan nicht drauf. Hat hier vllt. jemand eine Idee woran das liegen könnte das wenn ich das xhtml File öffne nur "Random" da steht und der Rest nicht geladen wird?


----------



## janus23 (9. Jul 2012)

Ich arbeite jetzt noch nicht soo lange mit JSF, aber kann sein das du in der Klasse Random die @ManagedBean Annotation vergessen hast?


----------



## Andgalf (9. Jul 2012)

Dein URL pattern in der Web.xml stimmt nicht, da hast Du *.jsf angegeben, dein welcome file endet aber auf xhtml.

Wenn du jetzt mit http://DEINHOST/random.xhtml aufrufst, geht der Request nicht durch das Faces Servlet.

schau mal hier:
jsf 2.0 - jsf2 xhtml pages not interpreted by browser - Stack Overflow


----------



## Torain (9. Jul 2012)

Vielen dank das wars wirklich, auch wenn ich die Seiten als jsf aufgerufen habe wurden sie nicht geparst aber mit einem anderen pattern gehts.

Gleich noch eine winzige Frage, ich glaub nicht das es sich lohnt dafür einen neuen Thread aufzumachen:

ich habe noch einen kleinen webservice hinzugefügt der ein Containerobjekt liefern soll. Code in etwa so:

Container Klasse:

```
@XmlRootElement(name="Container") 
public class Container implements Serializable {

    private int id;
     ...
     ...
}
[code=Java]

Webservice:
[code=Java]
@WebService
@SOAPBinding(style=SOAPBinding.Style.RPC)
public class Containers {

 ....
 @WebMethod
 public Container getContainer(){
     return container;
 }
 ......
}
```

Das scheint er leider auch nicht zu mögen. Ich habe jetzt lange mit C# gearbeitet und dachte das auch in Java ein einfaches @XmlRootElement und serializable ausreichen würden um das Objekt Serialisierbar zu machen, aber scheinbar wohl doch nicht. Wenn ich die Methode im Client benutzen will bekomme ich:


```
Exception in thread "main" com.sun.xml.internal.ws.protocol.soap.MessageCreationException: Couldn't create SOAP message due to exception: XML reader error: javax.xml.stream.XMLStreamException: ParseError at [row,col]:[1,111]
Message: XML document structures must start and end within the same entity.
	at com.sun.xml.internal.ws.encoding.SOAPBindingCodec.decode(SOAPBindingCodec.java:283)
	at com.sun.xml.internal.ws.transport.http.client.HttpTransportPipe.process(HttpTransportPipe.java:180)
	at com.sun.xml.internal.ws.transport.http.client.HttpTransportPipe.processRequest(HttpTransportPipe.java:83)
	at com.sun.xml.internal.ws.transport.DeferredTransportPipe.processRequest(DeferredTransportPipe.java:78)
	at com.sun.xml.internal.ws.api.pipe.Fiber.__doRun(Fiber.java:587)
	at com.sun.xml.internal.ws.api.pipe.Fiber._doRun(Fiber.java:546)
	at com.sun.xml.internal.ws.api.pipe.Fiber.doRun(Fiber.java:531)
	at com.sun.xml.internal.ws.api.pipe.Fiber.runSync(Fiber.java:428)
	at com.sun.xml.internal.ws.client.Stub.process(Stub.java:211)
	at com.sun.xml.internal.ws.client.sei.SEIStub.doProcess(SEIStub.java:124)
	at com.sun.xml.internal.ws.client.sei.SyncMethodHandler.invoke(SyncMethodHandler.java:98)
	at com.sun.xml.internal.ws.client.sei.SyncMethodHandler.invoke(SyncMethodHandler.java:78)
	at com.sun.xml.internal.ws.client.sei.SEIStub.invoke(SEIStub.java:107)
	at $Proxy30.getUser(Unknown Source)
	at Main.main(Main.java:15)
Caused by: com.sun.xml.internal.ws.streaming.XMLStreamReaderException: XML reader error: javax.xml.stream.XMLStreamException: ParseError at [row,col]:[1,111]
Message: XML document structures must start and end within the same entity.
	at com.sun.xml.internal.ws.streaming.XMLStreamReaderUtil.wrapException(XMLStreamReaderUtil.java:256)
	at com.sun.xml.internal.ws.streaming.XMLStreamReaderUtil.next(XMLStreamReaderUtil.java:84)
	at com.sun.xml.internal.ws.streaming.XMLStreamReaderUtil.nextContent(XMLStreamReaderUtil.java:99)
	at com.sun.xml.internal.ws.streaming.XMLStreamReaderUtil.nextElementContent(XMLStreamReaderUtil.java:89)
	at com.sun.xml.internal.ws.encoding.StreamSOAPCodec.decode(StreamSOAPCodec.java:219)
	at com.sun.xml.internal.ws.encoding.StreamSOAPCodec.decode(StreamSOAPCodec.java:292)
	at com.sun.xml.internal.ws.encoding.StreamSOAPCodec.decode(StreamSOAPCodec.java:118)
	at com.sun.xml.internal.ws.encoding.SOAPBindingCodec.decode(SOAPBindingCodec.java:278)
	... 14 more
Caused by: javax.xml.stream.XMLStreamException: ParseError at [row,col]:[1,111]
Message: XML document structures must start and end within the same entity.
	at com.sun.org.apache.xerces.internal.impl.XMLStreamReaderImpl.next(XMLStreamReaderImpl.java:594)
	at com.sun.xml.internal.ws.util.xml.XMLStreamReaderFilter.next(XMLStreamReaderFilter.java:81)
	at com.sun.xml.internal.ws.streaming.XMLStreamReaderUtil.next(XMLStreamReaderUtil.java:65)
	... 20 more
```


----------



## Andgalf (13. Jul 2012)

Die Fehlermeldung besagt ja, dass das XML nicht korrekt ist ... Hast du dir das XML was erzeugt wird mal angesehen?

Welches Framework wird benutzt um das XML zu erzeugen? Ich habe leider noch nie mit Glasfish gearbeitet, daher weiß ich nicht wie der App-Server das umsetzt.


----------

