好吧,所以我不能让JerseyGuice的HelloWorld为我的生活工作。我肯定我错过了一些简单而愚蠢的东西,所以我要把这些都抛在脑后:
它应该通过Maven命令行运行,如:mvn tomcat7: run
它应该回应:http://localhost/great/stuff
波姆。xml:(运行配置文件位于最底部)
<project xmlns="http://maven.apache.org/POM/4.0.0">
<groupId>HelloWorldFromJerseyGuice</groupId>
<artifactId>HelloWorldFromJerseyGuice</artifactId>
version>0.0.1-SNAPSHOT</version>
<packaging>war</packaging>
<properties>
<project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
<common.core.lib.version>0.15.0</common.core.lib.version>
<common.codec.version>1.6</common.codec.version>
<http.lib.version>0.17.0</http.lib.version>
<jackson.version>2.6.0</jackson.version>
<jersey.version>1.19</jersey.version>
<logback.version>3.0.0</logback.version>
<tomcat.port>8889</tomcat.port>
<xmlJaxbVersion>2.2.3</xmlJaxbVersion>
<ribbon.version>0.3.13</ribbon.version>
<context.root>helloworldservice</context.root>
<swagger.version>0.54.0</swagger.version>
<skipITs>true</skipITs>
</properties>
<dependencies>
<!-- https://mvnrepository.com/artifact/com.sun.jersey/jersey-bundle -->
<dependency>
<groupId>com.sun.jersey</groupId>
<artifactId>jersey-bundle</artifactId>
<version>${jersey.version}</version>
</dependency>
<!-- https://mvnrepository.com/artifact/com.sun.jersey.contribs/jersey-guice -->
<dependency>
<groupId>com.sun.jersey.contribs</groupId>
<artifactId>jersey-guice</artifactId>
<version>1.19.4</version>
</dependency>
<dependency>
<groupId>org.apache.commons</groupId>
<artifactId>commons-lang3</artifactId>
<version>3.0</version>
</dependency>
<dependency>
<groupId>org.apache.httpcomponents</groupId>
<artifactId>httpclient</artifactId>
<version>4.5.3</version>
</dependency>
<dependency>
<groupId>joda-time</groupId>
<artifactId>joda-time</artifactId>
<version>2.8.1</version>
</dependency>
<!-- Use Guava for common utilities -->
<dependency>
<groupId>com.google.guava</groupId>
<artifactId>guava</artifactId>
<version>15.0</version>
</dependency>
<!-- This dependency is required for tomcat7:run directives via Maven -->
<dependency>
<groupId>javax.servlet</groupId>
<artifactId>servlet-api</artifactId>
<version>2.4</version>
<scope>provided</scope>
</dependency>
<dependency>
<groupId>org.ow2.asm</groupId>
<artifactId>asm</artifactId>
<version>5.0.4</version>
</dependency>
<dependency>
<groupId>org.ow2.asm</groupId>
<artifactId>asm-all</artifactId>
<version>5.0.4</version>
</dependency>
<dependency>
<groupId>org.apache.xbean</groupId>
<artifactId>xbean-finder</artifactId>
<version>3.17</version>
</dependency>
<dependency>
<groupId>org.apache.xbean</groupId>
<artifactId>xbean-bundleutils</artifactId>
<version>3.17</version>
</dependency>
<!-- Use JUnit for unit and integration tests -->
<dependency>
<groupId>junit</groupId>
<artifactId>junit</artifactId>
<version>4.12</version>
<scope>test</scope>
</dependency>
<!-- Use Mockito for mock object support in unit tests -->
<dependency>
<groupId>org.mockito</groupId>
<artifactId>mockito-core</artifactId>
<version>1.9.5</version>
<scope>test</scope>
</dependency>
<dependency>
<groupId>io.rest-assured</groupId>
<artifactId>rest-assured</artifactId>
<version>3.0.3</version>
<scope>test</scope>
</dependency>
<dependency>
<groupId>commons-lang</groupId>
<artifactId>commons-lang</artifactId>
<version>2.6</version>
</dependency>
<dependency>
<groupId>org.codehaus.jackson</groupId>
<artifactId>jackson-core-asl</artifactId>
<version>1.9.11</version>
</dependency>
<dependency>
<groupId>org.hamcrest</groupId>
<artifactId>hamcrest-core</artifactId>
<version>1.3</version>
<scope>test</scope>
</dependency>
<dependency>
<groupId>javax.xml.bind</groupId>
<artifactId>jaxb-api</artifactId>
<version>${xmlJaxbVersion}</version>
</dependency>
<dependency>
<groupId>org.jvnet.jaxb2_commons</groupId>
<artifactId>jaxb2-basics-runtime</artifactId>
<version>0.6.3</version>
</dependency>
<!-- Apache commons -->
<dependency>
<groupId>commons-io</groupId>
<artifactId>commons-io</artifactId>
<version>2.4</version>
</dependency>
<dependency>
<groupId>commons-codec</groupId>
<artifactId>commons-codec</artifactId>
<version>${common.codec.version}</version>
</dependency>
<dependency>
<groupId>org.apache.commons</groupId>
<artifactId>commons-compress</artifactId>
<version>1.5</version>
</dependency>
<dependency>
<groupId>com.netflix.ribbon</groupId>
<artifactId>ribbon-core</artifactId>
<version>${ribbon.version}</version>
<exclusions>
<exclusion>
<groupId>com.netflix.rxjava</groupId>
<artifactId>rxjava-core</artifactId>
</exclusion>
</exclusions>
</dependency>
<dependency>
<groupId>com.netflix.ribbon</groupId>
<artifactId>ribbon-httpclient</artifactId>
<version>${ribbon.version}</version>
</dependency>
<!-- rxjava -->
<dependency>
<groupId>io.reactivex</groupId>
<artifactId>rxjava</artifactId>
<version>1.1.0</version>
</dependency>
<!-- apache cxf -->
<dependency>
<groupId>org.apache.cxf</groupId>
<artifactId>cxf-api</artifactId>
<version>2.7.3</version>
</dependency>
<dependency>
<groupId>org.apache.cxf</groupId>
<artifactId>cxf-rt-ws-security</artifactId>
<version>2.7.3</version>
</dependency>
<dependency>
<groupId>org.apache.cxf</groupId>
<artifactId>cxf-rt-frontend-jaxws</artifactId>
<version>2.7.3</version>
<exclusions>
<exclusion>
<groupId>asm</groupId>
<artifactId>asm</artifactId>
</exclusion>
</exclusions>
</dependency>
<dependency>
<groupId>org.apache.cxf</groupId>
<artifactId>cxf-rt-transports-http</artifactId>
<version>2.7.3</version>
</dependency>
</dependencies>
<profiles>
<profile>
<id>local</id>
<properties>
<environment>local</environment>
</properties>
<build>
<plugins>
<plugin>
<groupId>org.apache.tomcat.maven</groupId>
<artifactId>tomcat7-maven-plugin</artifactId>
<version>2.2</version>
<configuration>
<port>${tomcat.port}</port>
<path>/great</path>
</configuration>
<executions>
<execution>
<id>start-tomcat</id>
<phase>pre-integration-test</phase>
<goals>
<goal>run</goal>
</goals>
<configuration>
<fork>true</fork>
</configuration>
</execution>
<execution>
<id>stop-tomcat</id>
<phase>post-integration-test</phase>
<goals>
<goal>shutdown</goal>
</goals>
</execution>
</executions>
</plugin>
</plugins>
</build>
</profile>
</profiles>
web.xml:
<?xml version="1.0" encoding="ISO-8859-1"?>
<web-app xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"...>
<display-name>My Awesome REST API App</display-name>
<filter>
<filter-name>guiceFilter</filter-name>
<filter-class>com.google.inject.servlet.GuiceFilter</filter-class>
</filter>
<filter-mapping>
<filter-name>guiceFilter</filter-name>
<url-pattern>/*</url-pattern>
</filter-mapping>
</web-app>
在gumshoe.guicy.hello
中是RootModule.java类:
public class RootModule extends JerseyServletModule {
@Override
protected void configureServlets() {
bind(GuiceContainer.class);
bind(GreeterService.class);
serve("/*").with(GuiceContainer.class);
}
}
在胶鞋里。吉西。你好参考资料是迎宾服务。java类:
public class GreeterService {
@GET
@Path("/stuff")
@Produces("text/plain")
public String greet(final HttpServletRequest request) {
return "Hello World!";
}
}
好了,我们成功了
代码/文件库存在一系列问题。
1)web.xml中忽略了一个侦听器,它使整个引导过程停滞不前。
2)有一个文件结构问题,因为我的Java包在src
中,而不是像Maven预期的那样在src/main/java
中。
3) 有一些过渡依赖性问题相互重叠并导致冲突。这些是使用pom中的排除标签修复的。xml。
4) 我们丢失了一些与Netflix OSS相关的配置文件。
它会在http://localhost:8889/great/bla/stuff
如果你想这么做。。。不要。。。除非你真的需要。
这里有龙。。。
功能文件集看起来像:
web.xml:
<?xml version="1.0" encoding="ISO-8859-1"?>
<web-app xmlns:xsi="http://www.w3.org/2001/XMLSchema-ins...>
<display-name>My Awesome REST API App</display-name>
<filter>
<filter-name>guiceFilter</filter-name>
<filter-class>com.google.inject.servlet.GuiceFilter</filter-class>
</filter>
<filter-mapping>
<filter-name>guiceFilter</filter-name>
<url-pattern>/*</url-pattern>
</filter-mapping>
<listener>
<listener-class>com.netflix.karyon.server.guice.KaryonGuiceContextListener</listener-class>
</listener>
</web-app>
新文件:config。属性
:在/src/main/resources/
archaius.deployment.applicationId=helloworldservice
com.netflix.karyon.eureka.disable=true
新文件:helloworldservice.properties
在.../src/main/Resources/
com.netflix.karyon.server.bootstrap.class=gumshoe.guicy.hello.Bootstrap
netflix.platform.admin.resources.port=9092
gumshoe。你好吉西。根模块。java
:
public class RootModule extends JerseyServletModule {
@Override
protected void configureServlets() {
final HashMap<String, String> initParams = new HashMap<String, String>();
initParams.put(PackagesResourceConfig.PROPERTY_PACKAGES,
"gumshoe.guicy.hello");
bind(GuiceContainer.class);
bind(GreeterService.class);
serve("/*").with(GuiceContainer.class);
}
}
gumshoe。吉西。你好资源。欢迎服务。java
:
@Path("/bla")
public class GreeterService {
@GET
@Path("/stuff")
@Produces("text/plain")
public String greet() {
return "Hello World!";
}
}
新课程:gumshoe。吉西。你好独自创立java
:
public class Bootstrap extends ServerBootstrap {
@Override
protected void configureBootstrapBinder(BootstrapBinder binder) {
System.out.println("Bootstrap");
binder.install(new RootModule());
}
}
最后但并非最不重要的是pom。在插件运行时下添加了一系列依赖项和archaius标记的xml:
<plugin>
<groupId>org.apache.tomcat.maven</groupId>
<artifactId>tomcat7-maven-plugin</artifactId>
<configuration>
<port>${tomcat.port}</port>
<path>/great</path>
<systemProperties>
<archaius.deployment.applicationId>helloworldservice</archaius.deployment.applicationId>
</systemProperties>
</configuration>
<executions>
<execution>
<id>start-tomcat</id>
<phase>pre-integration-test</phase>
<goals>
<goal>run</goal>
</goals>
<configuration>
<fork>true</fork>
</configuration>
</execution>
<execution>
<id>stop-tomcat</id>
<phase>post-integration-test</phase>
<goals>
<goal>shutdown</goal>
</goals>
</execution>
</executions>
</plugin>
问题内容: 以下是我运行时遇到的错误: 问题答案: 在没有空格的路径中创建您的virtualenv环境。这就是为什么它发生的原因: 创建环境时,它会建立一个目录。在该目录中是与环境有关的所有可执行文件。有些是脚本。如您所知,hashbang用来告诉系统使用什么解释程序来运行脚本。您可能经常在脚本顶部看到此信息: 如果脚本位于,则告诉系统运行以下命令来执行脚本: 就您而言,virtualenv正在创
问题内容: 大家好,我正尝试通过websockets发送javascript对象: faye-websockets文档说: send(message) 接受字符串或缓冲区,并通过连接向另一对等方发送文本或二进制消息。 服务器端我正在使用node和faye。 客户端: 我的错误是什么?谢谢 问题答案: WebSockets支持发送和接收:字符串,类型数组(ArrayBuffer)和Blob。发送之前
问题内容: 我正在尝试通过网络连接到MySQL数据库。我已经安装了MySQL,并且该服务在默认端口上运行。我还将SQL连接器安装到jar文件中,并将Java JDK添加到服务器计算机中。我可以使用以下代码连接到本地数据库: 但是,当我尝试通过IP地址(例如:192.168.1.45)通过网络连接到它时: 我收到连接错误: 有人知道这个问题是什么吗?我需要添加其他地址吗?我已经使用地址添加了默认端口
我想在登录时向特定用户发送通知,我使用Firebase消息,我可以通过控制台发送通知,但我想使用发送到主题和request以Swift代码发送此通知。当我在postman中运行代码时,我无法实现http请求以发送通知。我有以下错误: 请求缺少身份验证密钥(FCM令牌)。请参阅FCM文档的“认证”部分,网址为https://firebase.google.com/docs/cloud-messagi
5.4 通过 HTTPS 的通信 大多数智能手机应用都与互联网上的 Web 服务器通信。 作为通信的方法,我们在这里集中讨论 HTTP 和 HTTPS 的两种方法。 从安全角度来看,HTTPS 通信更为可取。 最近,Google 或 Facebook 等主要 Web 服务已经开始使用 HTTPS 作为默认设置。 自 2012 年以来,Android 应用中 HTTPS 通信实现的许多缺陷已被指出。
问题内容: 您是否知道是否可以通过jndi的数据源像其他任何数据库一样在春季设置mongodb实例? 谢谢 问题答案: 如果您的意思是像具有JDBC访问权限的常规RDBMS,那么答案是否定的。
问题内容: 通过Java编程语言执行scp传输的最佳方法是什么?看来我可以通过JSSE,JSch或充气城堡Java库执行此操作。这些解决方案似乎都没有一个简单的答案。 问题答案: 我最终使用了Jsch-这非常简单,并且似乎可以很好地扩展(我每隔几分钟就抓取几千个文件)。
问题内容: 我正在考虑AJAX应用程序必须轮询轮询更新有多大限制,而最理想的是javascript能够建立与服务器的真正双向连接。我想知道是否存在将javascript与可以建立tcp连接的浏览器插件集成的方法,以便可以将数据传入和传出浏览器插件。 问题答案: 这是具有类似方法的实现: 套接字 它使用Java Applet,并将其API桥接到JavaScript,有趣的是… 这里是另一个: 套接字