可以使用javonet从Web应用程序调用本机dll

问题描述 投票:0回答:1

我正在使用javonet将c#或.NET dll加载到java中,它在作为控制台应用程序运行时非常有效,但不适用于Web应用程序。

它甚至适用于Web应用程序吗?

tomcat web javonet
1个回答
0
投票

我刚刚为您创建了示例Tomcat v9.0项目,因此您可以将其用作参考。你可以在这里找到它:https://github.com/Javonet/tutorials/tree/master/JavonetTomcatWebApp

该示例包含两个Eclipse项目:

  • TomcatMiddleApp编译为JAR(常规Java包,定义一个使用Javonet的类使用.NET Random类生成随机数)
  • TomcatJavonetTest Web项目(常规Web项目,它将Javonet和TomcatMiddleApp作为引用添加,并定义一个显示随机数的* .jsp)

我在Eclipse中的设置如下所示:enter image description here

如您所见,我只是将Javonet和TomcatMiddleApp复制到“WEB-INF / lib”文件夹中。

我的TestJavonet.java文件的内容是:

    package TomcatMiddleApp;


import com.javonet.Javonet;
import com.javonet.JavonetException;
import com.javonet.JavonetFramework;
import com.javonet.api.NObject;


public class TestJavonet {
    public static final String TMP_DIR = System.getProperty("java.io.tmpdir");
    public String CallDotNetRandom()
    {
        try {
            System.out.println("Setting temporary directory for Javonet lic file to: "+TMP_DIR);
            //Notice I set here temp dir for Javonet lic file by default it will try to save in system32 and will fail
            Javonet.setLicenseDirectory(TMP_DIR);
            Javonet.activate("******", "******",JavonetFramework.v45);
            NObject objRandom = com.javonet.Javonet.New("System.Random");
            Integer value = objRandom.invoke("Next",10,20);
            return value.toString();

        } catch (JavonetException e) {
            // TODO Auto-generated catch block
            e.printStackTrace();
            return e.getMessage();
        }
    }
}

我的main.jps文件是:

<%@ page language="java" contentType="text/html; charset=ISO-8859-1"
    pageEncoding="ISO-8859-1"%>
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1">
<title>Insert title here</title>
</head>
<body>
<%
TomcatMiddleApp.TestJavonet middleApp = new TomcatMiddleApp.TestJavonet();
%>
    <%= "Hello Javonet! Random number generated on .NET side:"+middleApp.CallDotNetRandom() %>
</body>
</html>

其他文件没什么特别之处。您不需要使用单独的JAR来定义逻辑,您可以直接将类放在Tomcat Web项目中。

您可以在Java Web项目中轻松使用.NET库。

© www.soinside.com 2019 - 2024. All rights reserved.