我想禁用在抛出异常时生成的堆栈跟踪.我用过,
Runtime.getRuntime().traceInstructions(false);
Runtime.getRuntime().traceMethodCalls(false);
Run Code Online (Sandbox Code Playgroud)
但我仍然可以看到跟踪生成.你怎么能这样做?此外,我需要检测是否有人正在调试我的课程.
我想禁用所有异常跟踪.我不能使用混淆,因为我的产品是一个将用于开发的SDK.我还提供了Runtime,当人们想要部署使用我的SDK构建的应用程序时,会使用它.我的要求是任何使用我的运行时jar的人都不应该能够调试编写的代码...或者至少我会通过避免从我的运行时jar生成堆栈跟踪来使调试变得困难.
我发现的一种方法是所有来自我的运行时jar的异常,我只是捕获它们并在异常对象上设置一个空的StackTraceElement数组并重新抛出它...
为何如此要求?假设您使用我的SDK开发应用程序.(SDK jar无法与您的应用程序捆绑在一起..我已经限制了它,那就是最终:) !!)现在要在客户端的机器上运行您的应用程序,您(或客户端)需要安装客户端计算机上的运行时并运行您的应用程序.现在如果你的客户使用我的Runtime jar开始开发他自己的应用程序怎么办 这对我的生意构成威胁....这就是为什么这个可怕的要求.
为什么禁用堆栈跟踪?
通过禁用堆栈跟踪生成或方法调用跟踪生成我想用我的Runtime jar开发代码很困难,这就是为什么我以这种方式开始我的问题...建议一些其他解决方案来实现这样的要求......
我需要从我的数据库(mysql)中搜索印度名称.我尝试了SOUNDEX功能,但它失败了长印度的名字.
我需要识别注册到我的服务的客户端的远程IP和端口.此外,当客户端Web应用程序关闭时,它会从我的Web服务中取消注册.我正在使用HttpServletRequest.getRemoteAddress()和HttpServletRequest.getRemotePort()来识别客户端.
但问题是,当我在同一台机器上测试时,我从同一个客户端Web应用程序获得不同的端口.
我在GlassFish上运行JAX-WS Web服务,Client Web App也安装在同一容器上.另外,我正在运行Fedora 14 VBox VM.