Getting started with JSF (on oc4j)
Step 1: Hello World!
- Download and unzip oc4j 10.0.3 release 2. Install oc4j as
described in
the readme. - Download and unzip JSF 1.0.
- Create new java project called jsf-test-1. I used eclipse. In the
project properties i specified that i wanted the java sources under src
and the compiled classes in web/WEB-INF/classes. - Create <PROJECT_HOME>web/WEB-INF/web.xml
<web-app>
<display-name>JSF test 1</display-name>
<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>*.faces</url-pattern>
</servlet-mapping>
</web-app>
- Add the project path to
<OC4J_HOME>/config/application.xml (replace the value for path
with something relevant)
<web-module id="jsf-test-1" path="../../../../../projects/jsf-test-1/web"/>
- Define the web application in
<OC4J_HOME>/config/http-web-site.xml
<web-app application="default" name="jsf-test-1" root="/jsf-test-1" development="true"/>
- Copy jsf libraries from <JSF_HOME>/lib into
<PROJECT_HOME>/web/WEB-INF/lib - jsf-api.jar
- jsf-impl.jar
- commons-beanutils.jar
- commons-collections.jar
- commons-digester.jar
- commons-logging.jar
- Create <PROJECT_HOME>/web/WEB-INF/faces-config.xml
- Create <PROJECT_HOME>/src/jsftest1/Messages.properties
helloWorld=Hello World!
- Create <PROJECT_HOME>/web/index.jsp
<faces-config>
<application>
<message-bundle>jsftest1.Messages</message-bundle>
<locale-config>
<default-locale>en</default-locale>
</locale-config>
</application>
</faces-config>
<%@ taglib uri="http://java.sun.com/jsf/html" prefix="h" >
<@ taglib uri="http://java.sun.com/jsf/core" prefix="f" %>
<html>
<body>
<f:loadBundle basename="jsftest1.Messages" var="bundle"/>
<f:view>
<h:outputText value="#{bundle.helloWorld}" />
</f:view>
</body>
</html>
Step 2: a registration form
- Add a link to a registration page in
<PROJECT_HOME>/web/index.jsp
<%@ taglib uri="http://java.sun.com/jsf/html" prefix="h" >
<@ taglib uri="http://java.sun.com/jsf/core" prefix="f" %>
<html>
<body>
<f:loadBundle basename="jsftest1.Messages" var="bundle"/>
<f:view>
<h1><h:outputText value="#{bundle.helloWorld}" /></h1>
Welcome: <h:outputText value="#{registerBean.firstName}"/> <h:outputText value="#{registerBean.lastName}"/>
<br/>
<h:form id="indexForm">
<h:commandLink id="link1" action="register">
<h:outputText value="#{bundle.register}"/>
</h:commandLink>
</h:form>
</f:view>
</body>
</html>
- Modify <PROJECT_HOME>/web/WEB-INF/faces-config.xml
<faces-config>
<application>
<message-bundle>jsftest1.Messages</message-bundle>
<locale-config>
<default-locale>en</default-locale>
</locale-config>
</application>
<managed-bean>
<managed-bean-name>registerBean</managed-bean-name>
<managed-bean-class>jsftest1.RegisterBean</managed-bean-class>
<managed-bean-scope>session</managed-bean-scope>
</managed-bean>
<navigation-rule>
<from-view-id>/register.jsp</from-view-id>
<navigation-case>
<from-outcome>success</from-outcome>
<to-view-id>/index.jsp</to-view-id>
</navigation-case>
<navigation-case>
<from-outcome>failure</from-outcome>
<to-view-id>/register.jsp</to-view-id>
</navigation-case>
</navigation-rule>
<navigation-rule>
<from-view-id>/index.jsp</from-view-id>
<navigation-case>
<from-outcome>register</from-outcome>
<to-view-id>/register.jsp</to-view-id>
</navigation-case>
</navigation-rule>
</faces-config>
- Modify <PROJECT_HOME>/src/jsftest1/Messages.properties
helloWorld=Hello World!
register=Register
firstName=First Name
lastName=Last Name style="font-family: sans-serif;">
- Create
<PROJECT_HOME>/web/register.jsp
<%@ taglib uri="http://java.sun.com/jsf/html" prefix="h" >
<@ taglib uri="http://java.sun.com/jsf/core" prefix="f" %>
<html>
<body>
<f:loadBundle basename="jsftest1.Messages" var="bundle"/>
<f:view>
<h1><h:outputText value="#{bundle.register}" /></h1>
<h:form id="registrationForm">
<h:panelGrid columns="2">
<h:outputLabel for="firstName">
<h:outputText value="#{bundle.firstName}"/>
</h:outputLabel>
<h:inputText id="firstName" value="#{registerBean.firstName}" />
<h:outputLabel for="lastName">
<h:outputText value="#{bundle.lastName}"/>
</h:outputLabel>
<h:inputText id="lastName" value="#{registerBean.lastName}" />
<h:commandButton action="#{registerBean.registerAction}" value="#{bundle.register}"/>
</h:panelGrid>
</h:form>
</f:view>
</body>
</html>
Note: due to a bug in JSF, we need to add the panelGrid tag, otherwise
the
outputLabel tag does not work.
- Create class RegisterBean:
package jsftest1;
import org.apache.commons.logging.Log;
import org.apache.commons.logging.LogFactory;
/**
* @author akoelewijn
*/
public class RegisterBean {
protected static final Log log = LogFactory.getLog(RegisterBean.class);
String firstName = null;
String lastName = null;
/**
* @return Returns the firstName.
*/
public String getFirstName() {
return firstName;
}
/**
* @param firstName
* The firstName to set.
*/
public void setFirstName(String firstName) {
this.firstName = firstName;
}
/**
* @return Returns the lastName.
*/
public String getLastName() {
return lastName;
}
/**
* @param lastName
* The lastName to set.
*/
public void setLastName(String lastName) {
this.lastName = lastName;
}
public String registerAction() {
log.info("registerAction");
if (firstName != null && !firstName.equals("") && lastName != null
&& !lastName.equals("") ) {
return "success";
} else {
return "failure";
}
}
}
Step 3: simple validation
- JSF has some predefined tags to do simple validations. Modify
register.jsp
<h:form id="registrationForm">
<h:panelGrid columns="3">
<h:outputLabel for="firstName">
<h:outputText value="#{bundle.firstName}"/>
</h:outputLabel>
<h:inputText id="firstName" value="#{registerBean.firstName}" >
<f:validateLength minimum="1"/>
</h:inputText>
<h:message for="firstName"/>
<h:outputLabel for="lastName">
<h:outputText value="#{bundle.lastName}"/>
</h:outputLabel>
<h:inputText id="lastName" value="#{registerBean.lastName}" >
<f:validateLength minimum="1"/>
</h:inputText>
<h:message for="lastName"/>
<h:commandButton action="#{registerBean.registerAction}" value="#{bundle.register}"/>
</h:panelGrid>
</h:form>
Step 4: custom validation
- Modify <PROJECT_HOME>/web/WEB-INF/faces-config.xml
...
</application>
<validator>
<validator-id>registerValidator</validator-id>
<validator-class>jsftest1.RegisterValidator</validator-class>
</validator>
<managed-bean>
...
- Add class RegisterValidation
package jsftest1;
import javax.faces.application.FacesMessage;
import javax.faces.component.UIComponent;
import javax.faces.context.FacesContext;
import javax.faces.validator.Validator;
import javax.faces.validator.ValidatorException;
import org.apache.commons.logging.Log;
import org.apache.commons.logging.LogFactory;
/**
* @author akoelewijn
*/
public class RegisterValidator implements Validator {
protected static final Log log = LogFactory.getLog(RegisterValidator.class);
public void validate(FacesContext _context, UIComponent _component,
Object _value) throws ValidatorException {
log.info("validate: " + _component.getId() + ", " + _value);
if (_component.getId().equals("firstName")) {
if (!_value.equals("andrej")) {
throw new ValidatorException(new FacesMessage(
"Incorrect value for first name"));
}
} else if (_component.getId().equals("lastName")) {
if (!_value.equals("koelewijn")) {
throw new ValidatorException(new FacesMessage(
"Incorrect value for last name"));
}
}
}
}
- Modify <PROJECT_HOME>/web/register.jsp
<%@ taglib uri="http://java.sun.com/jsf/html" prefix="h" >
<@ taglib uri="http://java.sun.com/jsf/core" prefix="f" %>
<html>
<body>
<f:loadBundle basename="jsftest1.Messages" var="bundle"/>
<f:view>
<h1><h:outputText value="#{bundle.register}" /></h1>
<h:form id="registrationForm">
<h:panelGrid columns="3">
<h:outputLabel for="firstName">
<h:outputText value="#{bundle.firstName}"/>
</h:outputLabel>
<h:inputText id="firstName" value="#{registerBean.firstName}" >
<f:validateLength minimum="1"/>
<f:validator validatorId="registerValidator"/>
</h:inputText>
<h:message for="firstName"/>
<h:outputLabel for="lastName">
<h:outputText value="#{bundle.lastName}"/>
</h:outputLabel>
<h:inputText id="lastName" value="#{registerBean.lastName}" >
<f:validateLength minimum="1"/>
<f:validator validatorId="registerValidator"/>
</h:inputText>
<h:message for="lastName"/>
<h:commandButton action="#{registerBean.registerAction}" value="#{bundle.register}"/>
</h:panelGrid>
</h:form>
</f:view>
</body>
</html>
21 Mar 2004 |
March 21st, 2004 at 4:43 pm
well that’s sure going to make web development easier. nice work on the example, though.
March 21st, 2004 at 7:45 pm
The first page of the JSF spec states that JSF is designed to be tooled, so whether or not web development will become easier depends on the tools, not on what you see above. But it’s always good to know what the tools are doing, so it helps to know the JSF tags.
March 25th, 2004 at 2:28 pm
Thank for very informative examples.
I had been looking for information on custom validation and yours was the easiest to digest.
Good to see good contribution for a good technology
March 30th, 2004 at 7:36 pm
Hello,
I have been trying to get the jsf examples to run OC4J 10g Preview 2. I am getting error message java.lang.ClassCastException
at _chooseLocal_2e_jsp._jspService(_chooseLocal_2e_jsp.java:51)
SRC:/chooseLocale.jsp:50
Line 50 of the file is f:loadBundle basename=”carstore.bundles.Resources” var=”bundle”
I have also tryed the to run the helloWorld example. I get the following error message
java.lang.NullPointerException
at com.sun.faces.taglib.jsf_core.LoadBundleTag.doStartTag(LoadBundleTag.java:96)
at _examples._jsp._jsf_2d_test_2d_1._index_2e_jsp._jspService(_index_2e_jsp.java:53)
SRC:/examples/jsp/jsf-test-1/index.jsp:8
Line 8 of the file is f:loadBundle basename=”jstest1.Messages” var=”bundle”
Please Help!
March 31st, 2004 at 8:52 am
According to jad (java decompiler) line 96 of LoadBundleTag contains the following statement:
final ResourceBundle bundle = ResourceBundle.getBundle(basename, context.getViewRoot().getLocale(), Util.getCurrentLoader(this));
Not sure what could cause the null pointer exception here. Which version of java are you using?
April 9th, 2004 at 8:41 am
Hello:
I’m getting the same error message/line number,
but with another application. I have this:
+++++++++++++
Windows/XP
Tomcat5.0.18
Java 1.4.2_03
+++++++++++++
Andrej, which version of Java did you use for
the sample application?
Regards,
oswald
April 9th, 2004 at 9:05 am
Hello again:
I had originally thought it was the JDK version, but it works with 1.4.2.03 and 1.4.2.04 after commenting out the following line (or the equivalent in the other person’s code):
The file Messages.properties exists under $TC_HOMEwebappstestWEB-INFclassesbundle,
but my sample application only works when I comment out the preceding line and modify the rest of the JSP. There’s obviously a mismatch between my JSP code and the location of the resource file….
Regards,
Oswald
April 9th, 2004 at 9:14 am
So you can’t use a resource bundle, or do you need to put it somewhere else?
I’m using 1.4.2_03 and oc4j 10.0.3r2.
April 9th, 2004 at 11:12 am
The answer turns out to be very simple:)
Instead of using this
http://localhost:8080/test/login.jsp
I need to do this:
http://localhost:8080/test/faces/login.jsp
I searched the Web and found someone else who had a quasi-related error and the inclusion of
‘pages’ in the URL was the solution. It’s past 2AM right now so I’ll figure out later why this
is necessary for the solution….
Regards,
Oswald
April 9th, 2004 at 11:16 am
Andrej:
One last comment/question…Howard Ship, who is the creator of Tapestry, seems to really loathe JSF because it’s too complicated (compared to Tapestry). On the other hand, Sun/IBM/Oracle seem to be much in favour of JSF, and Oracle will support JSF in JDeveloper9i. Is Howard correct in his assessment?
Regards,
Oswald
April 9th, 2004 at 11:30 am
Regarding the need for faces in the url, you’ve probably configured your web application to use the faces servlet when the faces string is detected in an url. Otherwise you’re directly executing the jsp, and the faces servlet doesn’t get a chance to make the bundle available to the page.
The url i was calling is: http://localhost:8888/jsf-test-1/index.faces
The faces servlet is executed upon detecting the .faces extension. I wasn’t directly calling the jsp page.
April 9th, 2004 at 11:34 am
I’ve never looked at tapestry, so i can’t comment on it. I agree though that jsf is pretty complicated, although not much more than using struts.
I downloaded sun’s java studio creator today. It has a visual editor for jsf pages. This hides most of the JSF complexity. I think that pretty soon most java tools will have support for jsf and then jsf will be easier than tapestry, as it’s not very likely that many tools will offer support for tapestry.
April 10th, 2004 at 1:30 am
Andrej:
Yep, makes sense now:) I agree that support for JSF is likelier than Tapestry, which can be a significant factor for development.
I’m downloading Java Studio Creator and will see what it offers. I’m also going to try your JSF example.
btw: I think many Struts developers are still unsure/unconvinced that JSF will offer significant productivity gains over Struts, so an example illustrating this point would interest a lot of people.
If the benefits of JSF arise primarily in large projects, then JSF risks being perceived as “just another framework”, and IMHO) many/most people will continue investing time and effort in Struts.
Perhaps some examples of using JSF with XML/XSLT or Velocity would be interesing as well…
Regards,
Oswald
April 11th, 2004 at 10:24 am
If you use jsf the same way you use struts now, than you won’t see a lot of productivity gains. The idea is that jsf provides better support for components. By using existing components you should be able to achieve better productivity. An example displaying how you can create and use components is next on my list, when i have the time… Right now i’m pretty busy using web services in jdeveloper 10g.
I’ve used velocity and xml/xslt in the past, both for big web applications. I like velocity, i think for html generation xml/xslt is too complex. On my last project i’ve decided to use jsp’s eventhough i think velocity is easier. But it’s easier to find programmers that have experience with jsp’s, and there are more tools that support jsp’s.
April 14th, 2004 at 12:50 pm
andrej,
u say it is likely that support for jsf will be better than for tapestry. however, assume that tapestry as a framework is infact better than jsf. Why dont we all support the better framework and build tools on them? Why dont u take a look @ tapestry? Meanwhile, there is already an eclipse plugin for tapestry called spindle. Just as you guyz are checking out jsf and java studio creator, pls try out tapestry and spindle.
thanx.
June 21st, 2004 at 11:32 am
I would like to send my appreciations for the clear explanations, I think java.sun.com should learn from you how to explain
August 3rd, 2004 at 1:20 pm
Excellent Article.
I found it vey useful.
August 22nd, 2004 at 3:24 pm
I come from ASP.NET bg and this has been an excellent quick intro to JSF. I wouldnt mind a few more j2ee type tutorials from you.
November 9th, 2004 at 2:49 pm
good
December 12th, 2004 at 4:10 am
thx a lot!
May 5th, 2005 at 11:07 am
Hi,
I need to develop an Extended datatable component based on existing Sun JSF h:dataTable component.
The following features are needed for table ( And may be all these should be configurable as well):
1.Column Sorting
2.Select All Checkbox Coulmn
3.Pagination-It should display records range in a drop-down
4. A button panel bar which would do ADD/EDIT/Delete/refersh etc..
I am able to do all of these but not in a generic way. Like I have a seperate Button bar( made of htmlCommandButtons) and attached it with datatable’s datamodel. Similary , i have got pagination working but with using an seperate with logic inside backing bean. Select All checkbox as a coulmn in datatable.
Can anybody suggest a design pattern for such component? How should all these pieces should be organised so that it will result in a single extended table component?
Any suggestions greatly appreciated.
Thanks in Advance.
Sachin
Mail ID: techie_techie@techie.com
November 2nd, 2005 at 5:30 am
Please reply the solution for Sachin’s message…
January 19th, 2006 at 2:15 pm
I am developing a simple JSF application which has
1. a login page
2. success page (in case login is successful)
3. failure page (in case login fails)
I am developing this application in OC4J environment. I wish to use the web-security for the same. Do we need to configure any additonal files/information in case
A JSF web-application uses the J2EE web-security configured to a local file.
March 1st, 2007 at 12:34 am
Good One, Thanks
March 17th, 2007 at 10:10 am
If i am adding the J2EE.jar in the WEB-INF/lib folder; them following error is comming; and if i am excluding this then ServletRequestListener (Class Not Exception is comming.)
Plz. help on this issue.
An unexpected exception has been detected in native code outside the VM.
Unexpected Signal : EXCEPTION_ACCESS_VIOLATION (0xc0000005) occurred at PC=0×656E6E6F
Function=[Unknown.]
Library=(N/A)
NOTE: We are unable to locate the function name symbol for the error
just occurred. Please refer to release documentation for possible
reason and solutions.
Current Java thread:
at java.lang.Class.getClassLoader0(Native Method)
at java.lang.Class.getClassLoader(Class.java:516)
at java.lang.Class.desiredAssertionStatus(Class.java:2063)
at com.sun.faces.util.Util.(Util.java:86)
at com.sun.faces.config.ConfigureListener.(ConfigureListener.java:277)
at sun.reflect.NativeConstructorAccessorImpl.newInstance0(Native Method)
at sun.reflect.NativeConstructorAccessorImpl.newInstance(NativeConstructorAccessorImpl.java:39)
at sun.reflect.DelegatingConstructorAccessorImpl.newInstance(DelegatingConstructorAccessorImpl.java:27)
at java.lang.reflect.Constructor.newInstance(Constructor.java:274)
at java.lang.Class.newInstance0(Class.java:308)
at java.lang.Class.newInstance(Class.java:261)
at weblogic.servlet.internal.WebAppServletContext.registerEventListener(WebAppServletContext.java:2886)
– locked (a weblogic.servlet.internal.WebAppServletContext)
at weblogic.servlet.internal.WebAppHelper.parseAndRegisterListeners(WebAppHelper.java:394)
at weblogic.servlet.internal.WebAppHelper.registerImplicitTagLibListeners(WebAppHelper.java:359)
at weblogic.servlet.internal.WebAppServletContext.activateFromDescriptors(WebAppServletContext.java:2434)
at weblogic.servlet.internal.WebAppServletContext.activate(WebAppServletContext.java:5904)
at weblogic.servlet.internal.WebAppServletContext.setActive(WebAppServletContext.java:5882)
at weblogic.servlet.internal.WebAppModule.activate(WebAppModule.java:834)
at weblogic.j2ee.J2EEApplicationContainer.activateModule(J2EEApplicationContainer.java:3315)
at weblogic.j2ee.J2EEApplicationContainer.activate(J2EEApplicationContainer.java:2194)
at weblogic.j2ee.J2EEApplicationContainer.activate(J2EEApplicationContainer.java:2167)
at weblogic.j2ee.J2EEApplicationContainer.activate(J2EEApplicationContainer.java:2115)
at weblogic.management.deploy.slave.SlaveDeployer$Application.setActivation(SlaveDeployer.java:3082)
at weblogic.management.deploy.slave.SlaveDeployer.setActivationStateForAllApplications(SlaveDeployer.java:1751)
at weblogic.management.deploy.slave.SlaveDeployer.resume(SlaveDeployer.java:359)
at weblogic.management.deploy.DeploymentManagerServerLifeCycleImpl.resume(DeploymentManagerServerLifeCycleImpl.java:229)
at weblogic.t3.srvr.SubsystemManager.resume(SubsystemManager.java:131)
at weblogic.t3.srvr.T3Srvr.resume(T3Srvr.java:966)
at weblogic.t3.srvr.T3Srvr.run(T3Srvr.java:361)
at weblogic.Server.main(Server.java:32)
Dynamic libraries:
0×00400000 – 0×0040B000 D:BeaJDK142~1binjava.exe
0×77F80000 – 0×77FFC000 C:WINNTsystem32ntdll.dll
0×7C2D0000 – 0×7C335000 C:WINNTsystem32ADVAPI32.dll
0×7C570000 – 0×7C624000 C:WINNTsystem32KERNEL32.dll
0×77D30000 – 0×77D9F000 C:WINNTsystem32RPCRT4.dll
0×78000000 – 0×78045000 C:WINNTsystem32MSVCRT.dll
0×75030000 – 0×75044000 C:WINNTsystem32WS2_32.DLL
0×75020000 – 0×75028000 C:WINNTsystem32WS2HELP.DLL
0×08000000 – 0×08139000 D:BeaJDK142~1jrebinclientjvm.dll
0×77E10000 – 0×77E79000 C:WINNTsystem32USER32.dll
0×77F40000 – 0×77F7C000 C:WINNTsystem32GDI32.dll
0×77570000 – 0×775A0000 C:WINNTsystem32WINMM.dll
0×10000000 – 0×10007000 D:BeaJDK142~1jrebinhpi.dll
0×007C0000 – 0×007CE000 D:BeaJDK142~1jrebinverify.dll
0×007D0000 – 0×007E9000 D:BeaJDK142~1jrebinjava.dll
0×007F0000 – 0×007FD000 D:BeaJDK142~1jrebinzip.dll
0×253A0000 – 0×253AF000 D:Beajdk142_05jrebinnet.dll
0×782C0000 – 0×782CC000 C:WINNTSystem32rnr20.dll
0×77980000 – 0×779A4000 C:WINNTsystem32DNSAPI.DLL
0×75050000 – 0×75058000 C:WINNTsystem32WSOCK32.dll
0×77340000 – 0×77353000 C:WINNTsystem32iphlpapi.dll
0×77520000 – 0×77525000 C:WINNTsystem32ICMP.dll
0×77320000 – 0×77337000 C:WINNTsystem32MPRAPI.dll
0×75150000 – 0×75160000 C:WINNTsystem32SAMLIB.DLL
0×7CDC0000 – 0×7CE10000 C:WINNTsystem32NETAPI32.DLL
0×7C340000 – 0×7C34F000 C:WINNTsystem32Secur32.dll
0×77BF0000 – 0×77C01000 C:WINNTsystem32NTDSAPI.dll
0×77950000 – 0×7797B000 C:WINNTsystem32WLDAP32.DLL
0×751C0000 – 0×751C6000 C:WINNTsystem32NETRAP.dll
0×7CE20000 – 0×7CF0F000 C:WINNTsystem32OLE32.DLL
0×779B0000 – 0×77A4B000 C:WINNTsystem32OLEAUT32.DLL
0×773B0000 – 0×773DF000 C:WINNTsystem32ACTIVEDS.DLL
0×77380000 – 0×773A3000 C:WINNTsystem32ADSLDPC.DLL
0×77830000 – 0×7783E000 C:WINNTsystem32RTUTILS.DLL
0×77880000 – 0×7790E000 C:WINNTsystem32SETUPAPI.DLL
0×7C0F0000 – 0×7C154000 C:WINNTsystem32USERENV.DLL
0×774E0000 – 0×77514000 C:WINNTsystem32RASAPI32.dll
0×774C0000 – 0×774D1000 C:WINNTsystem32rasman.dll
0×77530000 – 0×77552000 C:WINNTsystem32TAPI32.dll
0×71710000 – 0×71794000 C:WINNTsystem32COMCTL32.DLL
0×70A70000 – 0×70AD6000 C:WINNTsystem32SHLWAPI.DLL
0×77360000 – 0×77379000 C:WINNTsystem32DHCPCSVC.DLL
0×777E0000 – 0×777E8000 C:WINNTSystem32winrnr.dll
0×777F0000 – 0×777F5000 C:WINNTsystem32rasadhlp.dll
0×25EA0000 – 0×25EA8000 D:Beajdk142_05jrebinnio.dll
0×25F70000 – 0×25F76000 D:Beajdk142_05jrebinioser12.dll
0×74FD0000 – 0×74FEE000 C:WINNTsystem32msafd.dll
0×75010000 – 0×75017000 C:WINNTSystem32wshtcpip.dll
0×77920000 – 0×77943000 C:WINNTsystem32imagehlp.dll
0×72A00000 – 0×72A2D000 C:WINNTsystem32DBGHELP.dll
0×690A0000 – 0×690AB000 C:WINNTsystem32PSAPI.DLL
Heap at VM Abort:
Heap
def new generation total 2304K, used 2072K [0×10010000, 0×10290000, 0×10f70000)
eden space 2048K, 88% used [0×10010000, 0×101d6038, 0×10210000)
from space 256K, 100% used [0×10250000, 0×10290000, 0×10290000)
to space 256K, 0% used [0×10210000, 0×10210000, 0×10250000)
tenured generation total 30272K, used 11334K [0×10f70000, 0×12d00000, 0×1c810000)
the space 30272K, 37% used [0×10f70000, 0×11a81878, 0×11a81a00, 0×12d00000)
compacting perm gen total 18176K, used 18140K [0×1c810000, 0×1d9d0000, 0×24810000)
the space 18176K, 99% used