基于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的流程复杂一点,要配置的东西多些,不过更适合你的需求。
[解决办法]
[解决办法]
[解决办法]
楼主只是想发布一个很简单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()); }}
[解决办法]
so easy!!!
直接写个servlet 或者action
里面数据查下处理
最后把查下的数据拼接xml格式的字符串
写出去
把这个项目发布到外网
别人通过地址:就能得到你反悔的xml格式的字符串;进行解析了。
至于如何发布;传到linux 安装tomcat jdk
配置host域名
启动tomcat。
完毕。
[解决办法]
jdk自己就有一个server provider,不是什么非常大的访问压力的话直接用这个。
摘抄一段:
Java 6 还提供了一个轻量级的纯 Java Http 服务器的实现。下面是一个简单的例子:
public static void main(String[] args) throws Exception{
HttpServerProvider httpServerProvider = HttpServerProvider.provider();
InetSocketAddress addr = new InetSocketAddress(7778);
HttpServer httpServer = httpServerProvider.createHttpServer(addr, 1);
httpServer.createContext("/myapp/", new MyHttpHandler());
httpServer.setExecutor(null);
httpServer.start();
System.out.println("started");
}
static class MyHttpHandler implements HttpHandler{
public void handle(HttpExchange httpExchange) throws IOException {
String response = "Hello world!";
httpExchange.sendResponseHeaders(200, response.length());
OutputStream out = httpExchange.getResponseBody();
out.write(response.getBytes());
out.close();
}
}
然后,在浏览器中访问 http://localhost:7778/myapp/,我们得到:balabala....
[解决办法]
也可以使用jetty的 嵌 入 式 容器。通过 代码 开启 http 服务。