当应用程序未配置安全性时,可能的原因可能是调用https

时间:2011-06-25 07:03:05

标签: java web-services

我创建了网络服务

@WebService(serviceName = "DynamipsService2")
@Stateless()
public class DynamipsService2 {

    @WebMethod(operationName = "StartSession")
    public static String StartSession(@WebParam(name = "key") String key) {
        try {

                return "100-Session started";

        } catch (Exception ex) {
            return null;
        }
    }

}

我想在页面上测试 http://localhost:8080/DynamipsService2/DynamipsService2?Tester崩溃错误

  

生成工件的错误   遵循WSDL   http://localhost:8080/DynamipsService2/DynamipsService2?WSDL

     

可能的原因可能是调用https   何时未配置应用程序   为了安全

我在同一个程序集中创建了其他Web服务,但它确实有效。

7 个答案:

答案 0 :(得分:2)

我刚刚遇到过这个问题。我的解决方案是在测试程序的URL中使用我的主机名而不是localhost。

因此,在我的情况下,以下是NetBeans / Glassfish在NetBeans UI中单击“测试Web服务”时默认执行的操作,工作:

http://localhost:8080/Calculator/Calculator?Tester

但是,当我将以下内容粘贴到浏览器中时,它 工作:

http://david-pc:8080/Calculator/Calculator?Tester

我无法弄清楚如何更改NetBeans用于内置测试对话框的主机名(也不能从错误对话框中剪切+粘贴URL)。因此,我不得不将错误消息中的URL直观地复制到浏览器中,并在此过程中替换主机名。

答案 1 :(得分:1)

我在服务器日志中遇到了同样的问题和原因。我正在使用Glassfish 3.1和netBeans 7.而我在Glassfish输出中得到的错误是: INFO:[ERROR] com.sun.tools.javac.Main在类路径中不可用,需要Suns JDK 5.0或更高版本。

我google了一下,似乎是因为glassfish服务器正在使用ubuntu附带的openjdk。如果您的问题与我发现的解决方案相同,那就是删除openjdk jre,如下所示:

sudo apt-get remove openjdk-6-jre sudo apt-get autoremove

希望这很有用。

PS:我在netBeans中的服务器配置向导的java选项卡中分配了/ usr / lib / jvm / java-6-sun / bin / java但是不知道这是否是解决方案的一部分(我是害怕改变它:p)

答案 2 :(得分:1)

我遇到了与Glassfish相同的问题

但由于NAT

,它更加复杂

我在NAT中有GF - 做MYDOMAIN并将端口重定向到内部机器

GF中的问题是它试图通过域名连接到自己,域名再次重定向到网络内部 (?wsdl正常工作)

我已将临时解决方案添加到/ etc / hosts(127.0.0.1 domainname)
请注意,这只是一个临时解决方案

尝试检查主机文件中是否有“localhost”(在windows c:/ windows / system32 / drivers / etc / hosts中) 并ping localhost

我将添加GF日志 - 也许有人将来会通过谷歌搜索:) :) 而且我看了GF日志有类似的东西 - >

Connection timed out
Failed to read the WSDL document: http://MYDOMAIN:8080/MYSERVICE?WSDL, because 1) could not find the document; /2) the document could not be read; 3) the root element of the document is not <wsdl:definitions>.
failed.noservice=Could not find wsdl:service in the provided WSDL(s):
At least one WSDL with at least one service definition needs to be provided.
Failed to parse the WSDL.

答案 3 :(得分:0)

您使用的是哪个网络服务器?如果您使用glassfish,您可以打开服务器管理页面并选择Configurations===>server-config===>Security

并启用安全管理器

答案 4 :(得分:0)

检查您的域名/ {YOUR_DOMAIN} /config/domain.xml

如果使用Eclipse设置Glassfish,将自动为您完成所有操作。

现在我很惊讶,如果我从命令行启动域,它给了我这个错误,但是从Eclipse启动Glassfish 4,它没有显示任何问题。

答案 5 :(得分:0)

一个原因可能是您没有正确配置环境变量JAVA_HOME(使用正确的路径)并且JAVA_HOME / bin目录也添加到全局PATH环境变量中。对于某些进程,glassfish会查找已安装的JDK的类路径。 希望这有帮助。

答案 6 :(得分:0)

我有完全相同的问题,这是因为你有一个静态方法,我在调试一段时间后意识到。只需从方法中删除静态,它应该工作。

@WebMethod(operationName = "StartSession")
public String StartSession(@WebParam(name = "key") String key) {
    try {

            return "100-Session started";

    } catch (Exception ex) {
        return null;
    }
}