📄 start.html
字号:
<p class="ATOC"><a name="pgfId-1103240"></a>Writing a Security Manager 311</p> <p class="BTOC"><a name="pgfId-1103242"></a>The <i>FileIO</i> Program 311</p> <p class="BTOC"><a name="pgfId-1103244"></a>The <i>PasswordSecurityManager</i> Class 314</p> <p class="BTOC"><a name="pgfId-1103246"></a>Reference Information 317</p> <h6 class="CTTOC"><a href="HTML/APPX/APPX.html" name="pgfId-1117077">Appendix A<br> Signed Applets and Security Managers 305</a></h6> <h6 class="CTTOC"><a name="pgfId-1103250"></a>Security and Permissions 319</h6> <div class="ATOC"> <a name="pgfId-1103252"></a>Overview 320</div> <div class="ATOC"> <a name="pgfId-1103254"></a>Knowing Which Permissions 321</div> <div class="ATOC"> <a name="pgfId-1103256"></a><i>AllPermission</i> 321</div> <p class="ATOC"><a name="pgfId-1103258"></a><i>AWTPermission</i> 322</p> <p class="ATOC"><a name="pgfId-1103260"></a><i>FilePermission</i> 323</p> <p class="ATOC"><a name="pgfId-1103262"></a><i>NetPermission</i> 324</p> <p class="ATOC"><a name="pgfId-1103264"></a><i>PropertyPermission</i> 324</p> <p class="ATOC"><a name="pgfId-1103266"></a><i>ReflectPermission</i> 325</p> <p class="ATOC"><a name="pgfId-1103268"></a><i>RuntimePermission</i> 325</p> <p class="ATOC"><a name="pgfId-1103270"></a><i>SecurityPermission</i> 328</p> <p class="ATOC"><a name="pgfId-1103272"></a><i>SerializablePermission</i> 332</p> <p class="ATOC"><a name="pgfId-1103274"></a><i>SocketPermission</i> 332</p> <h6 class="CTTOC"><a href="HTML/APPX/APPX.html#pgfId-1061644" name="pgfId-1103278">Appendix B<br> Classes, Methods, and Permissions 335</a></h6> <div class="ATOC"> <a name="pgfId-1103280"></a><i>java.awt.Graphics2D</i> 337</div> <div class="ATOC"> <a name="pgfId-1103282"></a><i>java.awt.Toolkit</i> 337</div> <div class="ATOC"> <a name="pgfId-1103284"></a><i>java.awt.Window</i> 337</div> <p class="ATOC"><a name="pgfId-1103286"></a><i>java.beans.Beans</i> 338</p> <p class="ATOC"><a name="pgfId-1103288"></a><i>java.beans.Introspector</i> 338</p> <p class="ATOC"><a name="pgfId-1103290"></a><i>java.beans.PropertyEditorManager</i> 338</p> <p class="ATOC"><a name="pgfId-1103292"></a><i>java.io.File</i> 338</p> <p class="ATOC"><a name="pgfId-1103294"></a><i>java.io.FileInputStream</i> 339</p> <p class="ATOC"><a name="pgfId-1103296"></a><i>java.io.FileOutputStream</i> 339</p> <p class="ATOC"><a name="pgfId-1103298"></a><i>java.io.ObjectInputStream</i> 339</p> <p class="ATOC"><a name="pgfId-1103300"></a><i>java.io.ObjectOutputStream</i> 339</p> <p class="ATOC"><a name="pgfId-1103302"></a><i>java.io.RandomAccessFile</i> 339</p> <p class="ATOC"><a name="pgfId-1103304"></a><i>java.lang.Class</i> 340</p> <p class="ATOC"><a name="pgfId-1103306"></a><i>java.lang.ClassLoader</i> 341</p> <p class="ATOC"><a name="pgfId-1103308"></a><i>java.lang.Runtime</i> 341</p> <p class="ATOC"><a name="pgfId-1103310"></a><i>java.lang.SecurityManager</i> 342</p> <p class="ATOC"><a name="pgfId-1103312"></a><i>java.lang.System</i> 342</p> <p class="ATOC"><a name="pgfId-1103314"></a><i>java.lang.Thread</i> 342</p> <p class="ATOC"><a name="pgfId-1103316"></a><i>java.lang.ThreadGroup</i> 344</p> <p class="ATOC"><a name="pgfId-1103318"></a><i>java.lang.reflect.AccessibleObject</i> 344</p> <p class="ATOC"><a name="pgfId-1103320"></a><i>java.net.Authenticator</i> 344</p> <p class="ATOC"><a name="pgfId-1103322"></a><i>java.net.DatagramSocket</i> 345</p> <p class="ATOC"><a name="pgfId-1103324"></a><i>java.net.HttpURLConnection</i> 345</p> <p class="ATOC"><a name="pgfId-1103326"></a><i>java.net.InetAddress</i> 346</p> <p class="ATOC"><a name="pgfId-1103328"></a><i>java.net.MulticastSocket</i> 346</p> <p class="ATOC"><a name="pgfId-1103330"></a><i>java.net.ServerSocket</i> 346</p> <p class="ATOC"><a name="pgfId-1103332"></a><i>java.net.Socket</i> 347</p> <p class="ATOC"><a name="pgfId-1103334"></a><i>java.net.URL</i> 347</p> <p class="ATOC"><a name="pgfId-1103336"></a><i>java.net.URLConnection</i> 347</p> <p class="ATOC"><a name="pgfId-1103338"></a><i>java.net.URLClassLoader</i> 347</p> <p class="ATOC"><a name="pgfId-1103340"></a><i>java.rmi.activation.ActivationGroup</i> 347</p> <p class="ATOC"><a name="pgfId-1103342"></a><i>java.rmi.server.RMISocketFactory</i> 348</p> <p class="ATOC"><a name="pgfId-1103344"></a><i>java.security.Identity</i> 348</p> <p class="ATOC"><a name="pgfId-1103346"></a><i>java.security.IdentityScope</i> 348</p> <p class="ATOC"><a name="pgfId-1103348"></a><i>java.security.Permission</i> 348</p> <p class="ATOC"><a name="pgfId-1103350"></a><i>java.security.Policy</i> 348</p> <p class="ATOC"><a name="pgfId-1103352"></a><i>java.security.Provider</i> 348</p> <p class="ATOC"><a name="pgfId-1103354"></a><i>java.security.SecureClassLoader</i> 349</p> <p class="ATOC"><a name="pgfId-1103356"></a><i>java.security.Security</i> 349</p> <p class="ATOC"><a name="pgfId-1103358"></a><i>java.security.Signer</i> 349</p> <p class="ATOC"><a name="pgfId-1103360"></a><i>java.util.Locale</i> 349</p> <p class="ATOC"><a name="pgfId-1103362"></a><i>java.util.zip.ZipFile</i> 349</p> <h6 class="CTTOC"><a href="HTML/APPX/APPX.html#pgfId-1062179" name="pgfId-1103366">Appendix C<br> Security Manager Methods 351</a></h6> <h6 class="CTTOC"><a href="HTML/APPX/APPX.html#pgfId-1062236" name="pgfId-1103370">Appendix D<br> API Reference 355</a></h6> <div class="ATOC"> <a name="pgfId-1103372"></a><i>ActionListener</i> Interface 355</div> <div class="ATOC"> <a name="pgfId-1103374"></a><i>WindowListener</i> Interface 355</div> <div class="ATOC"> <a name="pgfId-1103376"></a><i>Graphics</i> Class 356</div> <p class="ATOC"><a name="pgfId-1103378"></a><i>Graphics2D</i> Class 356</p> <p class="ATOC"><a name="pgfId-1103380"></a><i>Book</i> Class 356</p> <p class="ATOC"><a name="pgfId-1103382"></a><i>PageFormat</i> Class 356</p> <p class="ATOC"><a name="pgfId-1103384"></a><i>Printable</i> Interface 356</p> <p class="ATOC"><a name="pgfId-1103386"></a><i>PrinterJob</i> Class 357</p> <p class="ATOC"><a name="pgfId-1103388"></a><i>Toolkit</i> Class 357</p> <p class="ATOC"><a name="pgfId-1103390"></a><i>ByteArrayOutputStream</i> Class 357</p> <p class="ATOC"><a name="pgfId-1103392"></a><i>DataOutputStream</i> Class 357</p> <p class="ATOC"><a name="pgfId-1103394"></a><i>Double</i> Class 357</p> <p class="ATOC"><a name="pgfId-1103396"></a><i>SecurityManager</i> Class 357</p> <p class="ATOC"><a name="pgfId-1103398"></a><i>System</i> Class 358</p> <p class="ATOC"><a name="pgfId-1103400"></a><i>Naming</i> Class 358</p> <p class="ATOC"><a name="pgfId-1103402"></a><i>RMISocketFactory</i> Class 358</p> <p class="ATOC"><a name="pgfId-1103404"></a><i>CallableStatement</i> Interface 358</p> <p class="ATOC"><a name="pgfId-1103406"></a><i>Connection</i> Interface 358</p> <p class="ATOC"><a name="pgfId-1103408"></a><i>DatabaseMetaData</i> Interface 359</p> <p class="ATOC"><a name="pgfId-1103410"></a><i>DriverManager</i> Class 359</p> <p class="ATOC"><a name="pgfId-1103412"></a><i>PreparedStatement</i> Interface 359</p> <p class="ATOC"><a name="pgfId-1103414"></a><i>ResultSet</i> Interface 359</p> <p class="ATOC"><a name="pgfId-1103416"></a><i>Statement</i> Interface 360</p> <p class="ATOC"><a name="pgfId-1103418"></a><i>ArrayList</i> Class 360</p> <p class="ATOC"><a name="pgfId-1103420"></a><i>Calendar</i> Class 360</p> <p class="ATOC"><a name="pgfId-1103422"></a><i>Date</i> Class 360</p> <p class="ATOC"><a name="pgfId-1103424"></a><i>Enumeration</i> Interface 361</p> <p class="ATOC"><a name="pgfId-1103426"></a><i>HashMap</i> Class 361</p> <p class="ATOC"><a name="pgfId-1103428"></a><i>Iterator</i> Interface 361</p> <p class="ATOC"><a name="pgfId-1103430"></a><i>LinkedList</i> Class 361</p> <p class="ATOC"><a name="pgfId-1103432"></a><i>List</i> Class 361</p> <p class="ATOC"><a name="pgfId-1103434"></a><i>EntityBean</i> Interface 361</p> <p class="ATOC"><a name="pgfId-1103436"></a><i>SessionBean</i> Interface 362</p> <p class="ATOC"><a name="pgfId-1103438"></a><i>UserTransaction</i> Interface 362</p> <p class="ATOC"><a name="pgfId-1103440"></a><i>RemoteObject</i> Class 362</p> <p class="ATOC"><a name="pgfId-1103442"></a><i>Cookie</i> Class 362</p> <p class="ATOC"><a name="pgfId-1103444"></a><i>HttpServlet</i> Class 362</p> <p class="ATOC"><a name="pgfId-1103446"></a><i>HttpServletRequest</i> Interface 363</p> <p class="ATOC"><a name="pgfId-1103448"></a><i>HttpServletResponse</i> Interface 363</p> <p class="ATOC"><a name="pgfId-1103450"></a><i>ServletConfig</i> Interface 363</p> <p class="ATOC"><a name="pgfId-1103452"></a><i>ServletRequest</i> Interface 363</p> <p class="ATOC"><a name="pgfId-1103454"></a><i>ServletResponse</i> Interface 363</p> <p class="ATOC"><a name="pgfId-1103456"></a><i>Box</i> Class 363</p> <p class="ATOC"><a name="pgfId-1103458"></a><i>DefaultCellEditor</i> Class 364</p> <p class="ATOC"><a name="pgfId-1103460"></a><i>JButton</i> Class 364</p> <p class="ATOC"><a name="pgfId-1103462"></a><i>JComponent</i> Class 364</p> <p class="ATOC"><a name="pgfId-1103464"></a><i>JFrame</i> Class 364</p> <p class="ATOC"><a name="pgfId-1103466"></a><i>JLabel</i> Class 364</p> <p class="ATOC"><a name="pgfId-1103468"></a><i>JScrollPane</i> Class 364</p> <p class="ATOC"><a name="pgfId-1103470"></a><i>JTable</i> Class 364</p> <p class="ATOC"><a name="pgfId-1103472"></a><i>JTree</i> Class 365</p> <p class="ATOC"><a name="pgfId-1103474"></a><i>JViewPort</i> Class 365</p> <p class="ATOC"><a name="pgfId-1103476"></a><i>ListSelectionModel</i> Interface 365</p> <p class="ATOC"><a name="pgfId-1103478"></a><i>SwingUtilities</i> Class 365</p> <p class="ATOC"><a name="pgfId-1103480"></a><i>DefaultTableCellRenderer</i> Class 365</p> <p class="ATOC"><a name="pgfId-1103482"></a><i>DefaultTableModel</i> Class 366</p> <p class="ATOC"><a name="pgfId-1103484"></a><i>TableColumn</i> Class 366</p> <p class="ATOC"><a name="pgfId-1103486"></a><i>TableColumnModel</i> Interface 366</p> <p class="ATOC"><a name="pgfId-1103488"></a><i>DefaultMutableTreeNode</i> Class 366</p> <p class="ATOC"><a name="pgfId-1103490"></a><i>TreePath</i> Class 366</p> <p class="ATOC"><a name="pgfId-1103492"></a><i>Any</i> Class 366</p> <p class="ATOC"><a name="pgfId-1103494"></a><i>IntHolder</i> Class 366</p> <p class="ATOC"><a name="pgfId-1103496"></a><i>ORB</i> Class 367</p> <p class="ATOC"><a name="pgfId-1103498"></a><i>NameComponent</i> Class 367</p> <p class="ATOC"><a name="pgfId-1103500"></a><i>NamingContext</i> Interface 367</p> <p class="ATOC"><a name="pgfId-1103502"></a><i>JNI C</i> Methods 367</p> <h6 class="CTTOC"><a name="pgfId-1103503"></a>Index 369</h6> <div class="CT"> <a name="pgfId-1103504"></a>Preface</div> <div class="Body"> <a name="pgfId-1103505"></a>As an experienced developer on the Java™ platform, you undoubtedly know how fast moving and comprehensive the platform is. Its many application programming interfaces (APIs) provide a wealth of functionality for all aspects of application and system-level programming. Although there are many good books and online documents that detail all the parameters of an API, finding a book that brings these APIs together and uses them to solve an advanced business problem has always been a challenge.</div> <div class="Body"> <a name="pgfId-1103506"></a>This book fills that void by presenting the design, development, test, deployment, and debugging phases for an enterprise-worthy auction application. It is not purely a reference for the Java APIs, but a practical, hands-on guide to building successful projects with the Java platform. Like any good handbook about your car or house, it includes an entire section on what to do if things do not go so well. You will find sections that detail everything from what steps to take when troubleshooting bugs to tips on performance.</div> <p class="Body"><a name="pgfId-1103507"></a>The example application does not cover every possible programming scenario, but it explores many common situations and leaves you with a solid base of knowledge so that you can go on and use the Java platform to design, build, debug, and deploy your own solutions. The use of one application throughout the book provides a tool to help you fast-track learning new features. For example, you gain a working knowledge of RMI in one section, and the following section on CORBA explains the similarities and differences between the two.</p> <p class="Body"><a name="pgfId-1103508"></a>You can download the example application source code and explore more information on any topic presented here by visiting the Java Developer ConnectionSM (JDC) Web site at <i>http://developer.java.sun.com/developer</i> , or the main Java Web site at <i>http://java.sun.com</i> .</p> <p class="Body"><a name="pgfId-1103509"></a>The example for this book is an auction application, chosen because of the growing popularity of and interest in Web-based electronic commerce. The example runs on a real application server using Enterprise JavaBeans™ technology, which is particularly well-suited to electronic commerce applications. Later chapters expand upon the core example by adding advanced functionality, improvements, and alternative solutions to do some of the things you get for free when you use the Enterprise JavaBeans platform. Additional topics important to applications development, such as security, transaction management, and performance tuning, are also presented.</p> <p class="Body"><a name="pgfId-1103510"></a>This book is for developers with more than a beginning-level understanding of writing programs in the Java programming language. The example application is written with the Java 2 platform APIs and explained in terms of functional hows and whys. So if you need help installing the Java platform, setting up your environment, or getting your first application to work, you should first read a more introductory book, such as Essentials of the Java Programming Language: A Hands-On Guide [Paw00] or The Java Tutorial, Second Edition [Cam98].</p> <h4 class="A"><a name="pgfId-1103511"></a>Acknowledgments</h4> <div class="Body"> <a name="pgfId-1103512"></a>We would like to thank Tony Squier for writing the code for the Thread Pooling section and the Web session code for the Servlets section. Tony also helped on the initial design and content, and with Joe Sam Shirah came up with the idea for a book like this. We also would like to thank Margaret Ong for her encouragement in getting this book to publication and the staff at Addison-Wesley for their support, especially Julie DiNicola. In addition, special thanks go out to the following Addison-Wesley reviewers: Joshua Engel, Howard Harkness, Susanne Hupfer, Paul Brinkley, Murali Murugan, Bob Bell, Eric Vought, and Armin Begtrup.</div> <div class="Body"> <a name="pgfId-1103513"></a>Special thanks to Isaac Elias, Daniel Liu, Mark Horwath, Satya Dodda, and Mary Dageforde for their contributions to the advanced examples and to all the Java Developer Connection members who sent in suggestions and corrections. And thanks also go to Mary Aline who copyedited some of the examples used in this book when they first appeared in the JDC. Also, the Printing Graphics in Project Swing and Writing a Security Manager sections used code adapted from The Java Tutorial (by Mary Campione and Kathy Walrath) and The Java Tutorial Continued (by Mary Campione, Kathy Walrath, Alison Huml, and the Tutorial Team).</div> <div class="Body"> <a name="pgfId-1103514"></a>We would also like to thank the following people who also reviewed and checked the book for accuracy: Rama Roberts, Erik Larsen, Phil Race, and Merwyn Welcome.</div> <p class="Body"><a name="pgfId-1103515"></a>Finally, thanks to our families for their patience and encouragement: Nicci Austin and Jeffrey Pawlan. </body></html>
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -