小编Eva*_*tti的帖子

使用JAX-WS在WebLogic中没有模式导入的单个WSDL

如何使用JAX-WS配置WebLogic 10.3.6生成的Web服务,以将对象模式包含在单个WSDL文件声明中,而不是导入声明?

示例代码:

接口

import javax.ejb.Local;

@Local
public interface CustomerBeanLocal {

    public void updateCustomer(Customer customer);

}
Run Code Online (Sandbox Code Playgroud)

会话Bean

import javax.ejb.Stateless;
import javax.jws.WebService;

@Stateless
@WebService
public class CustomerBean implements CustomerBeanLocal {

    @Override
    public void updateCustomer(Customer customer) {
        // Do stuff...
    }   

}
Run Code Online (Sandbox Code Playgroud)

WSDL生成

我们需要在<xsd:import>下面的示例中不使用标记导入模式定义,而是在WSDL中声明,这意味着所有合同信息都在单个WSDL文件中.没有其他文件的依赖.

<!-- ... -->

<types>
  <xsd:schema>
  <xsd:import namespace="http://mybeans/" schemaLocation="http://192.168.10.1:7001/CustomerBean/CustomerBeanService?xsd=1" /> 
  </xsd:schema>
</types>

<!-- ... -->
Run Code Online (Sandbox Code Playgroud)

与WildFly相同的代码包含WSDL中的模式类型,并且不使用导入功能.经过一些研究后,我没有找到一种方法来配置bean /服务器在WebLogic中执行它(没有找到JAX-WS或WebLogic专有功能来执行此操作).

我理解具有导出模式(可重用性等)的好处,但是项目的要求是必须在WSDL内部声明类型,而不是导入.

java wsdl web-services weblogic jax-ws

8
推荐指数
1
解决办法
3014
查看次数

如何将原始XML文本添加到SOAPBody元素

我有一个由应用程序生成的XML文本,我需要在其周围包装一个SOAP信封,然后进行Web服务调用.

以下代码构建了信封,但我不知道如何将现有XML数据添加到SOAPBody元素中.

    String rawXml = "<some-data><some-data-item>1</some-data-item></some-data>";

    // Start the API
    MessageFactory mf = MessageFactory.newInstance();
    SOAPMessage request = mf.createMessage();
    SOAPPart part = request.getSOAPPart();
    SOAPEnvelope env = part.getEnvelope();

    // Get the body. How do I add the raw xml directly into the body?
    SOAPBody body = env.getBody();
Run Code Online (Sandbox Code Playgroud)

我尝试了body.addTextNode()但是它增加了内容,<而其他人则逃脱了.

java xml

8
推荐指数
1
解决办法
1万
查看次数

在WildFly中转储泄漏连接

我试图在WildFly 10.1中转储由MySQL数据源管理的泄漏连接,但我无法找到泄漏文件或泄漏转储.

为什么leaks.txt文件没有生成?而且,我应该在哪里寻找文件?

程序

我在standalone.bat文件中注册了泄漏连接池:

"JAVA_OPTS=%JAVA_OPTS% -Dironjacamar.mcp=org.jboss.jca.core.connectionmanager.pool.mcp.LeakDumperManagedConnectionPool -Dironjacamar.leaklog=leaks.txt"
Run Code Online (Sandbox Code Playgroud)

我可以确认在WildFly中设置属性,因为日志中显示:

JAVA_OPTS: "-Dprogram.name=standalone.bat -Xms64M -Xmx512M -XX:MetaspaceSize=96M -XX:MaxMetaspaceSize=256m -Djava.net.preferIPv4Stack=true -Djboss.modules.system.pkgs=org.jboss.byteman -Dironjacamar.mcp=org.jboss.jca.core.connectionmanager.pool.mcp.LeakDumperManagedConnectionPool -Dironjacamar.leaklog=leaks.txt"
Run Code Online (Sandbox Code Playgroud)

