详细参考:http://felix.apache.org/documentation/subprojects/apache-felix-http-service.html
1.框架使用jetty框架,这个类似appace tomcat
2.假如使用org.apache.felix.http.bundle这个需要额外配置http server功能开启的,否则使用单个bundle
3.服务端的例子
package server; import java.io.BufferedInputStream; import java.io.BufferedOutputStream; import java.io.File; import java.io.FileOutputStream; import java.io.IOException; import java.io.InputStream; import java.util.Enumeration; import java.util.HashMap; import java.util.Map; import javax.servlet.ServletException; import javax.servlet.http.HttpServlet; import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletResponse; public class HttpServer extends HttpServlet { private static final String CONTENTFORM = "application/x-www-form-urlencoded"; @Override protected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException { resp.getWriter().write("Hello World"); resp.getWriter().flush(); resp.getWriter().close(); } @Override protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { System.out.println("..........HttpServer doPost begin..........."); // response.setContentType("text/html;charset=utf-8"); request.setCharacterEncoding("utf-8"); String contentType = request.getContentType(); //check param begin Map<String, String> map = new HashMap<String, String>(); Enumeration headerNames = request.getHeaderNames(); while (headerNames.hasMoreElements()) { String key = (String) headerNames.nextElement(); String value = request.getHeader(key); map.put(key, value); } System.out.println(map); String fileAbsolutePath = map.get("filefullpath"); String fileFullPath = "f:/" + fileAbsolutePath == null?"nofilepath.txt":fileAbsolutePath; File testFp = new File(fileFullPath); if(!testFp.exists()){ testFp.getParentFile().mkdirs(); } //check end //表单项post上来 if(contentType.equals( CONTENTFORM )) { } else //post 文件 { InputStream is = request.getInputStream(); long current = 0; BufferedInputStream bis = null; BufferedOutputStream bos = null; try { FileOutputStream fileOutputStream = null; fileOutputStream = new FileOutputStream(fileFullPath, true);//filename bis = new BufferedInputStream(is); bos = new BufferedOutputStream(fileOutputStream); byte[] tmp = new byte[4096]; int len; while ((len = bis.read(tmp)) != -1) { bos.write(tmp, 0, len); current += len; } bos.flush(); bis.close(); bos.close(); } finally { } } /* PrintWriter out = response.getWriter(); out.flush(); out.close();*/ System.out.println("..........HttpServer doPost end..........."); } }
3.active中注册服务
Hashtable props = new Hashtable(); props.put("alias", "/HttpServer"); props.put("init.message", "Hello World!"); this.registration = context.registerService(Servlet.class.getName(), new HttpServer(), props);
4.默认端口为8080