- android - 多次调用 OnPrimaryClipChangedListener
- android - 无法更新 RecyclerView 中的 TextView 字段
- android.database.CursorIndexOutOfBoundsException : Index 0 requested, 光标大小为 0
- android - 使用 AppCompat 时,我们是否需要明确指定其 UI 组件(Spinner、EditText)颜色
我迫切需要帮助来弄清楚为什么我的应用程序没有创建网络服务。
这是我的网络服务 Java 类:
@WebService
@Component
public class LoginWs extends AbstractWs
{
private static final Logger logger=MiscUtils.getLogger();
@Autowired
private PersonDao personDao = null;
/**
* Returns PersonTransfer on valid login
* @throws NotAuthorisedException if password is incorrect
*/
public PersonTransfer login(String userNameOrEmailAddress, String password) throws NotAuthorisedException
{
Person person=personDao.findByUserNameOrEmailAddress(userNameOrEmailAddress, true);
if (person != null && person.checkPassword(password))
{
PersonTransfer personTransfer = PersonTransfer.getTransfer(person);
personDao.setLastLogin(person.getId(), new GregorianCalendar());
EventLogDao.logEvent(ActionType.READ_DATA.name(), "LoginWs.login()", "personId=" + person.getId());
return(personTransfer);
}
logger.debug("Login failed : u/p="+userNameOrEmailAddress+"/"+password);
throw(new NotAuthorisedException("Invalid Username/Password"));
}
}
调用此服务的代码是:
public static LoginWs getLoginWs()
{
LoginWsService service = new LoginWsService(buildURL("LoginService"));
LoginWs port = service.getLoginWsPort();
CxfClientUtils.configureClientConnection(port);
return(port);
}
异常抛出在:
LoginWsService service = new LoginWsService(buildURL("LoginService"));
这是完整的异常:
Error
javax.xml.ws.WebServiceException: org.apache.cxf.service.factory.ServiceConstructionException: Failed to create service.
at org.apache.cxf.jaxws.ServiceImpl.<init>(ServiceImpl.java:149)
at org.apache.cxf.jaxws.spi.ProviderImpl.createServiceDelegate(ProviderImpl.java:65)
at javax.xml.ws.Service.<init>(Service.java:56)
at org.websr.my_server.ws.LoginWsService.<init>(Unknown Source)
Caused by: javax.wsdl.WSDLException: WSDLException: faultCode=PARSER_ERROR: Problem parsing 'https://192.168.2.184:8443/my_server/ws/LoginService?wsdl'.: javax.net.ssl.SSLHandshakeException: java.security.cert.CertificateException: No subject alternative names present
有人能告诉我为什么它无法创建服务本身。在 LoginWs 方法中,这一行
CxfClientUtils.configureClientConnection(port);
配置 SSL 连接,但我的代码甚至没有到达那里。它正在尝试连接 LoginWsService service = new LoginWsService(buildURL("LoginService"));和失败。
谁能告诉我这是怎么回事?谢谢!
证书.pem:
MIID1DCCArygAwIBAgIJAPAlC2JvlPsZMA0GCSqGSIb3DQEBBQUAMIGSMQswCQYD
VQQGEwJDQTEQMA4GA1UECBMHT250YXJpbzEQMA4GA1UEBxMHVG9yb250bzERMA8G
A1UEChMISW5kaXZpY2ExETAPBgNVBAsTCEluZGl2aWNhMRYwFAYDVQQDEw0xOTIu
MTY4LjIuMTg0MSEwHwYJKoZIhvcNAQkBFhJkaXZ5YUBpbmRpdmljYS5jb20wHhcN
MTIwMTA2MTYxMTQwWhcNMTMwMTA1MTYxMTQwWjCBkjELMAkGA1UEBhMCQ0ExEDAO
BgNVBAgTB09udGFyaW8xEDAOBgNVBAcTB1Rvcm9udG8xETAPBgNVBAoTCEluZGl2
aWNhMREwDwYDVQQLEwhJbmRpdmljYTEWMBQGA1UEAxMNMTkyLjE2OC4yLjE4NDEh
MB8GCSqGSIb3DQEJARYSZGl2eWFAaW5kaXZpY2EuY29tMIIBIjANBgkqhkiG9w0B
AQEFAAOCAQ8AMIIBCgKCAQEAxY8+fsw2pP4ToHN6XFNli4vOGbt+O/ANsr1A8iJh
nCb6cpQ58xF4pvYmETHrAUpv4zpi31SzZvWYI1tMaCEv9IpcX6Kc1B8NB9sLUnhR
gyblF37rZ7eMmSAXXeDS0CTtDEJoHOkGxoUdCN6N+vZjJ5+ZONiiuLqZ4x4HwBFr
ucIlwl2FkMMSxylg90tttSIyUHGz/p2DvNA2goYih4d89c/FLNpqwku+G3/gnL7U
l0OmNuFwJa/qMjy/V1orfpT8egxxh8DMp+fLAv1gjbeoizUs2bHo9kQSbUSp9Cwb
VDCol9jGI14cBuuEpWSANx2gTekN1ktoxztFPCh7H3OK/wIDAQABoyswKTAPBgNV
HREECDAGhwTAqAK4MAkGA1UdEwQCMAAwCwYDVR0PBAQDAgXgMA0GCSqGSIb3DQEB
BQUAA4IBAQALvpU0/5gQedlET2+r2MV0oksTmM2hV677yVsrOnGCOnTcgMZHp5i4
A0B24Ed2iDesX60OAViIocQkOiwYTRnubg5SoWyL1nhmaa/98U6M/re8R/bvq6OK
qrzEO6hHOtunJg1HcZDiJZop7R/pM52yRhRoXU6upZEhbPr6Eh+zfysA0TD6uMs7
9k2VeJo++XUvbG3dkVJ9kYhqfx2vC0HiMI4H2eomzl2ymS+R9Kg/9o29K8oCYjDI
jWPbl2hmf2cQuC4gG8GUDZi7zJkFsBuJpD6XgpIVK9zNhg1e89eP0nABupIFqBOI
iz0C+tRB4z4TezPL6yC7BDMY2nJ/Cg5e
与服务器实际使用的对比:
MIICVTCCAb6gAwIBAgIETr3AxTANBgkqhkiG9w0BAQUFADBvMQswCQYDVQQGEwJD
QTEQMA4GA1UECBMHT250YXJpbzEQMA4GA1UEBxMHVG9yb250bzERMA8GA1UEChMI
SW5kaXZpY2ExETAPBgNVBAsTCEluZGl2aWNhMRYwFAYDVQQDEw0xOTIuMTY4LjIu
MTg0MB4XDTExMTExMjAwNDE0MVoXDTIxMTEwOTAwNDE0MVowbzELMAkGA1UEBhMC
Q0ExEDAOBgNVBAgTB09udGFyaW8xEDAOBgNVBAcTB1Rvcm9udG8xETAPBgNVBAoT
CEluZGl2aWNhMREwDwYDVQQLEwhJbmRpdmljYTEWMBQGA1UEAxMNMTkyLjE2OC4y
LjE4NDCBnzANBgkqhkiG9w0BAQEFAAOBjQAwgYkCgYEAzvnBMOM2YpM4Ch0MkesA
ryqX3YD8O22kJJrpRuOMyqgt6fKEDxkcGjiEZ7qLfWbzv3eX9DE0nVeS4m65Ucr2
LLZN6iZoqP8J+AmkSXKapIQpX7tZM5UuTDy82vUdOiYJELB3NSJc/4nkZkTaN8Uj
h3Ph366kRUP+QWiq2y97KKMCAwEAATANBgkqhkiG9w0BAQUFAAOBgQBFeOQOKq9u
4nq/IUgNpILrhcpiAP5LB49bCXeTCi8Ls51qUCaezceUQKrWM60a6w8FxQF+yopB
PSqGMrUBHnvewkThgZbS12t5vOEoXnWjOwiXhMhRsk5i9YUh1QCYfOFF23aXNfRu
NLL5svksUHm1IzBJJANnL/YdJHRrR0IEQg==
最佳答案
java.security.cert.CertificateException: No subject alternative names present
听起来您正在直接使用 IP 地址(而不是主机名)连接到没有主题备用名称条目的证书。
这当然与这个问题有关:
如果您选择不使用 SAN 条目而是依赖 CN 中的主机名(您也已将其配置为在客户端中解析为正确的 IP 地址),则还必须使用它来指定连接。您的 URL 构建器可能正在构建一个仍然依赖于 IP 地址的 URL。
编辑:(以下评论)
正如我在回答上面链接的其他问题时所说,有(至少)两种方法可以创建带有 Java 主题替代名称的自签名证书:
keytool
您选择了第二个选项(可能更难一些?)。 OpenSSL 能够生成 PKCS#12 文件 (.p12
),默认的 Java 安全提供程序应该能够直接将其用作 keystore (尽管 Java 6 中的 keytool
及以上能够通过 -importkeystore
将它们转换为 JKS 存储)。要直接使用它们,请使用 "PKCS12"
存储类型。
要使用 OpenSSL 使用自签名证书生成的结果构建 PKCS#12 文件(假设文件名为 cert.pem
用于证书和 key.pem
用于私钥:
openssl pkcs12 -export -in cert.pem -inkey key.pem -out store.p12
然后,在 Apache Tomcat 中配置它(并重新启动 Tomcat):
<Connector port="8443" ... scheme="https" secure="true"
keystoreFile="/path/to/store.p12"
keystorePass="..." keystoreType="PKCS12" sslProtocol="TLS" />
提取 PKCS#12 文件中的证书内容:
openssl pkcs12 -in store.p12 -nokeys -clcerts | openssl x509 -text -noout
检查服务器实际使用的证书:
echo "" | openssl s_client -showcerts -connect hostname_or_ip_address:port
关于java - 无法创建服务异常 javax.xml.ws.WebServiceException :,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8759956/
我之前已经使用以下完全相同的代码片段成功注册了一个模型: #register model from azureml.core.model import Model register_model = M
我创建了一个使用 Web 服务来登录、注册、添加和编辑客户的应用程序。当我在部署 Web 服务后运行应用程序时,它会在应用程序的控制台中抛出一个名为 webServiceException 的异常。这
我目前在使用 Websphere 7.0.0.27 和使用 org.springframework.remoting.jaxws.JaxWsPortProxyFactoryBean 的特定 Web 服
我正在尝试使用 jax-ws 进行动态 WS 调用。 但是我无法创建调度程序,代码是: String namespace= "http://wsf.cdyne.com/WeatherWS/Weathe
我迫切需要帮助来弄清楚为什么我的应用程序没有创建网络服务。 这是我的网络服务 Java 类: @WebService @Component public class LoginWs ext
我有一个类似这样的 Controller 方法: public class FooController : Controller { private IApi api; public
我做了一个 SOAP 客户端,我收到了下一个答案: javax.xml.ws.WebServiceException: no response returned. at com.sun.xml
我希望使用 Travelport Universal API 来开发航类预订系统,因此我使用了此 Travelport 开发人员官方链接作为引用: Getting Started for Travel
在我的 ServiceStack 服务中,我抛出了一个具有内部异常的异常。当我在客户端捕获 WebServiceRequest 时,ErrorCode 是内部异常类型名称。 这对我不利,因为它不允许我
我在调用 SOAP Web 服务时收到以下错误 Caused by: javax.xml.ws.WebServiceException: Could not find service named {h
我有已注入(inject)服务的 REST 端点。 @Singleton @Path("/v1/service") public class MyService { @Inject p
我有 3 个使用 netbean 6.9 创建的 Web 服务 当我在工作时在我的电脑上工作时,它运行顺利,没有错误。但是,当我将 netbean 项目复制到家中的计算机时,它运行时出现错误,如下所示
我正在使用 JAX-WS RI 与第三方 Web 服务 (Adyen) 集成。我已经下载了他们的 wsdl 副本,并在我的构建中使用了 jaxws:wsdl2java 来生成 Web 服务实现源代码。
在 java 文件中导入 javax.xml.ws.WebServiceException; 时,出现编译错误 cannot resolve symbol ws. 我已经清理并安装了 POM.xml
我正在使用 JAX-WS RI 与第三方 Web 服务 (Adyen) 集成。我已经下载了他们的 wsdl 副本,并在我的构建中使用了 jaxws:wsdl2java 来生成 Web 服务实现源代码。
我在使用 Apache CXF 生成的类 (wsdl2java) 访问 Web 服务时遇到问题。 一切正常,直到网络服务提供商突然更改了他们防火墙上的规则并关闭了我们。他们说的是他们不再允许 http
我有一个 wsdl 文件,很多 xsd 文件,jxb 绑定(bind)文件。我使用 Apache CXF cxf-codegen-plugin 创建了一个 Web 服务客户端。 Java 类的创建没有
我正在运行 Spring Boot 应用程序 (mvn:spring-boot:run) 并获取下一个堆栈跟踪: \\/ ___)| |_)| | | | | || (_| | ) ) ) )
我正在创建 Jersey Web 服务,我发现自己使用了上述两种异常类型。 WebServiceException 的构造函数允许您传递一个 String 作为原因,而 WebApplicationE
我使用 CXF 开发了网络服务。今天我为 Web 服务添加了简单的用户名 token 安全性。之后,当我尝试部署 Web 服务时出现以下异常 javax.xml.ws.WebServiceExcept
我是一名优秀的程序员,十分优秀!