# Jsf und Websphere



## firestone (1. Jul 2010)

Hallo zusammen,

nach viel zumprobieren etc habe ich nun herausgefunden das viele Probleme die ich mit meiner JSF Anwendung habe daran lagen, das Websphere als jar Datei nur JSP 1.1 anbietet die Anwendung aber auf JSF 2.0 basiert.

Nun habe ich meinen Implementierungsdeskriptor so eingestellt das er zuerst die Klasse der Anwendung läd. Nun vermute ich das meine Anwendung noch zu wenig jar Dateien hat.

ich habe derzeit nur 2 jar Dateien eingebunden

jsf-api-2.0.1.jar
jsf-impl-2.0.1.jar

Welche jar Dateien sind noch zwingend notwendig, damit meine JSF Anwendung funktionieren kann ? Ich arbeite mit xhtml Dateien und bekomme derzeit den Fehler 

Wo kann ich die Jar Dateien runter laden die ich noch brauche ?

```
java.io.FileNotFoundException: JSPG0036E: Die Ressource /showMenu.jsp wurde nicht gefunden.	at com.ibm.ws.jsp.webcontainerext.AbstractJSPExtensionProcessor.findWrapper(AbstractJSPExtensionProcessor.java:317)	at com.ibm.ws.jsp.webcontainerext.AbstractJSPExtensionProcessor.handleRequest(AbstractJSPExtensionProcessor.java:282)	at com.ibm.ws.webcontainer.webapp.WebAppRequestDispatcher.forward(WebAppRequestDispatcher.java:321)	at com.sun.faces.context.ExternalContextImpl.dispatch(ExternalContextImpl.java:325)	at com.sun.faces.application.ViewHandlerImpl.renderView(ViewHandlerImpl.java:257)	at com.sun.faces.lifecycle.RenderResponsePhase.execute(RenderResponsePhase.java:87)	at com.sun.faces.lifecycle.LifecycleImpl.phase(LifecycleImpl.java:239)	at com.sun.faces.lifecycle.LifecycleImpl.render(LifecycleImpl.java:118)	at javax.faces.webapp.FacesServlet.service(FacesServlet.java:198)	at com.ibm.ws.webcontainer.servlet.ServletWrapper.service(ServletWrapper.java:1146)	at com.ibm.ws.webcontainer.servlet.ServletWrapper.handleRequest(ServletWrapper.java:592)	at com.ibm.ws.wswebcontainer.servlet.ServletWrapper.handleRequest(ServletWrapper.java:481)	at com.ibm.ws.webcontainer.webapp.WebAppRequestDispatcher.forward(WebAppRequestDispatcher.java:321)	at com.ibm.ws.webcontainer.extension.DefaultExtensionProcessor.handleRequest(DefaultExtensionProcessor.java:609)	at com.ibm.ws.wswebcontainer.extension.DefaultExtensionProcessor.handleRequest(DefaultExtensionProcessor.java:113)	at com.ibm.ws.webcontainer.webapp.WebApp.handleRequest(WebApp.java:3507)	at com.ibm.ws.webcontainer.webapp.WebGroup.handleRequest(WebGroup.java:269)	at com.ibm.ws.webcontainer.WebContainer.handleRequest(WebContainer.java:815)	at com.ibm.ws.wswebcontainer.WebContainer.handleRequest(WebContainer.java:1466)	at com.ibm.ws.webcontainer.channel.WCChannelLink.ready(WCChannelLink.java:122)	at com.ibm.ws.http.channel.inbound.impl.HttpInboundLink.handleDiscrimination(HttpInboundLink.java:458)	at com.ibm.ws.http.channel.inbound.impl.HttpInboundLink.handleNewInformation(HttpInboundLink.java:387)	at com.ibm.ws.http.channel.inbound.impl.HttpInboundLink.ready(HttpInboundLink.java:267)	at com.ibm.ws.tcp.channel.impl.NewConnectionInitialReadCallback.sendToDiscriminators(NewConnectionInitialReadCallback.java:214)	at com.ibm.ws.tcp.channel.impl.NewConnectionInitialReadCallback.complete(NewConnectionInitialReadCallback.java:113)	at com.ibm.ws.tcp.channel.impl.AioReadCompletionListener.futureCompleted(AioReadCompletionListener.java:165)	at com.ibm.io.async.AbstractAsyncFuture.invokeCallback(AbstractAsyncFuture.java:217)	at com.ibm.io.async.AsyncChannelFuture.fireCompletionActions(AsyncChannelFuture.java:161)	at com.ibm.io.async.AsyncFuture.completed(AsyncFuture.java:136)	at com.ibm.io.async.ResultHandler.complete(ResultHandler.java:196)	at com.ibm.io.async.ResultHandler.runEventProcessingLoop(ResultHandler.java:751)	at com.ibm.io.async.ResultHandler$2.run(ResultHandler.java:881)	at com.ibm.ws.util.ThreadPool$Worker.run(ThreadPool.java:1497)
```

Lg Fireli


----------



## firestone (2. Jul 2010)

