我正在尝试在Bluemix服务器上发布Web服务端点。当我尝试将方法称为:
text = []
i = 0
while True:
if i > len(Y)-2:
# No more possible |'s, so wrap things up
text.append( Y[-1] )
break
if Y[i+1] == '|':
# Add the items around the |; move past the group:
if Y[i+2].endswith(','):
Y[i+2] = Y[i+2].replace(",", "")
text.append([Y[i], Y[i+2]])
else:
text.append([Y[i], Y[i+2]])
i += 3
else:
# Add the current element & move on
text.append( Y[i] )
i += 1
for id in range(len(text)-1):
if type(text[id]) != str:
if text[id][-1] == text[id+1]:
text.remove(text[id+1])
或者喜欢:
public class HelloWorldPublisher{
public static void main(String[] args) {
Endpoint.publish("http://myapp.eu-gb.mybluemix.net/ws/hello", new HelloWorldImpl());
}
}
并尝试访问wsdl文档,我收到了public class HelloWorldPublisher{
public static void main(String[] args) {
Endpoint.publish("/ws/hello", new HelloWorldImpl());
}
}
顺便说一句,我关注this tutorial。 谢谢你的帮助。
答案 0 :(得分:1)
发布网络服务时,您应使用http://<host>:<port>/<path>
格式。
示例:强>
Endpoint.publish("http://localhost:80/ws/hello", new HelloWorldImpl());
但是,当您指定localhost
时,您的网络服务可用的网络适配器不是很清楚。如果您的服务器具有LAN和无线网络适配器,那么您的服务可能仅在其中一个服务器上可用。
如果您知道该服务将在哪个网络地址上运行,那么您应该用特定的IP地址替换它。 或者,如果您指定0.0.0.0
,它将在所有网络适配器上运行。
Endpoint.publish("http://0.0.0.0:80/ws/hello", new HelloWorldImpl());
我的建议是尝试使用&#34; 0.0.0.0&#34;地址,并仔细检查端口号。
修改强>
我看到这里有一个混乱的根源。所以这是一个更长的解释。 (如果没有必要,请跳过此处):
目前计算机有多个网络适配器。其中一些可以是虚拟的,一些是真实的物理连接。看,我有7个。
如今大多数网络应用程序都是基于TCP / IP的(例如FTP,HTTP,电子邮件......) TCP / IP应用程序需要IP地址和端口号来托管或连接到服务。 Web服务也不例外。您需要在IP地址和端口号上发布您的Web服务。
这是事情变得棘手的地方。您的计算机有多个网络适配器。 因此,您的计算机很可能有多个IP地址。如果您只是发布服务而未指定应使用哪个地址,那么您的网络服务可能只能通过一个特定的网络适配器使用。它可能是错误的。
出于这个原因,建议您准确指定要托管服务的地址。例如,如果您首选的局域网适配器具有固定的IP地址(例如192.168.1.20)然后您可以在http://192.168.1.20:80/ws/hello
上发布您的服务。现在,您可以清楚地了解要启动服务的适配器。
问题是并非所有计算机都有固定的IP地址。所以,幸运的是,您还可以指定http://localhost:80/ws/hello
。在这种情况下,您的Web服务也可用于网络上的其他计算机。除了 !!!! ......这很重要!!!除非您的网络服务是在错误的网络适配器上启动的。你知道,因为你没有指定一个确切的IP地址你的计算机会选择一个或多个网络适配器。但它并不总是清楚哪一个。这可能是错误的。
所以,这会导致我们http://0.0.0.0:80/ws/hello
这是一个特殊的IP地址。这意味着将在所有可能的网络适配器上提供Web服务。 (请注意,IP地址应该与0.0.0.0
完全相同。此处 将被真实IP替换。0.0.0.0
是您需要使用的IP。它是一个特殊的地址。)
还有其他问题吗? :)
答案 1 :(得分:0)
仔细检查您是否正在激活Liberty Profile的server.xml文件中的JAX-WS功能。类似的东西:
<featureManager>
<feature>jsp-2.2</feature>
<feature>jaxws-2.2</feature>
</featureManager>
您可以签入Bluemix docs个不同的选项,将应用程序发布到Bluemix Liberty buildpack中。一个是使用应用程序推送配置文件,这是激活JAX-WS功能所需的。
希望它有所帮助,
CHEMI。