2014-02-27 108 views
5

我在做一个POC并尝试使用Jenkins WebSphere部署者插件将EAR部署到WebSphere中。 WebSphere已启用安全性。我试图使用InstallCert.java将证书导入到cacerts文件中并使用它。仍然没有运气。Jenkins WebSphere部署者插件失败

我是新手,欢迎任何帮助。请让如有必要,我知道,连基本的一步:)

This is the screenshot of configuration. I have configured the right port number. I have copied the dummy jks files into the security directory from websphere

这是例外,我面对

Connection failed: com.ibm.websphere.management.exception.ConnectorException: ADMC0016E: The system cannot create a SOAP connector to connect to host JHRPSTEST4 at port 8879. 
at com.ibm.websphere.management.AdminClientFactory.createAdminClientPrivileged(AdminClientFactory.java:634) 
at com.ibm.websphere.management.AdminClientFactory.access$000(AdminClientFactory.java:126) 
at com.ibm.websphere.management.AdminClientFactory$1.run(AdminClientFactory.java:209) 
at com.ibm.ws.security.util.AccessController.doPrivileged(AccessController.java:63) 
at com.ibm.websphere.management.AdminClientFactory.createAdminClient(AdminClientFactory.java:205) 
at org.jenkinsci.plugins.websphere.services.deployment.WebSphereDeploymentService.connect(WebSphereDeploymentService.java:234) 
at org.jenkinsci.plugins.websphere_deployer.WebSphereDeployerPlugin$DescriptorImpl.doTestConnection(WebSphereDeployerPlugin.java:325) 
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) 
at sun.reflect.NativeMethodAccessorImpl.invoke(Unknown Source) 
at sun.reflect.DelegatingMethodAccessorImpl.invoke(Unknown Source) 
at java.lang.reflect.Method.invoke(Unknown Source) 
at org.kohsuke.stapler.Function$InstanceFunction.invoke(Function.java:298) 
at org.kohsuke.stapler.Function.bindAndInvoke(Function.java:161) 
at org.kohsuke.stapler.Function.bindAndInvokeAndServeResponse(Function.java:96) 
at org.kohsuke.stapler.MetaClass$1.doDispatch(MetaClass.java:120) 
at org.kohsuke.stapler.NameBasedDispatcher.dispatch(NameBasedDispatcher.java:53) 
at org.kohsuke.stapler.Stapler.tryInvoke(Stapler.java:728) 
at org.kohsuke.stapler.Stapler.invoke(Stapler.java:858) 
at org.kohsuke.stapler.MetaClass$6.doDispatch(MetaClass.java:248) 
at org.kohsuke.stapler.NameBasedDispatcher.dispatch(NameBasedDispatcher.java:53) 
at org.kohsuke.stapler.Stapler.tryInvoke(Stapler.java:728) 
at org.kohsuke.stapler.Stapler.invoke(Stapler.java:858) 
at org.kohsuke.stapler.MetaClass$6.doDispatch(MetaClass.java:248) 
at org.kohsuke.stapler.NameBasedDispatcher.dispatch(NameBasedDispatcher.java:53) 
at org.kohsuke.stapler.Stapler.tryInvoke(Stapler.java:728) 
at org.kohsuke.stapler.Stapler.invoke(Stapler.java:858) 
at org.kohsuke.stapler.Stapler.invoke(Stapler.java:631) 
at org.kohsuke.stapler.Stapler.service(Stapler.java:225) 
at javax.servlet.http.HttpServlet.service(HttpServlet.java:848) 
at org.eclipse.jetty.servlet.ServletHolder.handle(ServletHolder.java:686) 
at org.eclipse.jetty.servlet.ServletHandler$CachedChain.doFilter(ServletHandler.java:1494) 
at hudson.util.PluginServletFilter$1.doFilter(PluginServletFilter.java:96) 
at hudson.util.PluginServletFilter.doFilter(PluginServletFilter.java:88) 
at org.eclipse.jetty.servlet.ServletHandler$CachedChain.doFilter(ServletHandler.java:1482) 
at hudson.security.csrf.CrumbFilter.doFilter(CrumbFilter.java:48) 
at org.eclipse.jetty.servlet.ServletHandler$CachedChain.doFilter(ServletHandler.java:1482) 
at hudson.security.ChainedServletFilter$1.doFilter(ChainedServletFilter.java:84) 
at hudson.security.ChainedServletFilter.doFilter(ChainedServletFilter.java:76) 
at hudson.security.HudsonFilter.doFilter(HudsonFilter.java:164) 
at org.eclipse.jetty.servlet.ServletHandler$CachedChain.doFilter(ServletHandler.java:1482) 
at org.kohsuke.stapler.compression.CompressionFilter.doFilter(CompressionFilter.java:46) 
at org.eclipse.jetty.servlet.ServletHandler$CachedChain.doFilter(ServletHandler.java:1482) 
at hudson.util.CharacterEncodingFilter.doFilter(CharacterEncodingFilter.java:81) 
at org.eclipse.jetty.servlet.ServletHandler$CachedChain.doFilter(ServletHandler.java:1474) 
at org.eclipse.jetty.servlet.ServletHandler.doHandle(ServletHandler.java:499) 
at org.eclipse.jetty.server.handler.ScopedHandler.handle(ScopedHandler.java:137) 
at org.eclipse.jetty.security.SecurityHandler.handle(SecurityHandler.java:533) 
at org.eclipse.jetty.server.session.SessionHandler.doHandle(SessionHandler.java:231) 
at org.eclipse.jetty.server.handler.ContextHandler.doHandle(ContextHandler.java:1086) 
at org.eclipse.jetty.servlet.ServletHandler.doScope(ServletHandler.java:428) 
at org.eclipse.jetty.server.session.SessionHandler.doScope(SessionHandler.java:193) 
at org.eclipse.jetty.server.handler.ContextHandler.doScope(ContextHandler.java:1020) 
at org.eclipse.jetty.server.handler.ScopedHandler.handle(ScopedHandler.java:135) 
at org.eclipse.jetty.server.handler.HandlerWrapper.handle(HandlerWrapper.java:116) 
at org.eclipse.jetty.server.Server.handle(Server.java:370) 
at org.eclipse.jetty.server.AbstractHttpConnection.handleRequest(AbstractHttpConnection.java:489) 
at org.eclipse.jetty.server.AbstractHttpConnection.content(AbstractHttpConnection.java:960) 
at org.eclipse.jetty.server.AbstractHttpConnection$RequestHandler.content(AbstractHttpConnection.java:1021) 
at org.eclipse.jetty.http.HttpParser.parseNext(HttpParser.java:865) 
at org.eclipse.jetty.http.HttpParser.parseAvailable(HttpParser.java:240) 
at org.eclipse.jetty.server.AsyncHttpConnection.handle(AsyncHttpConnection.java:82) 
at org.eclipse.jetty.io.nio.SelectChannelEndPoint.handle(SelectChannelEndPoint.java:668) 
at org.eclipse.jetty.io.nio.SelectChannelEndPoint$1.run(SelectChannelEndPoint.java:52) 
at winstone.BoundedExecutorService$1.run(BoundedExecutorService.java:77) 
at java.util.concurrent.ThreadPoolExecutor.runWorker(Unknown Source) 
at java.util.concurrent.ThreadPoolExecutor$Worker.run(Unknown Source) 
at java.lang.Thread.run(Unknown Source) 
Caused by: java.lang.reflect.InvocationTargetException 
at sun.reflect.NativeConstructorAccessorImpl.newInstance0(Native Method) 
at sun.reflect.NativeConstructorAccessorImpl.newInstance(Unknown Source) 
at sun.reflect.DelegatingConstructorAccessorImpl.newInstance(Unknown Source) 
at java.lang.reflect.Constructor.newInstance(Unknown Source) 
at com.ibm.websphere.management.AdminClientFactory.createAdminClientPrivileged(AdminClientFactory.java:456) 
... 66 more 
Caused by: com.ibm.websphere.management.exception.ConnectorNotAvailableException: [SOAPException: faultCode=SOAP-ENV:Client; msg=Error opening socket: java.net.SocketException: java.security.NoSuchAlgorithmException: Error constructing implementation (algorithm: Default, provider: SunJSSE, class: sun.security.ssl.SSLContextImpl$DefaultSSLContext); targetException=java.lang.IllegalArgumentException: Error opening socket: java.net.SocketException: java.security.NoSuchAlgorithmException: Error constructing implementation (algorithm: Default, provider: SunJSSE, class: sun.security.ssl.SSLContextImpl$DefaultSSLContext)] 
at com.ibm.ws.management.connector.soap.SOAPConnectorClient.reconnect(SOAPConnectorClient.java:422) 
at com.ibm.ws.management.connector.soap.SOAPConnectorClient.<init>(SOAPConnectorClient.java:222) 
... 71 more 
Caused by: [SOAPException: faultCode=SOAP-ENV:Client; msg=Error opening socket: java.net.SocketException: java.security.NoSuchAlgorithmException: Error constructing implementation (algorithm: Default, provider: SunJSSE, class: sun.security.ssl.SSLContextImpl$DefaultSSLContext); targetException=java.lang.IllegalArgumentException: Error opening socket: java.net.SocketException: java.security.NoSuchAlgorithmException: Error constructing implementation (algorithm: Default, provider: SunJSSE, class: sun.security.ssl.SSLContextImpl$DefaultSSLContext)] 
at org.apache.soap.transport.http.SOAPHTTPConnection.send(SOAPHTTPConnection.java:475) 
at org.apache.soap.rpc.Call.WASinvoke(Call.java:451) 
at com.ibm.ws.management.connector.soap.SOAPConnectorClient$4.run(SOAPConnectorClient.java:380) 
at com.ibm.ws.security.util.AccessController.doPrivileged(AccessController.java:118) 
at com.ibm.ws.management.connector.soap.SOAPConnectorClient.reconnect(SOAPConnectorClient.java:365) 
... 72 more 

