【问题标题】:Java class not used as a COM object from classic ASP pageJava 类不用作经典 ASP 页面中的 COM 对象
【发布时间】:2014-07-13 19:57:31
【问题描述】:

我陷入了一个非常奇怪的问题,我还没有从互联网上找到解决方案。这是我的问题:-

我有一个预编译的 java 类,它在 javareg 实用程序中注册,因此它可以用作经典 ASP 页面中的 COM 对象。因此,在 global.asa 中使用 Prog ID 调用这个 java 类,然后在整个页面中使用它来调用它的方法。这在我们当前的开发服务器 Windows Server 2003 R2 中运行良好。但是,它不适用于我们新的 64 位 Windows Server 2008 R2。

我已经使用 javareg 完成了注册,但是当我尝试在 ASP 页面中使用 Server.CreateObject 创建对象时,我收到“ASP 0177 : 80070002' Server.CreateObject Failed”。因此,我尝试在我们现有的开发服务器中创建一个示例 java 类,并使用 javareg 注册它并使用 Server.CreateObject 实例化它,但即使我在开发服务器中遇到同样的错误,这证明我什至无法使用即使在工作的开发服务器中,java 类也可以作为 COM 对象。另外,当我尝试使用 Vb 6 模拟 CreateObject 方法时,我现在遇到了 Classfactory 自动化错误。

那么可能是什么问题?我看到我登录到服务器的 id 已添加到管理员组,因此存在任何权限问题的微弱机会。另外,我在控制面板->组件中看到了已注册的 java COM 组件...任何建议或帮助都非常感谢...

附加信息:-

现有的开发服务器规格:

Windows Server 2003 R2(32 位)

IIS 6.0

.Net 框架 2.0

新服务器规格:

Windows Server 2008 R2(64 位)

IIS 7.5

.Net 框架 3.5

【问题讨论】:

  • 注册命令是什么?试试这个,看看你是否得到了相同的结果,rgagnon.com/javadetails/java-0044.html 和他们的班级等等一样,而不是你的。
  • 应用程序池(您的 Web 应用程序正在使用)是否在高级设置中设置为使用 Enable 32 Bit Applications 设置为 True?
  • javareg /register /class:abc.class /progid:abc trustlib 目录已经存在于 C:\windows\java...因此,我做了这个:- 复制 abc.class c: \windows\java\trustlib\abc.class
  • 另外,在 IIS 中启用 32 应用设置为 true
  • 您是否尝试过相反的方法? Enable 32 Bit Applications 设置为 False 可能是 javareg 可能是 64 位应用程序,并且无意中将 ProgId 注册到 64 位类注册表中。

标签: java windows iis asp-classic com


【解决方案1】:

经过我想分享的深入分析后,这个问题现在得到了解决……我们必须将 java 类转换为 C#.net dll 并使用 regasm 工具注册它。现在,我们不得不对调用dll函数的ASP页面的调用方法做一些改动。消除COM依赖后,现在可以使用了!!!

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2010-11-14
    • 2011-06-23
    • 2010-12-03
    • 1970-01-01
    • 2016-08-12
    • 2011-09-29
    • 2012-01-19
    相关资源
    最近更新 更多