当前位置: 代码迷 >> Java Web开发 >> 基于http协议接口公布和接口服务器部署
  详细解决方案

基于http协议接口公布和接口服务器部署

热度:4515   发布时间:2013-02-25 21:12:48.0
基于http协议接口发布和接口服务器部署
我用java写了一系列的接口方法供别人调用
假如接口地址是类似于http://218.57.146.190:8088/css/hytj这样的一个地址
我的请求参数是一个xml格式的字符串
请各位帮忙下我的那个程序要怎么发布和部署?
程序是打算所有的接口请求都只通过请求上面那个地址
然后程序根据通过解析xml格式的字符串判断用户请求的具体方法,根据具体的方法
调用实际的业务逻辑处理,并返回响应结果。
是不是需要安装和提供一个apache http server,因为程序全是接口
是不是就可以省去tomcat之类的容器?
请各位尽量说的具体一点吧,我现在还只知道怎么调用别人发布的类似这样的服务
不太清楚自己发布这样服务的方法和流程

------解决方案--------------------------------------------------------
如果你是用j2ee实现的

那你肯定离不开tomcat之类的web容器 

apache http server 只能解析静态文件

你既然会开发 发布不会?
------解决方案--------------------------------------------------------
搜一下如何创建、发布webservice之类的
------解决方案--------------------------------------------------------
WebService可以实现,不过你用Servlet也可以实现,调用Service方法就可以了,这个方法接收的是个流
public void service(HttpServletRequest request, HttpServletResponse response)
throws ServletException, IOException
{
request.setCharacterEncoding("UTF-8");
InputStream input = request.getInputStream();
String xml = OperateUtil.file2String(input, "UTF-8");
}
/** 
* 读取输入流为一个内存字符串,保持文件原有的换行格式 

* @param in 输入流 
* @param charset 文件字符集编码 
* @return 文件内容的字符串 
*/ 
public static String file2String(InputStream in, String charset) { 
StringBuffer sb = new StringBuffer(); 
try { 
LineNumberReader reader = new LineNumberReader(new BufferedReader(new InputStreamReader(in, charset))); 
String line; 
while ((line = reader.readLine()) != null) { 
sb.append(line).append(System.getProperty("line.separator")); 

reader.close(); 
} catch (UnsupportedEncodingException e) { 
log.error("读取文件为一个内存字符串失败,失败原因是使用了不支持的字符编码" + charset, e); 
} catch (IOException e) { 
log.error("读取文件为一个内存字符串失败,失败原因是读取文件异常!", e); 

return sb.toString(); 
这个input就是你的那个xml文件,你的http://218.57.146.190:8088/css/hytj地址如果可以弄成servlet的话就可以这么做了,不过你要把xml字符转成流传到这个方法里面来,然后怎么xml解析出来你得自己找方法.网上一大把。WebService的流程复杂一点,要配置的东西多些,不过更适合你的需求。
------解决方案--------------------------------------------------------
探讨
回复4楼,你说的这个方法我之前也考虑过,但是地址实在是不好改变,
格式要按照那个格式来。
我就还没想明白请求这个地址之后会是一个什么样的服务,
鉴于xfire等自带的接口在xml里面配置对应的对外暴露的接口地址。
其余的xfire都已经帮你弄好,现在是所有的都要自己弄,不清楚原理,不知道怎么弄
我现在还是没明白http://218.57.146.190:8088/css/hytj
这样……

------解决方案--------------------------------------------------------
探讨
回复4楼,你说的这个方法我之前也考虑过,但是地址实在是不好改变,
格式要按照那个格式来。
我就还没想明白请求这个地址之后会是一个什么样的服务,
鉴于xfire等自带的接口在xml里面配置对应的对外暴露的接口地址。
其余的xfire都已经帮你弄好,现在是所有的都要自己弄,不清楚原理,不知道怎么弄
我现在还是没明白http://218.57.146.190:8088/css/hytj
这样……

------解决方案--------------------------------------------------------
楼主只是想发布一个很简单WebService么?可以通过 注解,直接利用Java自身能力完成,如下:

Java code
import javax.jws.WebMethod;import javax.jws.WebService;import javax.jws.soap.SOAPBinding;import javax.xml.ws.Endpoint;@WebService(targetNamespace = "http://localhost:8080/ws")@SOAPBinding(style = SOAPBinding.Style.RPC)public class JavaWS {    @WebMethod    public String hello() {        System.out.println("hello()");        return "Hello!";    }    @WebMethod    public String echo(String msg) {        System.out.println("echo(" + msg + ")");        return msg;    }    public static void main(String[] args) {        Endpoint.publish("http://localhost:8080/ws", new JavaWS());    }}
  相关解决方案