tomcat注册服务后调用jni出现问题

问题描述

tomcat注册服务后调用jni出现问题

我使用tomcat6+jdk6(64位)做服务器开发。
在服务器端使用jni调用c++来播放音频:
c++主要代码如下:
function(JNIEnv env, jclass c, jstring path) {
const char
str;
str = env->GetStringUTFChars(path, NULL);
return sndPlaySound(str, SND_SYNC);
}

使用eclipse启动tomcat,或者使用tomcat6.exe,或者使用startup.bat启动,都能正常播放声音。
但是注册成windows服务后,就不能播放了。没有报错,没有异常,jni调用返回值位true。
因为是同步播放的,我的这段音频时间是10秒左右,但是我在调用jni语句前后分别打了log,在服务方式启动的情况下,这两句log打印时间完全相同,也就是说这个调用瞬间就返回了,没有报错,但是也没有播放。

查了好多资料了,基本没有讨论这么细的问题的,找到有网友说tomcat注册服务后有权限问题,但是我看是system用户啊,这是最大权限了吧。而且我参照这位网友说的,改为用administrator(也就是我用startup等方式运行时使用的用户)来启动服务,还是同样的问题。

实在没招了,求各位指导。

时间: 2024-10-03 02:28:13

tomcat注册服务后调用jni出现问题的相关文章

tomcat注册服务 startup.bat

问题描述 我将解压版的tomcat注册成服务,在访问相对路径的文件时,服务和startup.bat启动有什么区别啊?同样一个文件,同样的位置,启动服务就说找不到文件,启用startup.bat就能找到. 问题补充:我项目的代码里,对conf里xml文件的访问使用的是相对路径,启动服务进行访问时就说找不到文件,启用startup.bat就能找到.请问有什么可能的错误吗? 解决方案 其实从tomcat来说没什么区别catalina.bat里面可能有些配置信息,这样启动会去读里面的配置从服务里启动是去

GitLab容器注册服务已集成于Docker容器

具体帮助分为两个方面:1)容器注册这个概念本身,以及2)GitLab的集成式容器注册服务. 容器注册服务非常适合各种开发者工作流的分享和自动化.例如,将映像推送至容器注册服务之后,团队中的每个人(如果是私有服务)或有需要的任何人(如果是公开服务)都可以从中下载映像,或为您的软件构建一个完整版本.此时并不需要自行下载源代码并编译,只要抓取一个完整映像即可.但实际上抓取的并不仅仅是包含编译后代码的映像,而是包含完整操作系统版本以及其他依赖工具完整环境的映像,运行软件所需的一切均包含在内,无论在笔记本

不使用VS.NET集成开发环境,调用微软的WebService注册服务

web|微软 微软最近在http://210.77.155.240/regBeta2/regservice.asmx 开放了一个WebService注册服务,通过它注册你的VS.NET Beta2,有机会得到代微软标记的单脚滑板. 如果通过VS.NET Beta2集成开发环境,来编写一个WebService客户程序调用此服务会很简单,但是我可以上网的地方机器的配置太低,无法安装VS.NET,只装了一个.NET Framework SDK Beta2,我只好试着用SDK方式来调用了.具体的实现步骤

阿里云调用 API 服务后返回什么结果

返回结果 调用 API 服务后返回数据采用统一格式,返回的 HTTP 状态码为 2xx,代表调用成功;返回 4xx 或 5xx 的 HTTP 状态码代表调用失败.调用成功返回的数据格式主要有 XML 和 JSON 两种,外部系统可以在请求时传入参数来制定返回的数据格式,默认为 XML 格式.本文档中的返回示例为了便于用户查看,做了格式化处理,实际返回结果是没有进行换行.缩进等处理的. 成功结果 错误结果 调用接口出错后,将不会返回结果数据.调用方可根据每个接口对应的错误码以及下述 2.3.3 的

c++-C++ 调用Jni 返回json字符串时产生的问题,穿入参数后返回的字符串是空的

问题描述 C++ 调用Jni 返回json字符串时产生的问题,穿入参数后返回的字符串是空的 java代码如下: package com.iscas.test; import java.util.ArrayList; import com.google.gson.Gson; import net.sf.json.JSONSerializer; public class Test { public String getItemList(int id,String name,float score)

weblogic注册为windows2008服务后网页上进步不了控制台

问题描述 小弟新人想请教一下我在XP下注册了服务点启动服务后能够进入控制台,可是同样的在windows环境下点了启动服务服务是启了,可控制台的网页就是打不开i,而且一开始没有把call"%WL_HOME%commonbincommEnv.cmd"修改成call"%DOMAIN_HOME%binsetDomainEnv.cmd"的话服务启了又马上自动关闭了!! 解决方案 解决方案二:求支援啊!!!

国内域名注册服务停止对个人开放

12月9日晚间,中央电视台<焦点访谈>就手机网络色情进行了系列访谈,晚间节目主题为<失控的域名>,指责工信部CNNIC对于域名的注册缺乏监管,域名注册服务过程中存在注册信息不真实.不准确.不完整的问题,要求其保证域名注册信息的真实性,严格执行实名制审查,并承担相应责任. 在遭到央视点名批评后,中国域名监管机构CNNIC处罚了三家域名注册服务及代理机构,并在官方网站接连发出数则加强域名注册信息审核工作的公告,而最新公告规定,从2009年12月14日上午9时起,个人用户没有资格进行域名

COM(VB/VBA/Script)利用服务标记调用WCF服务之四:使用配置文件

这几天友人同学说他在COM利用服务标记调用WCF服务的时候遇到一个问题,就是他返回的的Soap消息 大于65536这个wsHttpBinding的缺省值,引发调用错误.需要将MaxReceivedMessageSize更改成可以容纳 大消息内容的值.在我前面的三篇文章中使用的都是缺省的wsHttpBinding,所以不存在这个问题.现在 需要更改缺省值自然就需要增加配置来达到目的.目前最关键的问题就是:是否能让VB/VBA/Script来使 用配置文件呢?如果可以,那如何让VB,VBA, Scr

COM(VB/VBA/Script)利用服务标记调用WCF服务之三使用WSDL契约

前面我们介绍了使用MEX契约的服务标记在COM中调用WCF服务,这种方式是通过MEX终结点动态取得元 数据,使用起来是比较方便:但是有时服务的元数据中可能包含恶意用户可以利用的关于应用程序的敏感 信息,也就是说为了安全考虑有些服务可能不会通过MEX公布元数据信息.如果哦某些服务没有公布元数 据信息,用类型化有比较麻烦,针对这种情况我们该如何在COM中调用WCF服务呢?这时我们可以使用WSDL 契约来进行WCF服务的调用,使用这种方式和使用MEX类似,同样不需要进行类型的注册,信息都是通过动 态得