之后,我在模拟应用程序中泄漏了一些连接以生成数据.然后我运行CLI命令刷新所有连接获得肯定响应:

[standalone@localhost:9990 /] /subsystem=datasources/data-source=mysql-ds:flush-all-connection-in-pool
{"outcome" => "success"}
Run Code Online (Sandbox Code Playgroud)

但我无法在leaks.txt任何地方找到该文件.

我正在使用这篇文章以及IronJacamar泄漏文档作为参考.

检漏池使用ironjacamar.mcp系统属性配置,值为

org.jboss.jca.core.connectionmanager.pool.mcp.LeakDumperManagedConnectionPool

此配置适用于IronJacamar使用的所有连接池.

系统属性ironjacamar.leaklog可用于将泄漏转储到与日志记录设置分开的特殊文件中.

一个例子

-Dironjacamar.mcp=org.jboss.jca.core.connectionmanager.pool.mcp.LeakDumperManagedConnectionPool -Dironjacamar.leaklog=leaks.txt

更新

线程969369在JBoss论坛中创建,因此他们也可以帮助它.

Bug报道了JBJCA-1360.

java connection-leaks wildfly wildfly-10 ironjacamar

8
推荐指数
1
解决办法
1380
查看次数

Java 11之后wsimport在哪里

我已经使用 wsimport 和其他 Metro 工具很多年了,但自从 Java 11 中删除了 Java EE 模块后,我找不到这些工具了。

我在哪里可以找到wsimport可执行文件?

java java-metro-framework jax-ws wsimport

8
推荐指数
1
解决办法
1万
查看次数

在EAR内的多个EJB JAR中共享相同的JPA persistence.xml

我们的项目有多个EJB模块,我们希望persistence.xml在它们之间共享一个文件.

我们将persistence.xml文件放在EARs META-INF目录中,但持久性单元在运行时不可用.似乎文件永远不会被读取,因为我们强制使用不正确的类和jar文件,但没有任何反应.

为什么WebLogic不读取persistence.xmlEAR中的文件?

运行代码时出现以下错误,未找到PU(可用持久性单位:[]).

Caused By: java.lang.IllegalArgumentException: No persistence unit named 'em' is available in scope ejb1-module.jar. Available persistence units: []
Run Code Online (Sandbox Code Playgroud)

persistence.xml中

<?xml version="1.0" encoding="UTF-8"?>
<persistence version="1.0" xmlns="http://java.sun.com/xml/ns/persistence">
    <persistence-unit name="system-unit" transaction-type="JTA">
        <jta-data-source>sysmtem-ds</jta-data-source>
        <jar-file>../ejb1-module.jar</jar-file>
        <class>...</class>
        <class>...</class>
        <class>...</class>
    </persistence-unit>
</persistence>
Run Code Online (Sandbox Code Playgroud)

结构(持久性单元放在EAR内)

EAR +
    |- META-INF +
    |       - persistence.xml
    |- ejb1-module.jar
    |- ejb2-module.jar
    |- ejb3-module.jar
Run Code Online (Sandbox Code Playgroud)

我们正在使用WebLogic 10.3.6,它使用JPA 1.0和TopLink/EclipseLink.

java weblogic jpa

7
推荐指数
1
解决办法
2176
查看次数

如何模拟从抽象类继承的受保护子类方法?

如何使用Mockito或PowerMock来模拟由子类实现但从抽象超类继承的受保护方法?

换句话说,我想在模拟"doSomethingElse"时测试"doSomething"方法.

抽象超级

public abstract class TypeA {

    public void doSomething() {     

        // Calls for subclass behavior
        doSomethingElse();      
    }

    protected abstract String doSomethingElse();

}
Run Code Online (Sandbox Code Playgroud)

子类实现

public class TypeB extends TypeA {

    @Override
    protected String doSomethingElse() {
        return "this method needs to be mocked";
    }

}
Run Code Online (Sandbox Code Playgroud)

