微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

使用NetBeans开发WebService

本文旨在介绍如何使用NetBeans开发一个Web服务。

OS:windows Xp

java IDE:NetBeans 7.0.1

日志记录:log4j

数据库sqlserver2000

一、建立Web项目

1,新建JAVA Web项目

如图-1所示,选择“下一步”

图-1

2,在图-2中填入项目名称,选择正确的项目位置,然后点击下一步。

图-2

3,选择java EE版本、服务器

(服务器需要提前在服务器视图中进行定义,我使用的tomcat6.0),如图-3所示,选择“完成”,

图-3

4,图-4显示已经建立一个web项目,meta-inf中的context.xml文件中可以编写数据库连接信息。

如果在tomcat中部署Web项目并且使用了context文件存放数据库连接信息,那么有两种方法

(1)程序会首先在meta-inf文件夹中去寻找context.xml文件

(2)如果此文件不存在,那么程序将会到TOMCAT_HOME/conf/context.xml中去寻找相关信息。

建议大家在使用Meta_INF中的context.xml文件,这是被推荐的方法,但这种方法需要在web.xml中添加相关配置信息,下面将会讲到。

图-4

5,建立源文件包com.boss

(悲催,这个图也被截取下来了??好吧,那就写上吧)

图-5

6,在Web项目的基础上建立Web服务,在项目上右键--新建--Web服务,弹出图-7所示

图-6

7,填写Web服务类,选择服务类存在的包位置,点击“完成”

图-7

8,tomcat不支持JSR-109部署方式(至于这是个什么方式我也不清楚,既然不支持那就点击“是吧”)

图-8

9,建立了Web服务的总体显示图,服务类和服务方法都采用了注释的方法

图-9

10,可以点击类的“设计”按钮,然后添加你需要添加的服务方法

图-10

 

二、添加日志服务

(1)下载log4j的jar包,加入项目中。

(2)在com.boss包中加入日志服务类,代码如下:

