I use Eclipse with Websphere server .
I need to add a session listener . I added the class SessionListener.java in the package net.test . When I add the < listener > tag to the web.xml file , I get the folowing error :
Distribution of configuration failed. See log for details.
Error unmarshaling return; nested exception is:
java.net.MalformedURLException: no protocol: Files/IBM/WebSphere/AppServerCommunityEdition/repository/org/apache/geronimo/modules/geronimo-common/2.0.1/geronimo-common-2.0.1.jar
java.rmi.UnmarshalException: Error unmarshaling return; nested exception is:
java.net.MalformedURLException: no protocol: Files/IBM/WebSphere/AppServerCommunityEdition/repository/org/apache/geronimo/modules/geronimo-common/2.0.1/geronimo-common-2.0.1.jar
at sun.rmi.transport.StreamRemoteCall.executeCall(StreamRemoteCall.java:233)
at sun.rmi.server.UnicastRef.invoke(UnicastRef.java:141)
at com.sun.jmx.remote.internal.PRef.invoke(Unknown Source)
at javax.management.remote.rmi.RMIConnectionImpl_Stub.invoke(RMIConnectionImpl_Stub.java:400)
at javax.management.remote.rmi.RMIConnector$RemoteMBeanServerConnection.invoke(RMIConnector.java:984)
at org.apache.geronimo.system.jmx.KernelDelegate.invokeKernel(KernelDelegate.java:890)
at org.apache.geronimo.system.jmx.KernelDelegate.invoke(KernelDelegate.java:551)
at org.apache.geronimo.deployment.plugin.local.AbstractDeployCommand.doDeploy(AbstractDeployCommand.java:116)
at org.apache.geronimo.deployment.plugin.local.DistributeCommand.run(DistributeCommand.java:61)
at java.lang.Thread.run(Thread.java:810)
Caused by: java.net.MalformedURLException: no protocol: Files/IBM/WebSphere/AppServerCommunityEdition/repository/org/apache/geronimo/modules/geronimo-common/2.0.1/geronimo-common-2.0.1.jar
at java.net.URL.<init>(URL.java:602)
at java.net.URL.<init>(URL.java:499)
at java.net.URL.<init>(URL.java:448)
at sun.rmi.server.LoaderHandler.pathToURLs(LoaderHandler.java:762)
at sun.rmi.server.LoaderHandler.loadClass(LoaderHandler.java:162)
at java.rmi.server.RMIClassLoader$2.loadClass(RMIClassLoader.java:632)
at java.rmi.server.RMIClassLoader.loadClass(RMIClassLoader.java:259)
at sun.rmi.server.MarshalInputStream.resolveClass(MarshalInputStream.java:212)
at java.io.ObjectInputStream.readNonProxyDesc(ObjectInputStream.java:1568)
at java.io.ObjectInputStream.readClassDesc(ObjectInputStream.java:1490)
at java.io.ObjectInputStream.readOrdinaryObject(ObjectInputStream.java:1723)
at java.io.ObjectInputStream.readObject0(ObjectInputStream.java:1329)
at java.io.ObjectInputStream.defaultReadFields(ObjectInputStream.java:1932)
at java.io.ObjectInputStream.readSerialData(ObjectInputStream.java:1856)
at java.io.ObjectInputStream.readOrdinaryObject(ObjectInputStream.java:1743)
at java.io.ObjectInputStream.readObject0(ObjectInputStream.java:1329)
at java.io.ObjectInputStream.readObject(ObjectInputStream.java:363)
at sun.rmi.transport.StreamRemoteCall.executeCall(StreamRemoteCall.java:231)
... 9 more
This is my web.xml file :
<?xml version="1.0" encoding="UTF-8"?>
<web-app xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns="http://java.sun.com/xml/ns/javaee" xmlns:web="http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd" xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd" id="WebApp_ID" version="2.5">
<display-name>odyssey</display-name>
<welcome-file-list>
<welcome-file>index.html</welcome-file>
<welcome-file>index.htm</welcome-file>
<welcome-file>index.jsp</welcome-file>
<welcome-file>default.html</welcome-file>
<welcome-file>default.htm</welcome-file>
<welcome-file>default.jsp</welcome-file>
</welcome-file-list>
<listener>
<listener-class>net.testt.SessionListener</listener-class>
</listener>
</web-app>
When I remove the tag , everything works fine … Please help … I really need that listener to do the cleanup works to keep track of the current ONLINE USERS …
This is a (nasty) bug in WASCE. It should have been
"file:///C:/Program Files/IBM/....". Thefile://is here the protocol which was missing due to the space inProgram Files. The IBM guys should have quoted path names, but they apparently overlooked it.To fix this problem, either install WASCE in a path without spaces, or upgrade to the latest version available.