这里给出的答案是正确的,如果涉及的类在同一个包中,它们将起作用.

但是如果涉及不同的包,则可以选择用户PowerMock.以下示例适用于我.当然可能有其他方法可以做到这一点,这是有效的.

import static org.junit.Assert.assertEquals;
import org.junit.Test;
import org.junit.runner.RunWith;
import org.powermock.api.mockito.PowerMockito;
import org.powermock.core.classloader.annotations.PrepareForTest;
import org.powermock.modules.junit4.PowerMockRunner;

@RunWith(PowerMockRunner.class)
@PrepareForTest({ TypeB.class })
public class TestAbstract {

    @Test
    public void test_UsingPowerMock() throws Exception {
        // Spy …
Run Code Online (Sandbox Code Playgroud)

java junit unit-testing mockito powermock

7
推荐指数
1
解决办法
2万
查看次数

Deno 允许所有权限

在使用 Deno 时,我经常发现自己至少输入了两到三个权限选项:

deno run --allow-net --allow-read --allow-env app.ts
Run Code Online (Sandbox Code Playgroud)

有一种方法可以逃避显式权限。

deno

7
推荐指数
1
解决办法
1100
查看次数

使用EJB Timer在WebSphere中的Bean事务超时

使用JBoss/Wildfly,可以使用@TransactionTimeout专有注释并为特定会话Bean定义事务超时.

使用IBM WebSphere执行此操作的等效方法是什么?

我们正在使用EJB Timer,其中一个Bean将在一个多小时内完成.

Wildfly的示例代码:

import org.jboss.ejb3.annotation.TransactionTimeout;

@Stateless
@TransactionTimeout(value=7200)
public class TimerBean {

}
Run Code Online (Sandbox Code Playgroud)

注意:使用WebSphere 8.5.修改全局事务时间不是一个选项,我们需要为特定的会话Bean或可能的应用程序(EAR)执行此操作.

java websphere timeout java-ee ejb-3.0

6
推荐指数
1
解决办法
3871
查看次数

UserTransaction.SetTransactionTimeout不起作用?

在下面的代码中,我试图强制特定bean设置的事务超时,其事务时间短于方法完成所花费的时间.

超时设置为3秒,方法完成所需的时间为5秒.

我正在使用便携式解决方案,它指的是BMT的组合并使用该setTransactionTimeout方法设置超时.

我希望交易失效给我一个例外,但事实并非如此.

我究竟做错了什么?

@Singleton
@Startup
@TransactionManagement(TransactionManagementType.BEAN)
public class TimerSingleton {

    @Inject
    private UserTransaction ut;

    @PostConstruct
    public void execute() throws Exception {

        ut.begin();
        ut.setTransactionTimeout(3); // Transaction should timeout after 3 seconds

        System.out.println(">>> Executing...");
        Thread.sleep(5000); // Block for 5 seconds

        ut.commit();

        System.out.println(">>> Completed");
    }
}
Run Code Online (Sandbox Code Playgroud)

该方法完全执行:

17:00:12,138 INFO  [stdout] (ServerService Thread Pool -- 85) >>> Executing...

17:00:17,139 INFO  [stdout] (ServerService Thread Pool -- 85) >>> Completed
Run Code Online (Sandbox Code Playgroud)

我正在使用Wildfly 8.2并且我知道@TransactionTimeout注释,但它是专有的,我想知道如何以便携方式控制它.

java jboss timeout java-ee wildfly

6
推荐指数
1
解决办法
3339
查看次数

在 Visual Studio Code 中找不到 Flutter Inspector/Toggle Debug Paint

试图在 VS Code 中找到Toggle Debug PaintFlutter Inspector选项但没有成功。

我在 2.24.0 版上安装了 Flutter 和 Dart 扩展。

在此处输入图片说明

debugging visual-studio-code flutter

6
推荐指数
1
解决办法
3010
查看次数