无法从远程位置访问Liferay jsonws

无法从远程位置访问Liferay jsonws,liferay,liferay-6,Liferay,Liferay 6,我的liferay portlet jsonws无法从远程位置访问,但我可以使用localhost访问它 example [http://localhost:8050/MySite-portlet/api/secure/jsonws] is accesible on the lacal machine but when i try to access it remotely using the external ip e.g [http://120.23.223.24:8050/MySite-p

我的liferay portlet jsonws无法从远程位置访问,但我可以使用localhost访问它

example [http://localhost:8050/MySite-portlet/api/secure/jsonws] is accesible on the lacal machine
but when i try to access it remotely using the external ip e.g
[http://120.23.223.24:8050/MySite-portlet/api/secure/jsonws] its returning me the Connection refused error
然而
[http://120.23.223.24:8050/api/jsonws]
[http://120.23.223.24:8050/web/MySite]
正在工作

my portal-ext.properties文件包含以下条目

open.id.auth.enabled=
auth.login.site.url=
auth.login.community.url=
company.default.home.url=
default.logout.page.path=
default.landing.page.path=
redirect.url.ips.allowed=
jsonws.servlet.hosts.allowed=
json.servlet.hosts.allowed=
json.web.service.enabled=true
jsonws.web.service.public.methods=*
json.service.auth.token.enabled=true
jsonws.web.service.strict.http.method=false
我正在使用liferay tomcat 6.1.0

下面是我得到的错误

type Exception report

message

description The server encountered an internal error () that prevented it from fulfilling this request.


    exception

    `java.net.ConnectException: Connection refused: connect
        java.net.PlainSocketImpl.socketConnect(Native Metho

d)
    java.net.PlainSocketImpl.doConnect(PlainSocketImpl.java:333)
    java.net.PlainSocketImpl.connectToAddress(PlainSocketImpl.java:195)
    java.net.PlainSocketImpl.connect(PlainSocketImpl.java:182)
    java.net.SocksSocketImpl.connect(SocksSocketImpl.java:366)
    java.net.Socket.connect(Socket.java:529)
    java.net.Socket.connect(Socket.java:478)
    sun.net.NetworkClient.doConnect(NetworkClient.java:163)
    sun.net.www.http.HttpClient.openServer(HttpClient.java:394)
    sun.net.www.http.HttpClient.openServer(HttpClient.java:529)
    sun.net.www.http.HttpClient.<init>(HttpClient.java:233)
    sun.net.www.http.HttpClient.New(HttpClient.java:306)
    sun.net.www.http.HttpClient.New(HttpClient.java:323)
    sun.net.www.protocol.http.HttpURLConnection.getNewHttpClient(HttpURLConnection.java:860)
    sun.net.www.protocol.http.HttpURLConnection.plainConnect(HttpURLConnection.java:801)
    sun.net.www.protocol.http.HttpURLConnection.connect(HttpURLConnection.java:726)
    sun.net.www.protocol.http.HttpURLConnection.getInputStream(HttpURLConnection.java:1049)
    java.net.URL.openStream(URL.java:1010)
    com.liferay.portal.jsonwebservice.JSONWebServiceServlet.service(JSONWebServiceServlet.java:136)
    javax.servlet.http.HttpServlet.service(HttpServlet.java:722)
    com.liferay.portal.kernel.servlet.PortalClassLoaderServlet.service(PortalClassLoaderServlet.java:98)
    javax.servlet.http.HttpServlet.service(HttpServlet.java:722)
    com.liferay.portal.kernel.servlet.filters.invoker.InvokerFilterChain.doFilter(InvokerFilterChain.java:72)
    sun.reflect.GeneratedMethodAccessor218.invoke(Unknown Source)
    sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
    java.lang.reflect.Method.invoke(Method.java:597)
    com.liferay.portal.kernel.bean.ClassLoaderBeanHandler.invoke(ClassLoaderBeanHandler.java:54)
    $Proxy431.doFilter(Unknown Source)
    com.liferay.portal.kernel.servlet.filters.invoker.InvokerFilterChain.doFilter(InvokerFilterChain.java:72)
    com.liferay.portal.kernel.servlet.BaseFilter.processFilter(BaseFilter.java:121)
    com.liferay.portal.servlet.filters.secure.SecureFilter.processFilter(SecureFilter.java:201)
    com.liferay.portal.kernel.servlet.BaseFilter.doFilter(BaseFilter.java:48)
    com.liferay.portal.kernel.servlet.filters.invoker.InvokerFilterChain.processDoFilter(InvokerFilterChain.java:203)
    com.liferay.portal.kernel.servlet.filters.invoker.InvokerFilterChain.doFilter(InvokerFilterChain.java:105)
    com.liferay.portal.kernel.servlet.PortalClassLoaderFilter.doFilter(PortalClassLoaderFilter.java:69)
    com.liferay.portal.kernel.servlet.filters.invoker.InvokerFilterChain.processDoFilter(InvokerFilterChain.java:203)
    com.liferay.portal.kernel.servlet.filters.invoker.InvokerFilterChain.doFilter(InvokerFilterChain.java:105)
    com.liferay.portal.kernel.servlet.filters.invoker.InvokerFilter.doFilter(InvokerFilter.java:70)`
类型异常报告
消息
说明服务器遇到内部错误(),无法完成此请求。
例外
`java.net.ConnectException:连接被拒绝:连接
java.net.PlainSocketImpl.socketConnect(本机方法)
(d)
java.net.PlainSocketImpl.doConnect(PlainSocketImpl.java:333)
java.net.PlainSocketImpl.connectToAddress(PlainSocketImpl.java:195)
connect(PlainSocketImpl.java:182)
net.socksocketimpl.connect(socksocketimpl.java:366)
java.net.Socket.connect(Socket.java:529)
java.net.Socket.connect(Socket.java:478)
net.NetworkClient.doConnect(NetworkClient.java:163)
net.www.http.HttpClient.openServer(HttpClient.java:394)
www.http.HttpClient.openServer(HttpClient.java:529)
http.HttpClient.(HttpClient.java:233)
net.www.http.HttpClient.New(HttpClient.java:306)
www.http.HttpClient.New(HttpClient.java:323)
net.www.protocol.http.HttpURLConnection.getNewHttpClient(HttpURLConnection.java:860)
sun.net.www.protocol.http.HttpURLConnection.plainConnect(HttpURLConnection.java:801)
net.www.protocol.http.HttpURLConnection.connect(HttpURLConnection.java:726)
net.www.protocol.http.HttpURLConnection.getInputStream(HttpURLConnection.java:1049)
openStream(URL.java:1010)
com.liferay.portal.jsonwebservice.JSONWebServiceServlet.service(JSONWebServiceServlet.java:136)
javaservlet.http.HttpServlet.service(HttpServlet.java:722)
com.liferay.portal.kernel.servlet.PortalClassLoaderServlet.service(PortalClassLoaderServlet.java:98)
javaservlet.http.HttpServlet.service(HttpServlet.java:722)
com.liferay.portal.kernel.servlet.filters.invoker.InvokerFilterChain.doFilter(InvokerFilterChain.java:72)
sun.reflect.GeneratedMethodAccessor218.invoke(未知源)
reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
java.lang.reflect.Method.invoke(Method.java:597)
com.liferay.portal.kernel.bean.ClassLoaderBeanHandler.invoke(ClassLoaderBeanHandler.java:54)
$Proxy431.doFilter(未知源)
com.liferay.portal.kernel.servlet.filters.invoker.InvokerFilterChain.doFilter(InvokerFilterChain.java:72)
com.liferay.portal.kernel.servlet.BaseFilter.processFilter(BaseFilter.java:121)
com.liferay.portal.servlet.filters.secure.SecureFilter.processFilter(SecureFilter.java:201)
com.liferay.portal.kernel.servlet.BaseFilter.doFilter(BaseFilter.java:48)
com.liferay.portal.kernel.servlet.filters.invoker.InvokerFilterChain.processDoFilter(InvokerFilterChain.java:203)
com.liferay.portal.kernel.servlet.filters.invoker.InvokerFilterChain.doFilter(InvokerFilterChain.java:105)
com.liferay.portal.kernel.servlet.PortalClassLoaderFilter.doFilter(PortalClassLoaderFilter.java:69)
com.liferay.portal.kernel.servlet.filters.invoker.InvokerFilterChain.processDoFilter(InvokerFilterChain.java:203)
com.liferay.portal.kernel.servlet.filters.invoker.InvokerFilterChain.doFilter(InvokerFilterChain.java:105)
com.liferay.portal.kernel.servlet.filters.invoker.InvokerFilter.doFilter(InvokerFilter.java:70)`

portal-ext.properties中设置以下属性

json.servlet.hosts.allowed=

如果你有任何问题,请告诉我

你能设置一个调试器来研究这个问题吗?如果您查看
JSONWebServiceServlet
中的代码,您将在
service()
(我从6.1.1中获取了可用的代码-这与示例中的行号不同-您可能还想尝试更新,该类中的某些内容已更改。此外,为简洁起见,我已删除了空行和一些换行符,不要让这激怒您)


一种可能是Liferay本身无法连接到它确定的服务器名称-例如,由于防火墙或DNS设置。一旦您知道apiPath会产生什么结果(遗憾的是,似乎没有可以激活的日志记录)您应该比现在更接近解决方案。

是的,这是同一个错误。我已经编辑了我的问题并添加了我的门户ext文件配置。请查看并告诉我是否有问题。您是否将远程ip添加到“json.servlet.hosts.allowed=remote\u ip”中了您正在访问WS?thanx dude。这是一个DSN/防火墙问题。我们将应用程序托管到另一台服务器上,并且工作正常。现在,我们必须找出导致上一台服务器出现错误的原因
    if (servletContext.getContext(PropsValues.PORTAL_CTX) != null) {
        RequestDispatcher requestDispatcher = request.getRequestDispatcher(
            apiPath);
        requestDispatcher.forward(request, response);
    }
    else {
        String requestURI = request.getRequestURI();
        String requestURL = String.valueOf(request.getRequestURL());
        String serverURL = requestURL.substring(0, requestURL.length() - requestURI.length());
        String queryString = request.getQueryString();
        if (Validator.isNull(queryString)) {
            queryString = StringPool.BLANK;
        }
        else {
            queryString += StringPool.AMPERSAND;
        }
        String servletContextPath = ContextPathUtil.getContextPath(servletContext);
        queryString +=  "contextPath=" + HttpUtil.encodeURL(servletContextPath);
  // CHECK THIS VALUE IN DEBUGGER:
        apiPath = serverURL + apiPath + StringPool.QUESTION + queryString;
        URL url = new URL(apiPath);
        InputStream inputStream = null;
        try {
            inputStream = url.openStream();
            OutputStream outputStream = response.getOutputStream();
            StreamUtil.transfer(inputStream, outputStream);
        }
        finally {
            StreamUtil.cleanUp(inputStream);
        }
    }