Jersey
In my situation, Our team want to get chinese text tokenized result by JCSEG Tokenizer. After some thoughts, I dediced to provide them a restful api to meet them demands. The jersey framwork is the first
option to my situation.
Steps
1. In Eclipse, create a dynamic web project.
2. download jersey-archive-1.18.zip and unzip it
3. import all jars in jersey-archive-1.18/lib to the lib dir of above created web project
4. Create three class
package com.inoknok.tokenizer.rest; import java.io.IOException; import javax.ws.rs.GET; import javax.ws.rs.Path; import javax.ws.rs.PathParam; import javax.ws.rs.core.Response; import org.lionsoul.jcseg.core.JcsegException; @Path("/token") public class TokenizerService { @GET @Path("/{name}") public Response getMessage(@PathParam("name") String name) throws JcsegException, IOException { // JcsegTest demo = new JcsegTest(); // demo.segment(name); String outMsg; outMsg = Tool.demo.segment(name); return Response.status(200).entity(outMsg).build(); } }
package com.inoknok.tokenizer.rest; import java.io.IOException; import java.io.StringReader; import org.lionsoul.jcseg.core.ADictionary; import org.lionsoul.jcseg.core.DictionaryFactory; import org.lionsoul.jcseg.core.ISegment; import org.lionsoul.jcseg.core.IWord; import org.lionsoul.jcseg.core.JcsegException; import org.lionsoul.jcseg.core.JcsegTaskConfig; import org.lionsoul.jcseg.core.SegmentFactory; public class JcsegTest { ISegment seg = null; public JcsegTest() { // JcsegTaskConfig config = new JcsegTaskConfig(); String propertyFilePath = "/path/to/jcseg.properties"; JcsegTaskConfig config = new JcsegTaskConfig(propertyFilePath); ADictionary dic = DictionaryFactory.createDefaultDictionary(config); try { seg = SegmentFactory.createJcseg(JcsegTaskConfig.COMPLEX_MODE, new Object[] { config, dic }); } catch (JcsegException e) { // TODO Auto-generated catch block e.printStackTrace(); } } public String segment(String str) throws IOException { StringBuffer sb = new StringBuffer(); sb.append("{Result:["); // seg.setLastRule(null); IWord word = null; boolean isFirst = true; seg.reset(new StringReader(str)); while ((word = seg.next()) != null) { if (isFirst) { sb.append(word.getValue()); isFirst = false; } else { sb.append(","); sb.append(word.getValue()); } word = null; } sb.append("]}"); return sb.toString(); } }
package com.inoknok.tokenizer.rest; public class Tool { public static JcsegTest demo = new JcsegTest(); }
The web.xml content is
<?xml version="1.0" encoding="UTF-8"?> <web-app xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns="http://java.sun.com/xml/ns/javaee" xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd" id="WebApp_ID" version="2.5"> <display-name>InokTokenizer</display-name> <display-name>REST Web Application Demo</display-name> <servlet> <servlet-name>jersey-serlvet</servlet-name> <servlet-class>com.sun.jersey.spi.container.servlet.ServletContainer</servlet-class> <init-param> <param-name>com.sun.jersey.config.property.packages</param-name> <param-value>com.inoknok.tokenizer.rest</param-value> </init-param> </servlet> <servlet-mapping> <servlet-name>jersey-serlvet</servlet-name> <url-pattern>/*</url-pattern> </servlet-mapping> <welcome-file-list> <welcome-file>index.html</welcome-file> </welcome-file-list> </web-app>
5. deploy the project to tomcat6 or tomcat7
6. you can access the source by curl
curl http://localhost:8080/InokTokenizer/token/world-bes,hello,google,baidu
http://www.tuicool.com/articles/2Y3iue
http://www.ibm.com/developerworks/cn/web/wa-aj-tomcat/
http://blog.csdn.net/zztfj/article/details/7608991
http://www.ibm.com/developerworks/cn/xml/x-agaviREST/
jersey bulde jar download url : http://www.java2s.com/Code/Jar/j/jersey-bundle.htm
https://jersey.java.net/documentation/latest/user-guide.html
Java servlet
http://tutorials.jenkov.com/java-servlets/web-xml.html
curl
http://www.cnblogs.com/-clq/archive/2012/01/29/2330827.html
相关推荐
7. **API支持**:如果RST专业版是一个库或服务,那么它可能提供了API接口,让开发者可以将RST处理集成到自己的应用程序中。 8. **培训和支持**:专业版通常提供更详细的文档、视频教程和专业的技术支持,帮助用户更...
2. **构建TCP数据包**:利用libpcap提供的API,如`pcap_datalink()`和`pcap_pkthdr`结构体,你可以创建一个包含RST标志的TCP报文段。这需要设置源和目的IP地址、端口号,以及TCP头部的RST标志位(在TCP标志字段中...
支持的解析器当前,我们支持以下RST解析器,这些解析器作为Docker容器提供,带有REST API,并在RST-DT上进行了预培训: HILDA(Hernault等,2010)[仓库] [ ] HILDA本身只能从,因此我们不能提供自动构建,而只能...
8. **系统API接口**:如果涉及到硬件层面的交互,可能需要了解操作系统提供的系统级API,如通过Windows API在Windows系统上执行特定操作。 综上所述,"test_RST_phyOs.py"这个文件可能是为了测试和恢复物理操作系统...
更复杂但更强大的后处理 API。 PyDPF-Post:流线型和简化的 DPF 后处理。更高级别的包和用途ansys-dpf-core。 旧版 PyMAPDL 阅读器:旧版结果文件阅读器。支持从 MAPDL v14.5 到当前版本的结果文件。
- `README.md` 或 `README.rst`:项目简介和使用指南。 - `sqlalchemy_jsonapi` 目录:包含库的主要代码和模块。 - `__init__.py`:初始化模块,通常包含导出的公共接口。 - `models.py`、`resources.py`、`...
云原生(Cloud Native)是一种构建和运行应用程序的方法,强调微服务、容器化、声明式API以及持续交付等原则。在云原生环境中,Python库如db2rst可以帮助开发者快速构建和部署文档系统,特别是在需要动态更新数据库...
4. `README.md`或`README.rst`:提供关于库的介绍、使用方法和安装指南。 5. `requirements.txt`:列出了库运行所需的Python依赖项。 标签中提到了"zookeeper"、"分布式"和"云原生",这暗示了"yotpo-api"可能涉及...
Sphinx是一种强大的文档生成工具,广泛用于创建高质量的技术文档,如API参考、教程和项目文档。它支持自定义布局、主题以及丰富的交叉引用和扩展。而RST是一种文本格式,被Sphinx和其他许多文档工具广泛接受,它允许...
4. `README.md`或`README.rst`:介绍apispec库的用途、安装方法、使用示例和贡献指南等信息。 5. `CHANGES`或`CHANGELOG`:记录apispec各个版本的更新内容。 使用apispec,开发者可以轻松地将API的元数据与代码分离...
2. **文档**:可能有一个`docs`目录,其中包含了关于如何使用该库的文档,通常是Markdown或RST格式,有时还会包含HTML版本。 3. **示例**:库的示例代码可能位于`examples`或`samples`目录下,展示了如何初始化...
3. `README.md`或`README.rst`:包含库的介绍、安装指南、示例代码以及使用注意事项。 4. `LICENSE`:记录了库的许可协议,通常为MIT、Apache 2.0等开源协议,规定了库的使用、修改和分发条件。 5. `requirements....
6. `README.md`或`README.rst`:提供库的简要介绍和使用指南。 安装TwitterAPI库,可以通过Python的pip工具完成,命令如下: ```bash pip install TwitterAPI-2.1.12.tar.gz ``` 使用TwitterAPI库,首先需要获取...
2. **文档**:可能包括`.md`或`.rst`格式的文件,提供了API的使用指南和示例。 3. **示例**:实际的Python脚本,展示了如何调用API进行各种操作。 4. **测试**:`.py`文件用于测试API的功能,确保其正确工作。 5. **...
4. `README.md`或`README.rst`:项目文档,描述如何安装和使用这个库。 5. `LICENSE`:库的开源许可协议。 6. 可能还包括其他元数据文件,如`.gitignore`、`requirements.txt`或`CHANGELOG.md`等。 这个库的重要性...
2. `README.md`或`README.rst`:这是项目说明文件,提供了库的介绍、安装指南、使用示例和贡献说明等内容。 3. `LICENSE`:描述了库的许可协议,定义了用户可以如何使用、修改和分发代码。 4. `requirements.txt`:...
2. `README.md`或`README.rst`:通常包含项目简介、安装指南、使用示例和贡献者信息等。 3. `LICENSE`:指定项目的许可协议,决定用户可以如何使用和分发代码。 4. `src/`或`fastapi_login/`:存放实际的源代码,...
2. `README.md`或`README.rst`:通常包含项目的介绍、安装指南、使用示例以及贡献者信息等。 3. `LICENSE`:文件中包含了该项目的许可协议,规定了可以如何使用、修改和分发这个软件。 4. `ontap_api_wrapper`目录...
4. `README.md`或`README.rst`:通常包含库的简介、安装指南、使用示例等信息。 5. `LICENSE`:库的授权协议,规定了使用和分发的条件。 6. `requirements.txt`:列出了库运行所需的依赖包及其版本。 vade_api库的...
如果超时或收到RST(复位)包,可能表示目标未响应或不可达。 2. **UDP数据包** - 虽然UDP(User Datagram Protocol)不保证数据传输的可靠性,但也可以发送一个UDP数据包到目标IP并检查是否接收到响应,以此判断IP...