我试图通过Spring 4.2 WebsocketClient支持连接到SockJs Web套接字服务器.到目前为止这是我的客户:
public static void main(String[] args) throws Exception {
WebSocketClient transport = new StandardWebSocketClient();
WebSocketStompClient stompClient = new WebSocketStompClient(transport);
stompClient.setMessageConverter(new StringMessageConverter());
String url = "ws://localhost:8080/priceticker/ws";
StompSessionHandler handler = new WSClient() ;
stompClient.connect(url, handler);
}
Run Code Online (Sandbox Code Playgroud)
这将提供我订阅我的频道所需的连接.当我运行代码时,我得到以下异常:
Exception in thread "main" java.lang.RuntimeException: Could not find an implementation class.
at javax.websocket.ContainerProvider.getWebSocketContainer(ContainerProvider.java:73)
at org.springframework.web.socket.client.standard.StandardWebSocketClient.<init>(StandardWebSocketClient.java:76)
at Main.main(Main.java:10)
Run Code Online (Sandbox Code Playgroud)
我理解我需要在META-INF文件夹中为项目提供一个WebSocketContainer,如失败方法的注释所示:
* Obtain a new instance of a WebSocketContainer. The method looks for the
* ContainerProvider implementation class in the order listed in …Run Code Online (Sandbox Code Playgroud) 我目前正致力于在Linux VM机箱上实现可运行的jar作为后台服务.我已经使用此处的示例作为基础来处理,并将start()方法修改为:
start(){
#启动应用程序
java -jar /home/vagrant/sagepay-stub-1.4.jar> /var/log/sagepay-stub.log 2>&1
PID = $!
echo $ PID> pid.txt
}
这将设置服务以将输出写入日志sagepay-stub.log并保存PID以在调用服务停止方法时使用.
这是start命令的处理程序:
案例"$ 1"开始)
Run Code Online (Sandbox Code Playgroud)echo "Starting $APP" start echo "$APP started." ;;
当我调用方法时,我得到了"Starting Sagepay-stub"输出,但后来我被困在脚本中.我所能做的就是Ctrl&C退出,这给了我输出:
"Sagepay-stub开始了."
现在我查看日志并查看输出是否符合预期 - 存根服务器已成功启动.但我无法忘记端口(我已使用iptables打开相关端口) - 连接被拒绝:
Connecting to localhost|127.0.0.1|:8889... failed: Connection refused.
Run Code Online (Sandbox Code Playgroud)
任何有关问题的想法都值得赞赏.我认为问题在于启动应用程序然后继续运行并让它在后台运行.应用程序启动时,脚本会等待某些东西.罐子在没有输入的情况下运行良好.
如果问题出在PID命令(我在另一个线程上找到的接受答案),我该如何评论这些命令并仍然可以停止服务?
对代码的评论也欢迎
谢谢
我目前正在编写我的第一个Gradle构建脚本,以帮助构建一个从命令行使用的简单Java应用程序.
下面是完整的build.gradle代码
apply plugin: 'java'
apply plugin: 'eclipse'
defaultTasks 'clean', 'build'
repositories {
mavenCentral()
}
jar {
baseName = 'napier-deploy'
version = '1'
manifest {attributes 'Main-Class': 'com.Main'}
}
dependencies {
compile 'org.apache.httpcomponents:fluent-hc:4.3.3'
compile 'org.apache.httpcomponents:httpclient-cache:4.3.3'
compile 'org.apache.httpcomponents:httpcore:4.1'
compile 'org.apache.httpcomponents:httpmime:4.3.3'
compile 'org.apache.httpcomponents:httpclient:4.3.3'
testCompile 'junit:junit:4.11'
testCompile 'org.mockito:mockito-all:1.9.5'
}
task wrapper(type: Wrapper) {
gradleVersion = '1.11'
}
Run Code Online (Sandbox Code Playgroud)
运行gradle assemble --info命令显示从Maven下载的依赖项,但是当我尝试从命令行启动Jar时,我收到以下错误:
Exception in thread "main" java.lang.NoClassDefFoundError: org/apache/http/HttpEntity
at com.Main.main(Main.java:17)
Caused by: java.lang.ClassNotFoundException: org.apache.http.HttpEntity
at java.net.URLClassLoader$1.run(URLClassLoader.java:202)
at java.security.AccessController.doPrivileged(Native Method)
at java.net.URLClassLoader.findClass(URLClassLoader.java:190)
at java.lang.ClassLoader.loadClass(ClassLoader.java:306)
at sun.misc.Launcher$AppClassLoader.loadClass(Launcher.java:301)
at …Run Code Online (Sandbox Code Playgroud) 我正在尝试编写一个Xpath条件,如果其属性和值正确则返回该元素,否则返回null.
这是我的xml
<record>
<field name="uid">ABC70019469</field>
<field name="effectiveDate">10 May 2014 00:00:00 BST</field>
<field name="expiryDate">09 May 2015 23:59:59 BST</field>
<field name="price">48.49</field>
<field name="cancelled">{cancelled}</field>
<field name="addonSection.effectiveStartTime">09 May 2014 09:04:29 BST</field>
<field name="addonSection.effectiveEndTime">31 December 9999 23:59:59 GMT</field>
<field name="addonSection.brand">BIT</field>
<field name="addonSection.product">ProPlus</field>
<record>
Run Code Online (Sandbox Code Playgroud)
我想检查是否存在@ name ="addonSection.product"和value == ProPlus的字段元素.
我曾尝试使用以下XPath,但每次都返回null.
//field[@name = 'addonSection.product']/[text()='ProPlus']
Run Code Online (Sandbox Code Playgroud)
任何评论欢迎
谢谢
我正在尝试模拟应用程序的Main类中包含的方法.我想测试一下,当所有参数都成功提交后,应用程序会调用正确的方法uploadFiles.when - thenReturn对如下所示:
NrClient nrClient = (NrClient)Mockito.mock(NrClient.class);
Mockito.when(nrClient.uploadFiles("DF49ACBC8", anyList(), "dl")).thenReturn("");
Run Code Online (Sandbox Code Playgroud)
这显示为运行时异常:"方法anyString()未定义为MainTest类型." 我有进口:
import org.mockito.Mockito;
import org.mockito.Matchers;
Run Code Online (Sandbox Code Playgroud)
那么为什么这个方法不确定呢?我的实施中是否存在问题?
我也尝试过具有相同结果的anyString()和anyInt().