[java]  view plain copy
  1. package com.boss;  
  2.   
  3. import java.io.File;  
  4. import java.io.IOException;  
  5.   
  6. import javax.servlet.servletexception;  
  7. import javax.servlet.http.HttpServlet;  
  8. import javax.servlet.http.HttpServletRequest;  
  9. import javax.servlet.http.HttpServletResponse;  
  10. import org.apache.log4j.PropertyConfigurator;  
  11. public class InitLog4j extends HttpServlet implements IConstStr {  
  12.     private static final long serialVersionUID = 1L;  
  13. void destroy() {  
  14.         super.destroy();  
  15.     }  
  16. void doGet(HttpServletRequest request, HttpServletResponse response)  
  17.             throws servletexception, IOException {  
  18. void init() throws servletexception {  
  19.         String basePath = getServletContext().getRealPath("/");  
  20.         String confFile = getinitParameter("log4j");  
  21.         String logPathName = basePath + "log";  
  22.         File f = new File(logPathName);  
  23. if (!f.isDirectory()) {  
  24.             f.mkdir();  
  25.         }  
  26.         if (confFile != null) {  
  27.             PropertyConfigurator.configure(basePath + confFile);  
  28.         } else {  
  29.             System.out.println(LOGCONFFILENOTEXISTS);  
  30.         }  
  31.     }  
  32. }  


 

(3)在WEB-INF文件夹中建立log4j.properties文件(此文件可以在web.xml进行配置),加入下列信息

copy
    log4j.rootLogger=INFO,Rolling_file,console  
  1. #表示console的输出是控制台输出  
  2. log4j.appender.console=org.apache.log4j.ConsoleAppender  
  3. log4j.appender.console.layout=org.apache.log4j.PatternLayout  
  4. log4j.appender.console.ConversionPattern=%d - %c -%-4r [%t] %-5p %c %x - %m%n  
  5. #表示Rolling_file输出是滚动文件输出  
  6. Rolling_filelog4j.appender.Rolling_file=org.apache.log4j.RollingFileAppender  
  7. log4j.appender.Rolling_file.File=d:/TedaPortalService_log.html  
  8. log4j.appender.Rolling_file.MaxFileSize=100KB  
  9. log4j.appender.Rolling_file.MaxBackupIndex=1  
  10. log4j.appender.Rolling_file.layout=org.apache.log4j.HTMLLayout  
  11. log4j.appender.Rolling_file.layout.ConversionPattern=%-d{yyyy-MM-dd HH:mm:ss} [%c]-[%p] %m%n  
  12. #表示日志输出级别是INFO级别,也就是优先级大约INFO的可以输出包括INFO,WARN,ERROR,FATAL  
  13. log4j.logger.com.foo=INFO  
(4)在web.xml中加入下面的代码
copy
    <servlet>  
  1.     <servlet-name>InitLog4j</servlet-name>    
  2.         <servlet-class>com.boss.InitLog4j</servlet-class>  
  3.         <init-param>  
  4.             <param-name>log4j</param-name>  
  5.             <param-value>WEB-INF/log4j.properties</param-value>  
  6.         </init-param>    
  7.         <load-on-startup>1</load-on-startup>  
  8. </servlet>  
  9. <!--  
  10. InitLog4j是起一个servlet名字,和提供日志服务的类名一致。  
  11. com.boss.InitLog4j,这个要根据你日志服务类的完整限定名进行更改.  
  12. <param-name>log4j</param-name>这个参数名和代码中String confFile = getinitParameter("log4j")一致,也就是代码中要寻找xml文件名称log4j的信息,所以二者要一致  
  13. <param-value>WEB-INF/log4j.properties</param-value>,这个参数列出log4j配置文件的位置  
  14. -->  

 

(5)至此,log4j配置就完成,在代码中声明,然后调用即可

三、数据库连接信息配置

(1)连接sqlserver2000,在context.xml文件中加入如下的代码

[sql]  copy
    <?xml version="1.0" encoding="UTF-8"?>  
  1. <Context docBase="Test" path="/Test" reloadable="true">  
  2. <WatchedResource>WEB-INF/web.xml</WatchedResource>  
  3. <Resource name="jdbc/Test" auth="Container" type="javax.sql.DataSource"  
  4.                maxActive="100" maxIdle="30" maxWait="10000"  
  5.                username="sa" password="sa" driverClassName="com.microsoft.jdbc.sqlserver.sqlServerDriver"  
  6.                url="jdbc:microsoft:sqlserver://127.0.0.1:1433;DatabaseName=Test" />  
  7. </Context>  


(2)在java源代码中加入数据库建立连接和关闭连接的相关类

copy
    package com.boss.configuration;  
  1. import java.sql.Connection;  
  2. import java.sql.ResultSet;  
  3. import java.sql.sqlException;  
  4. import java.sql.Statement;  
  5. import javax.naming.Context;  
  6. import javax.naming.InitialContext;  
  7. import javax.naming.NamingException;  
  8. import javax.sql.DataSource;  
  9. import org.apache.log4j.Logger;  
  10. class JdbcUtilsSing static Logger logger = Logger.getLogger(JdbcUtilsSing.class);  
  11.     private Connection conn = null;  
  12. static JdbcUtilsSing instance = null;  
  13. private JdbcUtilsSing() {  
  14. static JdbcUtilsSing getInstance() {  
  15. if (instance == synchronized (JdbcUtilsSing.class) {  
  16.                                      instance = new JdbcUtilsSing();  
  17.                 }  
  18.             }  
  19. return instance;  
  20. public Connection getConnection() throws sqlException {  
  21.         Context ctx =          DataSource ds =          Context envctx = try {  
  22.             ctx = new InitialContext();  
  23.             logger.info(DBINITIALCONTEXTSUCC);  
  24. catch (NamingException e) {  
  25.             logger.info(DBINITIALCONTEXTFAIL);  
  26.             throw new DaoException(e.getMessage(), e);  
  27.             envctx = (Context) ctx.lookup("java:comp/env");  
  28.             logger.info(DBJAVAENVSUCC);  
  29.             logger.info(DBJAVAENVFAIL);  
  30.             ds = (DataSource) envctx.lookup("jdbc/Test");//这里的jdbc/Test名字和context.xml文件中写的Resource name是一致的。  
  31.             logger.info(DBJNdisUCC);  
  32.             logger.info(DBJNDIFAIL);  
  33.             conn = ds.getConnection();  
  34.             logger.info(DBCONNSUCC);  
  35. catch (sqlException e) {  
  36.             logger.info(DBCONNFAIL);  
  37. return conn;  
  38. void dbFree(ResultSet rs, Statement st, Connection conn) {  
  39. try {  
  40. if (rs != null)  
  41.                     rs.close();  
  42.                     logger.info(RSCLOSESUCC);  
  43.                 } catch (sqlException e) {  
  44.                     logger.info(RSCLOSEFAIL);  
  45.                              } finally {  
  46.                 if (st !=                                               st.close();  
  47.                         logger.info(STCLOSESUCC);  
  48.                     }                          logger.info(STCLOSEFAIL);  
  49.                                              }  
  50.             } if (conn != null)  
  51.                         conn.close();  
  52.                         logger.info(DBCONNCLOSESUCC);  
  53.                     }                          logger.info(DBCONNCLOSEFAIL);  
  54.                                              }  
  55.             }  
  56. (3)加入其他类(属于自定义的,不一定按照此种写法)

    copy
    class DaoException extends RuntimeException {  
  1. public DaoException() {  
  2. public DaoException(String message) {  
  3. super(message);  
  4. public DaoException(Throwable cause) {  
  5. super(cause);  
  6. public DaoException(String message, Throwable cause) {  
  7. super(message, cause);  
  8. }  


 

copy
    interface IConstStr {  
  1.     String DBINITIALCONTEXTSUCC = "初始化Context文件成功\n";  
  2.     String DBINITIALCONTEXTFAIL = "初始化Context文件失败\n";  
  3.     String DBJAVAENVSUCC = "系统提取comp/env成功\n";  
  4.     String DBJAVAENVFAIL = "系统提取comp/env失败\n";  
  5.     String DBJNdisUCC = "初始化JNDI成功";  
  6.     String DBJNDIFAIL = "初始化JNDI失败";  
  7.     String DBCONNSUCC = "数据库连接建立成功\n";  
  8.     String DBCONNFAIL = "数据库连接建立失败\n";  
  9.       
  10.     String FUNINVOKESUCC = "函数%s调用成功\n";  
  11.     String FUNINVOKEFAIL = "函数%s调用失败\n";  
  12.       
  13.     String RSCLOSESUCC = "数据集关闭成功\n";  
  14.     String RSCLOSEFAIL = "数据集关闭失败\n";  
  15.     String STCLOSESUCC = "sql语句关闭成功\n";  
  16.     String STCLOSEFAIL = "sql语句关闭失败\n";  
  17.     String DBCONNCLOSESUCC = "数据库连接关闭成功\n";  
  18.     String DBCONNCLOSEFAIL = "数据库连接关闭失败\n";  
  19.     String LOGCONFFILELOADSUCC = "Log4j配置文件载入成功";  
  20.     String LOGCONFFILELOADFAIL = "Log4j配置文件载入失败";  
  21.     String LOGCONFFILENOTEXISTS = "Log4j配置文件不存在";  
  22. 一个带有日志输出的web服务已经建立,下一步部署在web服务容器中即可

    版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 [email protected] 举报,一经查实,本站将立刻删除。

    相关推荐