日期:2014-05-17  浏览次数:20890 次

基于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!"