回答

4

我在使用部署管理器和单个应用程序服务器节点获取在“localhost”安装的WAS7上运行的Websphere Deploy Plugin时遇到了问题。单元默认证书需要进入Dmgr信任库。下面是对我有什么什么工作的总结:

1A - 获取WebSphere单元宽证书

https://localhost.localdomain:9043/ibm/console/login.do?action=secure

View Page Info (Right-Click) > Security > View Certificate 
    Details Tab - Hit (Export...) 
    save to /tmp/was-cell-certificate 

1B - 获取WebSphere单元宽证书。在一个更明确的方式]

WAS Console > Security > SSL Cert & key management 
Related Items : Key Stores and Certificates 
    Clink blue link: Cell Default Keystore 
    Additional Properties : Personal Certificates 
    Checkbox for (default) alias 
    Click Extract 
    Send to /tmp/was-cell-certificate 
    (OK) 

证书导入部署管理器信任库

[[email protected] etc]# cd /opt/IBM/WebSphere/AppServer/profiles/Dmgr01/etc 
[[email protected] etc]# keytool -importcert -keystore DummyClientTrustFile.jks -alias myserver -file /tmp/was-cell-certificate -storepass WebAS 
0

导入服务器证书以DummyClientTrustFile.jks。

3

你有复制以下从您的WebSphere JAR文件: - com.ibm.ws.admin.client_x。 yzjar - com.ibm.ws.orb_x.yzjar?

如果不是,请将插件的WEB-INF/lib文件夹中的文件复制并重新启动Jenkins。

检查WebSphere中的CONNECTOR_PORT是否与您在Jenkins作业中设置的值匹配。

我建议您将DummyClientKeyFile.jks和DummyClientTrustFile.jks从Websphere安装复制到某个目录(例如/ etc/jenkins)中的Jenkins机器。

在商店的文件路径字段(您发布的图片)中配置商店路径(带有/ etc/jenkins文件夹)。

尝试使用Google搜索这些商店的密码,并将其设置为密码字段(您发布的图片有问题)。

尝试部署这些更改后。

适用于我,但部署大型WAR文件(大约40MB)有时会使WebSphere崩溃。

较小的WARs工作正常。