Kann mir denn keiner helfen 

also ich bin zwar ein Stück weiter aber funktioniert immer noch nicht komplett

Ich habe nun folgende jar Dateien eingebunden
jsf-api-2.0.1.jar
jsf-facelets.jar
jsf-impl-2.0.1.jar

Diese drei jar Files habe ich auch als gemeinsam genutze Bibliothek in den Websphere Server eingebaut und diese in einen Klassenlader eingebunden . Die Files werden auch zuerst geladen zusätzlich habe ich in der EAR Datei gesagt das er mit den Klassen der Anwendung zuerst laden soll 

Die Anwendung selbst hat auch diese 3 jar Files im build Pfad

meine web.xml sieht wie folgt aus 

```
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE web-app PUBLIC "-//Sun Microsystems, Inc.//DTD Web Application 2.2//EN" "http://java.sun.com/j2ee/dtds/web-app_2_2.dtd">
<web-app id="WebApp_ID">
	<display-name>Stammdaten</display-name>
  	<welcome-file-list>
    	<welcome-file>showMenu.xhtml</welcome-file>
  	</welcome-file-list>
  
  	<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>
		<url-pattern>*.xhtml</url-pattern>
	</servlet-mapping>
</web-app>
```

meine faces-config

```
<?xml version="1.0"?>
<faces-config 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-facesconfig_2_0.xsd"
		version="2.0">

	<application>
		<locale-config>
			<default-locale>de</default-locale>
			<supported-locale>en</supported-locale>
			<supported-locale>de</supported-locale>
		</locale-config>
		<message-bundle>de.bsdwest.jsf.resources.messages</message-bundle>
		<resource-bundle>
			<base-name>de.bsdwest.jsf.resources.messages</base-name>
			<var>msgs</var>
		</resource-bundle>
	</application> 	
	
</faces-config>
```

Ich bekomme zumindest die showMenu.xhtml die wie folgt aussieht angezeigt 

```
<?xml version="1.0" encoding="ISO-8859-1" ?>
<!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:h="http://java.sun.com/jsf/html"
      xmlns:f="http://java.sun.com/jsf/core">

<h:head>
    <meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1" />
    <link rel="stylesheet" type="text/css" href="./css/default.css" />    
    <title>#{msgs.mainmenu_title}</title>
</h:head>

<h:body>
	<f:view>
	
	<h2>#{msgs.mainmenu_header}</h2>
	
	<p>
		
		<h:form>
		<ul>
			<li><a href="showActualList.jsf">#{msgs.mainmenu_actualList}</a></li>
			<li><a href="showAllItems.jsf">#{msgs.mainmenu_fullList}</a></li>
			<li>
				<h:commandLink id="link" action="#{ctrlStammdaten.createEntry}">
  					<h:outputText value="#{msgs.mainmenu_newEntry}"/>
				</h:commandLink>
			</li>
		</ul>
		</h:form>
	</p>
	</f:view>
</h:body>
</html>
```

Versuche ich nun aber die showActualList.jsf aufzurufen, so bekomme ich einen file not found error und bei dem h:command link passiert gar nichts 

Hat jemand einen Tip was noch fehlt? Ich weiss das diese Anwendung unter einem normalen Eclipse gelaufen ist möchte sie jetzt aber auf einem Websphere 7.0 laufen lassen  

Lg Fireli


----------



## firestone (2. Jul 2010)

Ok ich bin noch einen schritt weiter wenn ich in der showMenu.xhtml die Endung jsf in xhtml ändere, so bekomme ich meine Seiten angezeigt Oo 

woran liegt das ?


----------



## y0dA (6. Jul 2010)

Dein WAS ist ein 6.1 ?

Wir stehen auch gerade bei dem Problem an, dass der WAS 6.1 ein "altes" JSP.jar hat, sonst wäre alles funktional für myFaces 1.2 - zur Zeit könnten wir nur 1.1 nehmen und da mache ich es lieber gleich selber..

Bist du mit deinem Problem noch weiter gekommen?


----------



## firestone (7. Jul 2010)

Huhu

ja also die Anwendung habe ich ans laufen bekommen bis auf die Tatsache das in meiner xhtml Datei die normalen links also <a href.... mit der Endung jsf nicht funktionieren . Also ich habe in dem Link auf eine Datei mit der Endung jsf verlinkt diese Seite gibt es aber nur als xhtml Datei dachte er löst den Namen automatisch auf und setzt das um macht er aber nicht wieso weiss ich nicht. 

Aber die Anwendung ans rennen gekriegt habe ich indem ich eine sogenannte gemeinsam genutze Bibliothek angelegt habe . Da rein habe ich die neuen jar Files gelegt. Dann habe ich dem ganzen Server noch einen Klassenlader verpasst der genau die neu angelegte Bibliothek läd dann habe ich noch den Anwendungen beim starten mitgegeben das die Anwendung mit den Klassen der Anwendung zuerst läd und das alles zusammen hat die Lösung des Problems gebracht . 

 wenn noch fragen sind her damit


----------

