在glassfish Web服务器上部署的spring Web应用程序中使用共享库(.so)

时间:2016-09-01 06:48:16

标签: java spring spring-mvc java-native-interface glassfish

我在部署在glassfish上的spring web应用程序中使用System.loadLib()来在我的应用程序中加载.so(jni共享库)...但是当System.loadLibrary执行服务器时突然停止服务器中没有任何异常登录!

有什么问题? 我的代码:

@Controller
@RequestMapping(value = "/getdata", method = RequestMethod.POST)
public class temperatureController {

    @RequestMapping(value = "/temp" , method = RequestMethod.GET)
    public @ResponseBody
     float getTemperature(){
    System.err.print("beforeeeeeeeeeeeN");
        NativeClass n = new NativeClass();
        System.err.print("beforeeeeeeeeeeeLoadLib");
        try {
            System.loadLibrary("NativeClass");
            System.err.print("LoadedintempClass");
        }
        catch (Throwable e){
            System.err.print("not loaded in temp class");

            e.printStackTrace();
        }
        System.err.print("afteeeeeeeerLoadLib");
            float temp =  n.getTemperature(); // invoke the native method
        System.err.print("tttttttttt");
        System.err.print(temp);
           return temp ;
     }

服务器日志:

 [2016-05-30T19:40:36.364+0000] [glassfish 4.1] [SEVERE] [] [] [tid: _ThreadID=27 _ThreadName=Thread-9] [timeMillis: 1464637236364] [levelValue: 1000] [[
      beforeeeeeeeeeeeN]]

    [2016-05-30T19:40:36.391+0000] [glassfish 4.1] [SEVERE] [] [] [tid: _ThreadID=27 _ThreadName=Thread-9] [timeMillis: 1464637236391] [levelValue: 1000] [[
      beforeeeeeeeeeeeLoadLib]]

1 个答案:

答案 0 :(得分:0)

很可能是由库引起的分段错误,它会导致整个JVM崩溃。尝试使用bin/asadmin start-domain --verbose从命令行运行GlasssFish以在同一控制台窗口中继续运行。如果是这种情况,您可以在控制台中看到SEGMENTATION FAULT